On 09/10/2016 09:08 PM, Alan Coopersmith wrote: > If RTLD_DI_SETSIGNAL is set to let us turn runtime linker/loader errors > into catchable signals, then we should only show the errors when catching > that signal, instead of tossing out red herrings to distract people with > unrelated crashes long after their last failed symbol lookup (especially > when using drivers built to support multiple API's by checking which > symbols are available before calling them).
Nice. Presumably you can also SIGQUIT the server with Ctrl-\ in the terminal it was run on, but it doesn't seem worth trying to suppress the dlsym error in that case too. Reviewed-by: Aaron Plattner <aplatt...@nvidia.com> > Signed-off-by: Alan Coopersmith <alan.coopersm...@oracle.com> > --- > os/osinit.c | 12 ++++++++---- > 1 file changed, 8 insertions(+), 4 deletions(-) > > diff --git a/os/osinit.c b/os/osinit.c > index 47061bb..5b2f6b5 100644 > --- a/os/osinit.c > +++ b/os/osinit.c > @@ -114,10 +114,14 @@ OsSigHandler(int signo) > #endif > { > #ifdef RTLD_DI_SETSIGNAL > - const char *dlerr = dlerror(); > +# define SIGNAL_FOR_RTLD_ERROR SIGQUIT > + if (signo == SIGNAL_FOR_RTLD_ERROR) { > + const char *dlerr = dlerror(); > > - if (dlerr) { > - LogMessageVerbSigSafe(X_ERROR, 1, "Dynamic loader error: %s\n", > dlerr); > + if (dlerr) { > + LogMessageVerbSigSafe(X_ERROR, 1, > + "Dynamic loader error: %s\n", dlerr); > + } > } > #endif /* RTLD_DI_SETSIGNAL */ > > @@ -217,7 +221,7 @@ OsInit(void) > * after ourselves. > */ > { > - int failure_signal = SIGQUIT; > + int failure_signal = SIGNAL_FOR_RTLD_ERROR; > > dlinfo(RTLD_SELF, RTLD_DI_SETSIGNAL, &failure_signal); > } > _______________________________________________ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: https://lists.x.org/mailman/listinfo/xorg-devel