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

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

Merge "Update for SetProcessMemory removal." am: ff331cf3 am: 1fba9340 am:...

Merge "Update for SetProcessMemory removal." am: ff331cf3 am: 1fba9340 am: 13733af5 am: fb945ffb

Original change: https://android-review.googlesource.com/c/platform/system/core/+/2067696



Change-Id: I6816ff1f947e7fbf08458689902a8c37130aeb7b
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 3cf4f6fd fb945ffb
Loading
Loading
Loading
Loading
+2 −3
Original line number Original line Diff line number Diff line
@@ -73,14 +73,13 @@ static void debuggerd_fallback_trace(int output_fd, ucontext_t* ucontext) {
    thread.registers.reset(
    thread.registers.reset(
        unwindstack::Regs::CreateFromUcontext(unwindstack::Regs::CurrentArch(), ucontext));
        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
    // Do not use the thread cache here because it will call pthread_key_create
    // which doesn't work in linker code. See b/189803009.
    // which doesn't work in linker code. See b/189803009.
    // Use a normal cached object because the process is stopped, and there
    // Use a normal cached object because the process is stopped, and there
    // is no chance of data changing between reads.
    // is no chance of data changing between reads.
    auto process_memory = unwindstack::Memory::CreateProcessMemoryCached(getpid());
    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);
    dump_backtrace_thread(output_fd, &unwinder, thread);
  }
  }
  __linker_disable_fallback_allocator();
  __linker_disable_fallback_allocator();
+2 −2
Original line number Original line Diff line number Diff line
@@ -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 =
  auto process_memory =
      unwindstack::Memory::CreateProcessMemoryCached(getpid());
      unwindstack::Memory::CreateProcessMemoryCached(getpid());
  unwinder.SetProcessMemory(process_memory);
  unwindstack::UnwinderFromPid unwinder(kMaxFrames, pid, unwindstack::Regs::CurrentArch(), nullptr,
                                        process_memory);
  if (!unwinder.Init()) {
  if (!unwinder.Init()) {
    async_safe_format_log(ANDROID_LOG_ERROR, LOG_TAG, "failed to init unwinder object");
    async_safe_format_log(ANDROID_LOG_ERROR, LOG_TAG, "failed to init unwinder object");
    return;
    return;