android_system_core/libunwindstack
Christopher Ferris 56d0e07d70 Fix which maps to search for globals.
If multiple threads are unwinding at the same time, new maps that contain
the global variables for dex files and jit information are created. This
leads to threads creating more new maps that then get searched, then
more maps, then more searching until virtual address space exhaustion.

Fix this so that we only search maps that have a corresponding rw map that
could contain the global memory.

Small refactor to combine the code to search for global variables into
one class that both classes inherit from.

Modify unit tests for the new pattern checking.

Bug: 117761427

Test: Ran unit tests for libunwindstack/libbacktrace/simpleperf.
Test: Ran art 004-ThreadStress that used to fail.
Change-Id: I837ca6b9d0383100079de090bc7d019598e0cdfe
2018-10-17 14:23:10 -07:00
..
include/unwindstack Fix which maps to search for globals. 2018-10-17 14:23:10 -07:00
tests Fix which maps to search for globals. 2018-10-17 14:23:10 -07:00
tools Fix handling of load bias values. 2018-06-11 18:53:55 -07:00
.clang-format
Android.bp Fix which maps to search for globals. 2018-10-17 14:23:10 -07:00
ArmExidx.cpp Fix handling of load bias values. 2018-06-11 18:53:55 -07:00
ArmExidx.h Fix handling of load bias values. 2018-06-11 18:53:55 -07:00
AsmGetRegsMips.S Add libunwindstack support for Mips and Mips64 2017-12-11 15:44:40 +01:00
AsmGetRegsMips64.S Add libunwindstack support for Mips and Mips64 2017-12-11 15:44:40 +01:00
AsmGetRegsX86.S Fix wrong mov instruction size. 2018-01-25 11:44:19 -08:00
AsmGetRegsX86_64.S
Check.h Add error propagation into Unwinder/Elf objects. 2018-01-24 17:50:46 -08:00
DexFile.cpp Move to using ClassAccessor 2018-08-08 11:04:15 -07:00
DexFile.h Move to using ClassAccessor 2018-08-08 11:04:15 -07:00
DexFiles.cpp Fix which maps to search for globals. 2018-10-17 14:23:10 -07:00
DwarfCfa.cpp Suppress implicit-fallthrough warnings. 2018-09-17 16:50:11 +00:00
DwarfCfa.h Fix handling of load bias values. 2018-06-11 18:53:55 -07:00
DwarfDebugFrame.h Refactor the DwarfSection classes. 2018-06-27 14:52:21 -07:00
DwarfEhFrame.h Refactor the DwarfSection classes. 2018-06-27 14:52:21 -07:00
DwarfEhFrameWithHdr.cpp Refactor the DwarfSection classes. 2018-06-27 14:52:21 -07:00
DwarfEhFrameWithHdr.h Refactor the DwarfSection classes. 2018-06-27 14:52:21 -07:00
DwarfEncoding.h
DwarfMemory.cpp
DwarfOp.cpp Implement new DEX PC lookup scheme. 2018-02-13 16:45:38 -08:00
DwarfOp.h Implement new DEX PC lookup scheme. 2018-02-13 16:45:38 -08:00
DwarfSection.cpp Fix implicit fall through switch cases. 2018-09-19 14:12:59 -07:00
Elf.cpp Fix up the definition of Elf::GetInfo. 2018-10-12 11:29:06 -07:00
ElfInterface.cpp Be permissive about badly formed elf files. 2018-08-03 22:02:05 +00:00
ElfInterfaceArm.cpp Remove Memory::ReadField. 2018-07-12 12:45:31 -07:00
ElfInterfaceArm.h Remove Memory::ReadField. 2018-07-12 12:45:31 -07:00
Global.cpp Fix which maps to search for globals. 2018-10-17 14:23:10 -07:00
JitDebug.cpp Fix which maps to search for globals. 2018-10-17 14:23:10 -07:00
LocalUnwinder.cpp Add a specialized LocalUnwinder object. 2018-05-23 20:02:30 -07:00
Log.cpp
MapInfo.cpp Fix up the definition of Elf::GetInfo. 2018-10-12 11:29:06 -07:00
Maps.cpp Implement support for linker rosegment option. 2018-10-03 20:48:45 -07:00
Memory.cpp Implement support for linker rosegment option. 2018-10-03 20:48:45 -07:00
OWNERS
Regs.cpp Expose per arch headers. 2018-02-08 19:29:08 -08:00
RegsArm.cpp libunwindstack: add Regs::Clone. 2018-04-20 13:23:20 -07:00
RegsArm64.cpp libunwindstack: add Regs::Clone. 2018-04-20 13:23:20 -07:00
RegsInfo.h Fix incorrect left shifts. 2018-08-02 18:01:02 -07:00
RegsMips.cpp libunwindstack: add Regs::Clone. 2018-04-20 13:23:20 -07:00
RegsMips64.cpp libunwindstack: add Regs::Clone. 2018-04-20 13:23:20 -07:00
RegsX86.cpp libunwindstack: add Regs::Clone. 2018-04-20 13:23:20 -07:00
RegsX86_64.cpp libunwindstack: add Regs::Clone. 2018-04-20 13:23:20 -07:00
Symbols.cpp Fix handling of load bias values. 2018-06-11 18:53:55 -07:00
Symbols.h Fix handling of load bias values. 2018-06-11 18:53:55 -07:00
Unwinder.cpp Fix problem adding too many frames. 2018-10-12 16:36:35 -07:00