diff --git a/debuggerd/libdebuggerd/tombstone_proto.cpp b/debuggerd/libdebuggerd/tombstone_proto.cpp index d014fa38b..0098209b0 100644 --- a/debuggerd/libdebuggerd/tombstone_proto.cpp +++ b/debuggerd/libdebuggerd/tombstone_proto.cpp @@ -96,6 +96,11 @@ static Architecture get_arch() { static std::optional get_stack_overflow_cause(uint64_t fault_addr, uint64_t sp, unwindstack::Maps* maps) { + // Under stack MTE the stack pointer and/or the fault address can be tagged. + // In order to calculate deltas between them, strip off the tags off both + // addresses. + fault_addr = untag_address(fault_addr); + sp = untag_address(sp); static constexpr uint64_t kMaxDifferenceBytes = 256; uint64_t difference; if (sp >= fault_addr) { diff --git a/debuggerd/seccomp_policy/crash_dump.arm64.policy b/debuggerd/seccomp_policy/crash_dump.arm64.policy index adf87380e..c5d10d66b 100644 --- a/debuggerd/seccomp_policy/crash_dump.arm64.policy +++ b/debuggerd/seccomp_policy/crash_dump.arm64.policy @@ -28,11 +28,11 @@ rt_sigaction: 1 rt_tgsigqueueinfo: 1 prctl: arg0 == PR_GET_NO_NEW_PRIVS || arg0 == 0x53564d41 || arg0 == PR_PAC_RESET_KEYS || arg0 == 56 || arg0 == 61 madvise: 1 -mprotect: arg2 in 0x1|0x2 +mprotect: arg2 in 0x1|0x2|0x20 munmap: 1 getuid: 1 fstat: 1 -mmap: arg2 in 0x1|0x2 +mmap: arg2 in 0x1|0x2|0x20 geteuid: 1 getgid: 1 getegid: 1