* commit '343e49e3343817ec3adf1145039cb4e5d143674a': Teach debuggerd the name of SIGTRAP.
This commit is contained in:
commit
f6aa4863a2
2 changed files with 13 additions and 14 deletions
|
|
@ -366,38 +366,36 @@ static void handle_request(int fd) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static int do_server() {
|
static int do_server() {
|
||||||
int s;
|
// debuggerd crashes can't be reported to debuggerd.
|
||||||
struct sigaction act;
|
// Reset all of the crash handlers.
|
||||||
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(SIGABRT, SIG_DFL);
|
||||||
signal(SIGBUS, SIG_DFL);
|
signal(SIGBUS, SIG_DFL);
|
||||||
signal(SIGFPE, SIG_DFL);
|
signal(SIGFPE, SIG_DFL);
|
||||||
|
signal(SIGILL, SIG_DFL);
|
||||||
signal(SIGSEGV, SIG_DFL);
|
signal(SIGSEGV, SIG_DFL);
|
||||||
#ifdef SIGSTKFLT
|
#ifdef SIGSTKFLT
|
||||||
signal(SIGSTKFLT, SIG_DFL);
|
signal(SIGSTKFLT, SIG_DFL);
|
||||||
#endif
|
#endif
|
||||||
|
signal(SIGTRAP, SIG_DFL);
|
||||||
|
|
||||||
// Ignore failed writes to closed sockets
|
// Ignore failed writes to closed sockets
|
||||||
signal(SIGPIPE, SIG_IGN);
|
signal(SIGPIPE, SIG_IGN);
|
||||||
|
|
||||||
logsocket = socket_local_client("logd", ANDROID_SOCKET_NAMESPACE_ABSTRACT, SOCK_DGRAM);
|
int logsocket = socket_local_client("logd", ANDROID_SOCKET_NAMESPACE_ABSTRACT, SOCK_DGRAM);
|
||||||
if (logsocket < 0) {
|
if (logsocket < 0) {
|
||||||
logsocket = -1;
|
logsocket = -1;
|
||||||
} else {
|
} else {
|
||||||
fcntl(logsocket, F_SETFD, FD_CLOEXEC);
|
fcntl(logsocket, F_SETFD, FD_CLOEXEC);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct sigaction act;
|
||||||
act.sa_handler = SIG_DFL;
|
act.sa_handler = SIG_DFL;
|
||||||
sigemptyset(&act.sa_mask);
|
sigemptyset(&act.sa_mask);
|
||||||
sigaddset(&act.sa_mask,SIGCHLD);
|
sigaddset(&act.sa_mask,SIGCHLD);
|
||||||
act.sa_flags = SA_NOCLDWAIT;
|
act.sa_flags = SA_NOCLDWAIT;
|
||||||
sigaction(SIGCHLD, &act, 0);
|
sigaction(SIGCHLD, &act, 0);
|
||||||
|
|
||||||
s = socket_local_server(DEBUGGER_SOCKET_NAME, ANDROID_SOCKET_NAMESPACE_ABSTRACT, SOCK_STREAM);
|
int s = socket_local_server(DEBUGGER_SOCKET_NAME, ANDROID_SOCKET_NAMESPACE_ABSTRACT, SOCK_STREAM);
|
||||||
if (s < 0)
|
if (s < 0)
|
||||||
return 1;
|
return 1;
|
||||||
fcntl(s, F_SETFD, FD_CLOEXEC);
|
fcntl(s, F_SETFD, FD_CLOEXEC);
|
||||||
|
|
|
||||||
|
|
@ -58,10 +58,10 @@
|
||||||
|
|
||||||
static bool signal_has_si_addr(int sig) {
|
static bool signal_has_si_addr(int sig) {
|
||||||
switch (sig) {
|
switch (sig) {
|
||||||
case SIGILL:
|
|
||||||
case SIGFPE:
|
|
||||||
case SIGSEGV:
|
|
||||||
case SIGBUS:
|
case SIGBUS:
|
||||||
|
case SIGFPE:
|
||||||
|
case SIGILL:
|
||||||
|
case SIGSEGV:
|
||||||
return true;
|
return true;
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
|
|
@ -70,16 +70,17 @@ static bool signal_has_si_addr(int sig) {
|
||||||
|
|
||||||
static const char* get_signame(int sig) {
|
static const char* get_signame(int sig) {
|
||||||
switch(sig) {
|
switch(sig) {
|
||||||
case SIGILL: return "SIGILL";
|
|
||||||
case SIGABRT: return "SIGABRT";
|
case SIGABRT: return "SIGABRT";
|
||||||
case SIGBUS: return "SIGBUS";
|
case SIGBUS: return "SIGBUS";
|
||||||
case SIGFPE: return "SIGFPE";
|
case SIGFPE: return "SIGFPE";
|
||||||
case SIGSEGV: return "SIGSEGV";
|
case SIGILL: return "SIGILL";
|
||||||
case SIGPIPE: return "SIGPIPE";
|
case SIGPIPE: return "SIGPIPE";
|
||||||
|
case SIGSEGV: return "SIGSEGV";
|
||||||
#if defined(SIGSTKFLT)
|
#if defined(SIGSTKFLT)
|
||||||
case SIGSTKFLT: return "SIGSTKFLT";
|
case SIGSTKFLT: return "SIGSTKFLT";
|
||||||
#endif
|
#endif
|
||||||
case SIGSTOP: return "SIGSTOP";
|
case SIGSTOP: return "SIGSTOP";
|
||||||
|
case SIGTRAP: return "SIGTRAP";
|
||||||
default: return "?";
|
default: return "?";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue