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

Commit 24464185 authored by Josh Gao's avatar Josh Gao
Browse files

debuggerd: always send SIGCONT after detaching.

Bug: http://b/27330889
Change-Id: I104248af1cde03dbdbacc03c87fe7e2dffd6c037
parent 6a7ddbd3
Loading
Loading
Loading
Loading
+11 −12
Original line number Diff line number Diff line
@@ -586,9 +586,7 @@ static void monitor_worker_process(int child_pid, const debugger_request_t& requ
      kill_worker = true;
      kill_target = true;
      kill_self = true;
    }

    if (WIFSIGNALED(status)) {
    } else if (WIFSIGNALED(status)) {
      ALOGE("debuggerd: worker process %d terminated due to signal %d", child_pid, WTERMSIG(status));
      kill_worker = false;
      kill_target = true;
@@ -612,15 +610,16 @@ static void monitor_worker_process(int child_pid, const debugger_request_t& requ
    }
  }

  if (kill_target) {
    // Resume or kill the target, depending on what the initial request was.
    if (request.action == DEBUGGER_ACTION_CRASH) {
  int exit_signal = SIGCONT;
  if (kill_target && request.action == DEBUGGER_ACTION_CRASH) {
    ALOGE("debuggerd: killing target %d", request.pid);
      kill(request.pid, SIGKILL);
    exit_signal = SIGKILL;
  } else {
      ALOGE("debuggerd: resuming target %d", request.pid);
      kill(request.pid, SIGCONT);
    ALOGW("debuggerd: resuming target %d", request.pid);
  }

  if (kill(request.pid, exit_signal) != 0) {
    ALOGE("debuggerd: failed to send signal %d to target: %s", exit_signal, strerror(errno));
  }

  if (kill_self) {