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

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

debuggerd_fallback: print maps.

Bug: http://b/63400743
Bug: http://b/65590288
Test: killall -ABRT media.codec
Change-Id: I58e47dcd8e99ad7a5945604c27876dd01259e501
parent 18149b67
Loading
Loading
Loading
Loading
+13 −1
Original line number Diff line number Diff line
@@ -800,10 +800,22 @@ void engrave_tombstone_ucontext(int tombstone_fd, uintptr_t abort_msg_address, s
  dump_abort_message(backtrace.get(), &log, abort_msg_address);
  dump_registers(&log, ucontext);

  // TODO: Dump registers from the ucontext.
  if (backtrace->Unwind(0, ucontext)) {
    dump_backtrace_and_stack(backtrace.get(), &log);
  } else {
    ALOGE("Unwind failed: pid = %d, tid = %d", pid, tid);
  }

  // TODO: Make this match the format of dump_all_maps above.
  _LOG(&log, logtype::MAPS, "memory map:\n");
  android::base::unique_fd maps_fd(open("/proc/self/maps", O_RDONLY | O_CLOEXEC));
  if (maps_fd == -1) {
    _LOG(&log, logtype::MAPS, "    failed to open /proc/self/maps: %s", strerror(errno));
  } else {
    char buf[256];
    ssize_t rc;
    while ((rc = TEMP_FAILURE_RETRY(read(maps_fd.get(), buf, sizeof(buf)))) > 0) {
      android::base::WriteFully(tombstone_fd, buf, rc);
    }
  }
}