From c6d428343c3d40db70b7a8056a2b0bda60d7dd1e Mon Sep 17 00:00:00 2001 From: Christopher Ferris Date: Tue, 19 Apr 2022 21:38:59 -0700 Subject: [PATCH] Update for SetProcessMemory removal. Bug: 120606663 Test: All unit tests pass. Change-Id: Icf8a3ceb75b8962f8f215501c2bac631b40a1527 --- debuggerd/handler/debuggerd_fallback.cpp | 5 ++--- debuggerd/libdebuggerd/tombstone.cpp | 4 ++-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/debuggerd/handler/debuggerd_fallback.cpp b/debuggerd/handler/debuggerd_fallback.cpp index 4c1f9eb47..c8b25ae2b 100644 --- a/debuggerd/handler/debuggerd_fallback.cpp +++ b/debuggerd/handler/debuggerd_fallback.cpp @@ -73,14 +73,13 @@ static void debuggerd_fallback_trace(int output_fd, ucontext_t* ucontext) { thread.registers.reset( unwindstack::Regs::CreateFromUcontext(unwindstack::Regs::CurrentArch(), ucontext)); - // TODO: Create this once and store it in a global? - unwindstack::UnwinderFromPid unwinder(kMaxFrames, getpid()); // Do not use the thread cache here because it will call pthread_key_create // which doesn't work in linker code. See b/189803009. // Use a normal cached object because the process is stopped, and there // is no chance of data changing between reads. auto process_memory = unwindstack::Memory::CreateProcessMemoryCached(getpid()); - unwinder.SetProcessMemory(process_memory); + // TODO: Create this once and store it in a global? + unwindstack::UnwinderFromPid unwinder(kMaxFrames, getpid(), process_memory); dump_backtrace_thread(output_fd, &unwinder, thread); } __linker_disable_fallback_allocator(); diff --git a/debuggerd/libdebuggerd/tombstone.cpp b/debuggerd/libdebuggerd/tombstone.cpp index 14caaf6d6..eda718206 100644 --- a/debuggerd/libdebuggerd/tombstone.cpp +++ b/debuggerd/libdebuggerd/tombstone.cpp @@ -101,10 +101,10 @@ void engrave_tombstone_ucontext(int tombstone_fd, int proto_fd, uint64_t abort_m } } - unwindstack::UnwinderFromPid unwinder(kMaxFrames, pid, unwindstack::Regs::CurrentArch()); auto process_memory = unwindstack::Memory::CreateProcessMemoryCached(getpid()); - unwinder.SetProcessMemory(process_memory); + unwindstack::UnwinderFromPid unwinder(kMaxFrames, pid, unwindstack::Regs::CurrentArch(), nullptr, + process_memory); if (!unwinder.Init()) { async_safe_format_log(ANDROID_LOG_ERROR, LOG_TAG, "failed to init unwinder object"); return;