diff options
author | Josh Gao <jmgao@google.com> | 2016-03-17 23:05:54 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2016-03-17 23:05:55 +0000 |
commit | 6a7ddbd37dbcf764d50041670fb6065f74c00391 (patch) | |
tree | b9f514736e01e2c594e68fc87f389f334622e80f /debuggerd/debuggerd.cpp | |
parent | a86d846ab74f6527bf9666e7d5af3610d9b7487a (diff) | |
parent | 676a756b7b6e4028633dac85110767a3cf6785a7 (diff) |
Merge "debuggerd: don't apply timeout when wait_for_gdb is on."
Diffstat (limited to 'debuggerd/debuggerd.cpp')
-rw-r--r-- | debuggerd/debuggerd.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/debuggerd/debuggerd.cpp b/debuggerd/debuggerd.cpp index fff28802a..97f40963c 100644 --- a/debuggerd/debuggerd.cpp +++ b/debuggerd/debuggerd.cpp @@ -248,8 +248,8 @@ static int read_request(int fd, debugger_request_t* out_request) { return 0; } -static bool should_attach_gdb(debugger_request_t* request) { - if (request->action == DEBUGGER_ACTION_CRASH) { +static bool should_attach_gdb(const debugger_request_t& request) { + if (request.action == DEBUGGER_ACTION_CRASH) { return property_get_bool("debug.debuggerd.wait_for_gdb", false); } return false; @@ -487,7 +487,7 @@ static void worker_process(int fd, debugger_request_t& request) { // Don't attach to the sibling threads if we want to attach gdb. // Supposedly, it makes the process less reliable. - bool attach_gdb = should_attach_gdb(&request); + bool attach_gdb = should_attach_gdb(request); if (attach_gdb) { // Open all of the input devices we need to listen for VOLUMEDOWN before dropping privileges. if (init_getevent() != 0) { @@ -563,6 +563,10 @@ static void worker_process(int fd, debugger_request_t& request) { static void monitor_worker_process(int child_pid, const debugger_request_t& request) { struct timespec timeout = {.tv_sec = 10, .tv_nsec = 0 }; + if (should_attach_gdb(request)) { + // If wait_for_gdb is enabled, set the timeout to something large. + timeout.tv_sec = INT_MAX; + } sigset_t signal_set; sigemptyset(&signal_set); |