OSDN Git Service

auto import from //branches/cupcake/...@132569
authorThe Android Open Source Project <initial-contribution@android.com>
Fri, 20 Feb 2009 15:38:28 +0000 (07:38 -0800)
committerThe Android Open Source Project <initial-contribution@android.com>
Fri, 20 Feb 2009 15:38:28 +0000 (07:38 -0800)
libc/unistd/abort.c

index a02beba..d4e40e1 100644 (file)
 #include "thread_private.h"
 #include "atexit.h"
 
+/* temporary, for bug hunting */
+#include "logd.h"
+#define debug_log(format, ...)  \
+    __libc_android_log_print(ANDROID_LOG_DEBUG, "libc-abort", (format), ##__VA_ARGS__ )
+
 void
 abort(void)
 {
@@ -48,6 +53,9 @@ abort(void)
         * any errors -- X311J doesn't allow abort to return anyway.
         */
        sigdelset(&mask, SIGABRT);
+    /* temporary, so deliberate seg fault can be caught by debuggerd */
+       sigdelset(&mask, SIGSEGV);
+    /* -- */
        (void)sigprocmask(SIG_SETMASK, &mask, (sigset_t *)NULL);
 
        /*
@@ -64,6 +72,13 @@ 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);
 
        /*