From 300fd6fdbc19bbb64a13b0a9d0ea7d284a831e33 Mon Sep 17 00:00:00 2001 From: Christopher Tate Date: Thu, 18 Apr 2013 14:05:52 -0700 Subject: [PATCH] Fix regression: log mem maps around native fault address Restore the logging of the mem maps around the fault address along with the rest of the faulting thread's information. (It was still being written to the tombstone file, but the logging got dropped on the floor in the refactoring around AM report integration). Bug 8654694 Change-Id: Id8851fa765dfe6b6ce41ccfc39e85eaac0acc629 --- debuggerd/tombstone.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/debuggerd/tombstone.c b/debuggerd/tombstone.c index 714612053..77f6ef1c0 100644 --- a/debuggerd/tombstone.c +++ b/debuggerd/tombstone.c @@ -357,23 +357,24 @@ static void dump_backtrace_and_stack(const ptrace_context_t* context, log_t* log } } -static void dump_map(log_t* log, map_info_t* m, const char* what) { +static void dump_map(log_t* log, map_info_t* m, const char* what, int scopeFlags) { if (m != NULL) { - _LOG(log, SCOPE_SENSITIVE, " %08x-%08x %c%c%c %s\n", m->start, m->end, + _LOG(log, scopeFlags, " %08x-%08x %c%c%c %s\n", m->start, m->end, m->is_readable ? 'r' : '-', m->is_writable ? 'w' : '-', m->is_executable ? 'x' : '-', m->name); } else { - _LOG(log, SCOPE_SENSITIVE, " (no %s)\n", what); + _LOG(log, scopeFlags, " (no %s)\n", what); } } -static void dump_nearby_maps(const ptrace_context_t* context, log_t* log, pid_t tid) { +static void dump_nearby_maps(const ptrace_context_t* context, log_t* log, pid_t tid, bool at_fault) { + int scopeFlags = SCOPE_SENSITIVE | (at_fault ? SCOPE_AT_FAULT : 0); siginfo_t si; memset(&si, 0, sizeof(si)); if (ptrace(PTRACE_GETSIGINFO, tid, 0, &si)) { - _LOG(log, SCOPE_SENSITIVE, "cannot get siginfo for %d: %s\n", + _LOG(log, scopeFlags, "cannot get siginfo for %d: %s\n", tid, strerror(errno)); return; } @@ -387,7 +388,7 @@ static void dump_nearby_maps(const ptrace_context_t* context, log_t* log, pid_t return; } - _LOG(log, SCOPE_SENSITIVE, "\nmemory map around fault addr %08x:\n", (int)si.si_addr); + _LOG(log, scopeFlags, "\nmemory map around fault addr %08x:\n", (int)si.si_addr); /* * Search for a match, or for a hole where the match would be. The list @@ -415,9 +416,9 @@ static void dump_nearby_maps(const ptrace_context_t* context, log_t* log, pid_t * Show "next" then "match" then "prev" so that the addresses appear in * ascending order (like /proc/pid/maps). */ - dump_map(log, next, "map below"); - dump_map(log, map, "map for address"); - dump_map(log, prev, "map above"); + dump_map(log, next, "map below", scopeFlags); + dump_map(log, map, "map for address", scopeFlags); + dump_map(log, prev, "map above", scopeFlags); } static void dump_thread(const ptrace_context_t* context, log_t* log, pid_t tid, bool at_fault, @@ -428,7 +429,7 @@ static void dump_thread(const ptrace_context_t* context, log_t* log, pid_t tid, dump_backtrace_and_stack(context, log, tid, at_fault); if (at_fault) { dump_memory_and_code(context, log, tid, at_fault); - dump_nearby_maps(context, log, tid); + dump_nearby_maps(context, log, tid, at_fault); } }