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

Commit f1c2a0c2 authored by Josh Gao's avatar Josh Gao Committed by android-build-merger
Browse files

Merge "libdebuggerd: add timestamp to tombstones."

am: ac64da16

Change-Id: Ib585e2873fc10999857286d8e9003cb1000e6be1
parents 77a2f60a ac64da16
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@
 */

#include <stdlib.h>
#include <time.h>

#include <memory>
#include <string>
@@ -494,3 +495,10 @@ TEST_F(TombstoneTest, dump_header_info) {
  expected += android::base::StringPrintf("ABI: '%s'\n", ABI_STRING);
  ASSERT_STREQ(expected.c_str(), amfd_data_.c_str());
}

TEST_F(TombstoneTest, dump_timestamp) {
  setenv("TZ", "UTC", 1);
  tzset();
  dump_timestamp(&log_, 0);
  ASSERT_STREQ("Timestamp: 1970-01-01 00:00:00+0000\n", amfd_data_.c_str());
}
+10 −0
Original line number Diff line number Diff line
@@ -78,6 +78,15 @@ static void dump_header_info(log_t* log) {
  _LOG(log, logtype::HEADER, "ABI: '%s'\n", ABI_STRING);
}

static void dump_timestamp(log_t* log, time_t time) {
  struct tm tm;
  localtime_r(&time, &tm);

  char buf[strlen("1970-01-01 00:00:00+0830") + 1];
  strftime(buf, sizeof(buf), "%F %T%z", &tm);
  _LOG(log, logtype::HEADER, "Timestamp: %s\n", buf);
}

static void dump_probable_cause(log_t* log, const siginfo_t* si, BacktraceMap* map) {
  std::string cause;
  if (si->si_signo == SIGSEGV && si->si_code == SEGV_MAPERR) {
@@ -654,6 +663,7 @@ void engrave_tombstone(unique_fd output_fd, BacktraceMap* map, Memory* process_m

  _LOG(&log, logtype::HEADER, "*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***\n");
  dump_header_info(&log);
  dump_timestamp(&log, time(nullptr));

  auto it = threads.find(target_thread);
  if (it == threads.end()) {