-
Notifications
You must be signed in to change notification settings - Fork 561
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Dyninst: New package #7473
base: master
Are you sure you want to change the base?
Dyninst: New package #7473
Conversation
While the build works fine, the checks afterwards crash with
( |
It's the dlopening that's failing, maybe the init function of the library does something nasty? |
@giordano I can successfully I also looked at the libraries' initialization routines but that's a bit hopeless because these are large C++ libraries and I don't know which objects would be created or which functions would be called. |
To leave some breadcrumbs, the init function of the shared library is marked with |
This is what we do during audit to dlopen the library: https://github.com/JuliaPackaging/BinaryBuilder.jl/blob/54284653349b50eef5ad50b0c579659c38ef99e6/src/Auditor.jl#L150-L159. Not really much ( |
I saw the call in |
There are different
The first is used by Dyninst, the second by Boost. That doesn't look healthy. |
While the
|
@giordano I disabled the auditor. I think (see above) that the generated shared libraries are actually working fine. |
I'm not incredibly happy about disabling the auditor, it does more stuff than just dlopening the library, like ensure the runpath is set correctly, the soname is set, etc... |
I'm still convinced they do something dodgy in their init function: #7473 (comment). If we have problems during audit here, we can have problems elsewhere, if dlopen is failing we should fix it, rather ignoring it. |
The current options actually only set Apart from setting a few global variables int DYNINSTinitializeTrapHandler(void)
{
int result;
struct sigaction new_handler;
int signo = SIGTRAP;
// If environment variable DYNINST_SIGNAL_TRAMPOLINE_SIGILL is set,
// we use SIGILL as the signal for signal trampoline.
// The mutatee has to be generated with DYNINST_SIGNAL_TRAMPOLINE_SIGILL set
// so that the mutator will generates illegal instructions as trampolines.
if (getenv("DYNINST_SIGNAL_TRAMPOLINE_SIGILL")) {
signo = SIGILL;
}
new_handler.sa_sigaction = dyninstTrapHandler;
//new_handler.sa_restorer = NULL; obsolete
sigemptyset(&new_handler.sa_mask);
new_handler.sa_flags = SA_SIGINFO | SA_NODEFER;
result = sigaction(signo, &new_handler, NULL);
return (result == 0) ? 1 /*Success*/ : 0 /*Fail*/ ;
} Maybe Julia doesn't like |
No description provided.