debuggerd can't handle debuggerd crashes

When a process receives a fatal signal, it connects to debuggerd
and initiates a conversation over a socket.  When the crashing
process is debuggerd, the conversation stalls forever, and you
stop getting native crash details.

This resets the signal handlers to SIG_DFL, so that debuggerd
simply crashes and gets restarted.

Bug 5035703

Change-Id: Ie081d710d046f701bca7e7d8ea3e1d24766d9f61
diff --git a/debuggerd/debuggerd.c b/debuggerd/debuggerd.c
index 685f147..892bc99 100644
--- a/debuggerd/debuggerd.c
+++ b/debuggerd/debuggerd.c
@@ -695,6 +695,18 @@
     struct sigaction act;
     int logsocket = -1;
 
+    /*
+     * debuggerd crashes can't be reported to debuggerd.  Reset all of the
+     * crash handlers.
+     */
+    signal(SIGILL, SIG_DFL);
+    signal(SIGABRT, SIG_DFL);
+    signal(SIGBUS, SIG_DFL);
+    signal(SIGFPE, SIG_DFL);
+    signal(SIGSEGV, SIG_DFL);
+    signal(SIGSTKFLT, SIG_DFL);
+    signal(SIGPIPE, SIG_DFL);
+
     logsocket = socket_local_client("logd",
             ANDROID_SOCKET_NAMESPACE_ABSTRACT, SOCK_DGRAM);
     if(logsocket < 0) {