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

Commit 1b5eb8d6 authored by Christopher Ferris's avatar Christopher Ferris Committed by Automerger Merge Worker
Browse files

Fix check for thread unwind. am: 2d5d46ca

parents 096e8598 2d5d46ca
Loading
Loading
Loading
Loading
+23 −0
Original line number Diff line number Diff line
@@ -1463,6 +1463,29 @@ TEST_F(CrasherTest, seccomp_tombstone) {
  ASSERT_BACKTRACE_FRAME(result, "bar");
}

TEST_F(CrasherTest, seccomp_tombstone_thread_abort) {
  int intercept_result;
  unique_fd output_fd;

  static const auto dump_type = kDebuggerdTombstone;
  StartProcess(
      []() {
        std::thread abort_thread([] { abort(); });
        abort_thread.join();
      },
      &seccomp_fork);

  StartIntercept(&output_fd, dump_type);
  FinishCrasher();
  AssertDeath(SIGABRT);
  FinishIntercept(&intercept_result);
  ASSERT_EQ(1, intercept_result) << "tombstoned reported failure";

  std::string result;
  ConsumeFd(std::move(output_fd), &result);
  ASSERT_BACKTRACE_FRAME(result, "abort");
}

TEST_F(CrasherTest, seccomp_backtrace) {
  int intercept_result;
  unique_fd output_fd;
+1 −1
Original line number Diff line number Diff line
@@ -455,7 +455,7 @@ static void dump_thread(Tombstone* tombstone, unwindstack::Unwinder* unwinder,
  thread.set_tagged_addr_ctrl(thread_info.tagged_addr_ctrl);
  thread.set_pac_enabled_keys(thread_info.pac_enabled_keys);

  if (thread_info.pid == getpid() && thread_info.pid != thread_info.tid) {
  if (thread_info.registers == nullptr) {
    // Fallback path for non-main thread, doing unwind from running process.
    unwindstack::ThreadUnwinder thread_unwinder(kMaxFrames, unwinder->GetMaps());
    if (!thread_unwinder.Init()) {