From 868d39a82fb2d9830d253409a1c28f0ae1fcac33 Mon Sep 17 00:00:00 2001 From: Elliott Hughes Date: Tue, 26 Sep 2017 11:54:49 -0700 Subject: [PATCH] Show the number of VMAs in the tombstone. Tombstones (especially ones with lots of VMAs) are regularly truncated. We can at least show the number of VMAs, though, for anyone interested in knowing whether they got close to the default 64Ki limit. Bug: http://b/66911122 Test: ran crasher, examined tombstone Change-Id: I286db66f28f132307d573dbe5164efc969dc6ddc --- debuggerd/libdebuggerd/tombstone.cpp | 12 +++++++----- libbacktrace/include/backtrace/BacktraceMap.h | 2 ++ 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/debuggerd/libdebuggerd/tombstone.cpp b/debuggerd/libdebuggerd/tombstone.cpp index f5ecf48c5..418d09227 100644 --- a/debuggerd/libdebuggerd/tombstone.cpp +++ b/debuggerd/libdebuggerd/tombstone.cpp @@ -413,15 +413,17 @@ static void dump_all_maps(Backtrace* backtrace, BacktraceMap* map, log_t* log, p } ScopedBacktraceMapIteratorLock lock(map); - _LOG(log, logtype::MAPS, "\n"); - if (!print_fault_address_marker) { - _LOG(log, logtype::MAPS, "memory map:\n"); - } else { - _LOG(log, logtype::MAPS, "memory map: (fault address prefixed with --->)\n"); + _LOG(log, logtype::MAPS, + "\n" + "memory map (%zu entries):\n", + map->size()); + if (print_fault_address_marker) { if (map->begin() != map->end() && addr < map->begin()->start) { _LOG(log, logtype::MAPS, "--->Fault address falls at %s before any mapped regions\n", get_addr_string(addr).c_str()); print_fault_address_marker = false; + } else { + _LOG(log, logtype::MAPS, "(fault address prefixed with --->)\n"); } } diff --git a/libbacktrace/include/backtrace/BacktraceMap.h b/libbacktrace/include/backtrace/BacktraceMap.h index 963c34b64..6cf8b3fca 100644 --- a/libbacktrace/include/backtrace/BacktraceMap.h +++ b/libbacktrace/include/backtrace/BacktraceMap.h @@ -91,6 +91,8 @@ public: const_iterator begin() const { return maps_.begin(); } const_iterator end() const { return maps_.end(); } + size_t size() const { return maps_.size(); } + virtual bool Build(); static inline bool IsValid(const backtrace_map_t& map) {