Merge "debuggerd: recognize jumps to non-executable memory." into main am: 354bd064a1 am: 5bba23b6e5
Original change: https://android-review.googlesource.com/c/platform/system/core/+/3264031
Change-Id: Ib0d42af7d8d8c3ccbc78d54a34fdb75ae827fcb7
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/debuggerd/libdebuggerd/tombstone_proto.cpp b/debuggerd/libdebuggerd/tombstone_proto.cpp
index b6fc4e2..ed4fd53 100644
--- a/debuggerd/libdebuggerd/tombstone_proto.cpp
+++ b/debuggerd/libdebuggerd/tombstone_proto.cpp
@@ -356,6 +356,9 @@
auto map_info = maps->Find(fault_addr);
if (map_info != nullptr && map_info->flags() == PROT_EXEC) {
cause = "execute-only (no-read) memory access error; likely due to data in .text.";
+ } else if (fault_addr == target_thread.registers->pc() &&
+ map_info != nullptr && (map_info->flags() & PROT_EXEC) == 0) {
+ cause = "trying to execute non-executable memory.";
} else {
cause = get_stack_overflow_cause(fault_addr, target_thread.registers->sp(), maps);
}