breakpad/src/processor
Joshua Peraza 5e1c53a442 android: truncate lower of two overlapping modules
Previously, the processor truncated the upper of two
overlapping module ranges to compensate for incorrect
reporting of module ranges by the Breakpad client.
Crashpad correctly reports module load ranges, so
this truncation strategy is no longer necessary.

However, when partitioned libraries are used, the base
library may have a range which encompasses the other
partitions. When this is combined with the truncate
upper merge strategy, the base library's executable
segment is truncated causing symbolization failures.

This patch changes Android's merge strategy to truncate
the lower range (which is still the base library, but
this strategy truncates from the high end of the
library's range, instead of its base).

Bug: b/149845120
Change-Id: Ic75ecd3e919432690740eb21ebd4265fc0bbaa86
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2067952
Reviewed-by: Mark Mentovai <mark@chromium.org>
2020-02-21 04:06:35 +00:00
..
proto Update links 2016-11-18 17:24:37 +00:00
testdata Always emit a 32-bit crash address for 32-bit architectures 2019-01-30 16:21:52 +00:00
address_map-inl.h
address_map.h
address_map_unittest.cc
basic_code_module.h Populate stack frames with unloaded module info. 2017-01-19 19:33:56 +00:00
basic_code_modules.cc Enable truncation of module ranges 2019-06-11 19:04:02 +00:00
basic_code_modules.h Enable truncation of module ranges 2019-06-11 19:04:02 +00:00
basic_source_line_resolver.cc Add optional field indicating multiple symbols at an address 2017-11-29 21:33:23 +00:00
basic_source_line_resolver_types.h Add optional field indicating multiple symbols at an address 2017-11-29 21:33:23 +00:00
basic_source_line_resolver_unittest.cc Add optional field indicating multiple symbols at an address 2017-11-29 21:33:23 +00:00
call_stack.cc Add the TID to the CallStack. 2016-04-01 10:11:10 -04:00
cfi_frame_info-inl.h
cfi_frame_info.cc Don't use strtok_s for mingw builds 2015-08-20 15:09:16 +00:00
cfi_frame_info.h Update symbol file documentation links. 2016-06-10 06:29:06 -04:00
cfi_frame_info_unittest.cc Refactoring in preparation for microdump processing 2014-09-08 19:10:42 +00:00
contained_range_map-inl.h
contained_range_map.h
contained_range_map_unittest.cc
convert_old_arm64_context.cc Define and use a a new MDRawContextARM64 2018-08-01 19:27:25 +00:00
convert_old_arm64_context.h Define and use a a new MDRawContextARM64 2018-08-01 19:27:25 +00:00
disassembler_x86.cc disassembler_x86: Remove unused include 2016-01-08 10:07:04 -05:00
disassembler_x86.h Use stdint types everywhere 2013-03-06 14:04:42 +00:00
disassembler_x86_unittest.cc Cleanup: Remove duplicate wording in license headers. 2013-04-23 23:18:39 +00:00
dump_context.cc processor: Fix memory leak after 88d8114f 2018-08-02 00:02:10 +00:00
dump_object.cc Refactoring in preparation for microdump processing 2014-09-08 19:10:42 +00:00
exploitability.cc Improving the support for Fuchsia in Breakpad Processor. 2019-07-12 18:29:23 +00:00
exploitability_linux.cc Fix a win32 build error by moving a #include out of an #ifndef _WIN32 2016-09-20 12:12:56 -04:00
exploitability_linux.h Fixing a flaky Linux exploitability unittest. 2016-02-16 11:46:04 -08:00
exploitability_unittest.cc Updating ExploitabilityLinux to check memory mapping names against a prefix 2016-08-29 18:39:01 +00:00
exploitability_win.cc Use general instruction/stack pointer convenience method instead of manually 2015-06-30 23:22:09 +00:00
exploitability_win.h
fast_source_line_resolver.cc Detect corrupt symbol files during minidump processing. Recover from the errors and use the good data if possible. 2013-07-11 01:36:06 +00:00
fast_source_line_resolver_types.h Detect corrupt symbol files during minidump processing. Recover from the errors and use the good data if possible. 2013-07-11 01:36:06 +00:00
fast_source_line_resolver_unittest.cc Populate stack frames with unloaded module info. 2017-01-19 19:33:56 +00:00
linked_ptr.h
logging.cc Add SEVERITY_CRITICAL to logging, that would help to suppress logs from the fuzz target. 2018-05-29 19:24:32 +00:00
logging.h Remove base_logging::LogMessage 2019-07-12 17:06:06 +00:00
map_serializers-inl.h Use stdint types everywhere 2013-03-06 14:04:42 +00:00
map_serializers.h
map_serializers_unittest.cc map_serializers_unittest: fix unused variable warning 2013-10-30 17:16:38 +00:00
microdump.cc Enable truncation of module ranges 2019-06-11 19:04:02 +00:00
microdump_processor.cc Add -s flag to microdump_stackwalk for dumping stack contents. 2017-10-17 10:22:46 +00:00
microdump_processor_unittest.cc Add -s flag to microdump_stackwalk for dumping stack contents. 2017-10-17 10:22:46 +00:00
microdump_stackwalk.cc Provide helper wrappers for basename(3) and dirname(3) 2017-10-18 15:44:59 +00:00
microdump_stackwalk_machine_readable_test microdump_stackwalk_test: fix bashism in test 2016-11-25 04:53:01 +00:00
microdump_stackwalk_test microdump_stackwalk_test: fix bashism in test 2016-11-25 04:53:01 +00:00
microdump_stackwalk_test_vars Microdumps: support aarch64 and lib mapping from APK 2014-12-02 15:31:25 +00:00
minidump.cc android: truncate lower of two overlapping modules 2020-02-21 04:06:35 +00:00
minidump_dump.cc Allow minidump_dump to print module lists that would normally be rejected 2018-03-12 09:59:33 +00:00
minidump_dump_test
minidump_processor.cc Extract the exception record from the minidump 2020-01-03 20:47:38 +00:00
minidump_processor_unittest.cc Always emit a 32-bit crash address for 32-bit architectures 2019-01-30 16:21:52 +00:00
minidump_stackwalk.cc Provide helper wrappers for basename(3) and dirname(3) 2017-10-18 15:44:59 +00:00
minidump_stackwalk_machine_readable_test
minidump_stackwalk_test
minidump_unittest.cc Added classes to support reading unloaded module lists in minidumps. 2016-12-16 20:15:04 +00:00
module_comparer.cc Detect corrupt symbol files during minidump processing. Recover from the errors and use the good data if possible. 2013-07-11 01:36:06 +00:00
module_comparer.h
module_factory.h
module_serializer.cc Detect corrupt symbol files during minidump processing. Recover from the errors and use the good data if possible. 2013-07-11 01:36:06 +00:00
module_serializer.h Use stdint types everywhere 2013-03-06 14:04:42 +00:00
pathname_stripper.cc
pathname_stripper.h
pathname_stripper_unittest.cc
postfix_evaluator-inl.h
postfix_evaluator.h
postfix_evaluator_unittest.cc Refactoring in preparation for microdump processing 2014-09-08 19:10:42 +00:00
proc_maps_linux.cc This change allows compiling the google-breakpad code using a global ::string class instead of std::string. 2016-08-30 23:31:43 +00:00
proc_maps_linux_unittest.cc This change allows compiling the google-breakpad code using a global ::string class instead of std::string. 2016-08-30 23:31:43 +00:00
process_state.cc Fixed leak of unloaded module lists. 2017-02-07 22:41:43 +00:00
processor.gyp Enable truncation of module ranges 2019-06-11 19:04:02 +00:00
processor_tools.gypi Add GYP build for the src/tools directory on Mac and Linux. 2014-07-24 15:22:51 +00:00
range_map-inl.h Enable truncation of module ranges 2019-06-11 19:04:02 +00:00
range_map.h Enable truncation of module ranges 2019-06-11 19:04:02 +00:00
range_map_truncate_lower_unittest.cc Removed unused includes/declarations 2019-06-11 23:36:23 +00:00
range_map_truncate_upper_unittest.cc Removed unused includes/declarations 2019-06-11 23:36:23 +00:00
range_map_unittest.cc Adding support for overlapping ranges to RangeMap. 2016-06-05 22:41:10 -07:00
simple_serializer-inl.h Detect corrupt symbol files during minidump processing. Recover from the errors and use the good data if possible. 2013-07-11 01:36:06 +00:00
simple_serializer.h Use stdint types everywhere 2013-03-06 14:04:42 +00:00
simple_symbol_supplier.cc Detect corrupt symbol files during minidump processing. Recover from the errors and use the good data if possible. 2013-07-11 01:36:06 +00:00
simple_symbol_supplier.h Detect corrupt symbol files during minidump processing. Recover from the errors and use the good data if possible. 2013-07-11 01:36:06 +00:00
source_line_resolver_base.cc Detect corrupt symbol files during minidump processing. Recover from the errors and use the good data if possible. 2013-07-11 01:36:06 +00:00
source_line_resolver_base_types.h Add optional field indicating multiple symbols at an address 2017-11-29 21:33:23 +00:00
stack_frame_cpu.cc Process minidumps generated on ARM64 in iOS apps. 2013-11-23 01:45:20 +00:00
stack_frame_symbolizer.cc Populate stack frames with unloaded module info. 2017-01-19 19:33:56 +00:00
stackwalk_common.cc This change allows compiling the google-breakpad code using a global ::string class instead of std::string. 2016-08-30 23:31:43 +00:00
stackwalk_common.h Revert "Added a switch to dump minidump modules in minidump_stackwalk." 2016-02-10 13:11:20 -08:00
stackwalker.cc Define and use a a new MDRawContextARM64 2018-08-01 19:27:25 +00:00
stackwalker_address_list.cc Make StackWalkerAddressList use FRAME_TRUST_PREWALKED trust level. 2013-09-04 20:43:10 +00:00
stackwalker_address_list.h Create StackwalkerAddressList. 2013-08-23 14:38:36 +00:00
stackwalker_address_list_unittest.cc Make StackWalkerAddressList use FRAME_TRUST_PREWALKED trust level. 2013-09-04 20:43:10 +00:00
stackwalker_amd64.cc Handle very large stack traces 2017-07-12 17:53:15 +00:00
stackwalker_amd64.h Handle very large stack traces 2017-07-12 17:53:15 +00:00
stackwalker_amd64_unittest.cc fix build failures 2019-06-11 22:27:59 +00:00
stackwalker_arm.cc iOS: disable using CFI in stackwalking 2018-07-06 21:22:45 +00:00
stackwalker_arm.h Allow setting a limit on the number of frames to be recovered by stack scanning. 2013-08-19 18:31:51 +00:00
stackwalker_arm64.cc arm64: recover register X30(LR) when fallback to frame pointer unwinder 2020-01-21 16:57:57 +00:00
stackwalker_arm64.h arm64: recover register X30(LR) when fallback to frame pointer unwinder 2020-01-21 16:57:57 +00:00
stackwalker_arm64_unittest.cc fix build failures 2019-06-11 22:27:59 +00:00
stackwalker_arm_unittest.cc fix build failures 2019-06-11 22:27:59 +00:00
stackwalker_mips.cc Handle very large stack traces 2017-07-12 17:53:15 +00:00
stackwalker_mips.h Adding support for mips. 2013-09-11 11:37:04 +00:00
stackwalker_mips64_unittest.cc [MIPS]: Don't terminate stackwalk when $sp value doesn't change between frames 2017-03-16 15:59:05 +00:00
stackwalker_mips_unittest.cc [MIPS]: Don't terminate stackwalk when $sp value doesn't change between frames 2017-03-16 15:59:05 +00:00
stackwalker_ppc.cc Fix memory leak in ppc stackwalker 2017-08-18 10:24:52 +00:00
stackwalker_ppc.h Allow setting a limit on the number of frames to be recovered by stack scanning. 2013-08-19 18:31:51 +00:00
stackwalker_ppc64.cc Fix memory leak in ppc64 stackwalker 2017-08-30 17:28:54 +00:00
stackwalker_ppc64.h Allow setting a limit on the number of frames to be recovered by stack scanning. 2013-08-19 18:31:51 +00:00
stackwalker_selftest.cc Refactoring in preparation for microdump processing 2014-09-08 19:10:42 +00:00
stackwalker_selftest_sol.s
stackwalker_sparc.cc Handle very large stack traces 2017-07-12 17:53:15 +00:00
stackwalker_sparc.h Allow setting a limit on the number of frames to be recovered by stack scanning. 2013-08-19 18:31:51 +00:00
stackwalker_unittest_utils.h Enable truncation of module ranges 2019-06-11 19:04:02 +00:00
stackwalker_x86.cc Handle very large stack traces 2017-07-12 17:53:15 +00:00
stackwalker_x86.h Allow setting a limit on the number of frames to be recovered by stack scanning. 2013-08-19 18:31:51 +00:00
stackwalker_x86_unittest.cc fix build failures 2019-06-11 22:27:59 +00:00
static_address_map-inl.h
static_address_map.h
static_address_map_unittest.cc
static_contained_range_map-inl.h Use stdint types everywhere 2013-03-06 14:04:42 +00:00
static_contained_range_map.h Use stdint types everywhere 2013-03-06 14:04:42 +00:00
static_contained_range_map_unittest.cc
static_map-inl.h Use stdint types everywhere 2013-03-06 14:04:42 +00:00
static_map.h Use stdint types everywhere 2013-03-06 14:04:42 +00:00
static_map_iterator-inl.h Use stdint types everywhere 2013-03-06 14:04:42 +00:00
static_map_iterator.h Use stdint types everywhere 2013-03-06 14:04:42 +00:00
static_map_unittest.cc Explicitly call non-sized delete on dynamically sized memory for correct behavior under sized-delete. 2016-03-11 16:37:46 -08:00
static_range_map-inl.h
static_range_map.h
static_range_map_unittest.cc
symbolic_constants_win.cc Allow compiling the google-breakpad code using a global ::string class instead of std::string. 2016-11-08 01:29:06 +00:00
symbolic_constants_win.h Allow compiling the google-breakpad code using a global ::string class instead of std::string. 2016-11-08 01:29:06 +00:00
synth_minidump.cc Added classes to support reading unloaded module lists in minidumps. 2016-12-16 20:15:04 +00:00
synth_minidump.h Added classes to support reading unloaded module lists in minidumps. 2016-12-16 20:15:04 +00:00
synth_minidump_unittest.cc Use stdint types everywhere 2013-03-06 14:04:42 +00:00
synth_minidump_unittest_data.h Use stdint types everywhere 2013-03-06 14:04:42 +00:00
tokenize.cc Don't use strtok_s for mingw builds 2015-08-20 15:09:16 +00:00
tokenize.h
windows_frame_info.h Update symbol file documentation links. 2016-06-10 06:29:06 -04:00