debuggerd: kill crashing processes with the signal they died with.

Bug: http://b/27675306
Change-Id: I951c5d7e54c35d88c65c5dc856e0b9d5a93d47b2
diff --git a/debuggerd/debuggerd.cpp b/debuggerd/debuggerd.cpp
index b191954..eabbb9a 100644
--- a/debuggerd/debuggerd.cpp
+++ b/debuggerd/debuggerd.cpp
@@ -374,7 +374,8 @@
 }
 
 static bool perform_dump(const debugger_request_t& request, int fd, int tombstone_fd,
-                         BacktraceMap* backtrace_map, const std::set<pid_t>& siblings) {
+                         BacktraceMap* backtrace_map, const std::set<pid_t>& siblings,
+                         int* crash_signal) {
   if (TEMP_FAILURE_RETRY(write(fd, "\0", 1)) != 1) {
     ALOGE("debuggerd: failed to respond to client: %s\n", strerror(errno));
     return false;
@@ -420,6 +421,7 @@
         // the non-signaled threads stop moving.  Without
         // this we get a lot of "ptrace detach failed:
         // No such process".
+        *crash_signal = signal;
         kill(request.pid, SIGSTOP);
         engrave_tombstone(tombstone_fd, backtrace_map, request.pid, request.tid, siblings, signal,
                           request.original_si_code, request.abort_msg_address);
@@ -632,7 +634,8 @@
     _exit(1);
   }
 
-  succeeded = perform_dump(request, fd, tombstone_fd, backtrace_map.get(), siblings);
+  int crash_signal = SIGKILL;
+  succeeded = perform_dump(request, fd, tombstone_fd, backtrace_map.get(), siblings, &crash_signal);
   if (succeeded) {
     if (request.action == DEBUGGER_ACTION_DUMP_TOMBSTONE) {
       if (!tombstone_path.empty()) {
@@ -659,9 +662,7 @@
 
   // Send the signal back to the process if it crashed and we're not waiting for gdb.
   if (!attach_gdb && request.action == DEBUGGER_ACTION_CRASH) {
-    // TODO: Send the same signal that triggered the dump, so that shell says "Segmentation fault"
-    //       instead of "Killed"?
-    if (!send_signal(SIGKILL)) {
+    if (!send_signal(crash_signal)) {
       ALOGE("debuggerd: failed to kill process %d: %s", request.pid, strerror(errno));
     }
   }