xserver: Branch 'master'

Adam Jackson ajax at kemper.freedesktop.org
Tue Sep 13 20:19:19 UTC 2016


 os/osinit.c |   12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

New commits:
commit 75c1d04650f63464263c159d2e95364482be724f
Author: Alan Coopersmith <alan.coopersmith at oracle.com>
Date:   Sat Sep 10 21:08:01 2016 -0700

    os: OsSigHandler should not show rtld errors for unrelated signals
    
    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).
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith at oracle.com>
    Reviewed-by: Keith Packard <keithp at keithp.com>
    Reviewed-by: Aaron Plattner <aplattner at nvidia.com>

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);
         }


More information about the xorg-commit mailing list