OSDN Git Service

fix [2170898] abort() doesn't print a stack tarce
authorMathias Agopian <mathias@google.com>
Tue, 6 Oct 2009 22:35:22 +0000 (15:35 -0700)
committerMathias Agopian <mathias@google.com>
Tue, 6 Oct 2009 23:02:12 +0000 (16:02 -0700)
the issue here is that abort() can be called from anywhere, in particular
from malloc or free. When we try to use the debug_log functions, these
can end up calling into some code (like malloc/free) that called abort()
in the first place and end up in an infinite recursion loop.

libc/unistd/abort.c

index d4e40e1..f323941 100644 (file)
@@ -73,10 +73,8 @@ abort(void)
        }
 
     /* temporary, for bug hunting */
-    debug_log("abort() called in pid %d\n", getpid());
     /* seg fault seems to produce better debuggerd results than SIGABRT */
     *((char*)0xdeadbaad) = 39;
-    debug_log("somehow we're not dead?\n");
     /* -- */
 
        (void)kill(getpid(), SIGABRT);