Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 44e12ece authored by Andy McFadden's avatar Andy McFadden
Browse files

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
parent c349636c
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -695,6 +695,18 @@ int main()
    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) {