platform_system_core/libunwindstack
Yong Li 4ad538376a Fix memory leak of DexFile handle after release
The DexFile handle is allocated from heap in OpenFromFd/OpenFromMemory.
After releasing the unique_ptr, the DexFile handle itself is no longer
managed by the smart pointer. However, the DexFile handle is not freed
in the constructor of DexFileFromFile/DexFileFromMemory.

This change uses get() method to get the DexFile pointer while allowing
it to be managed by smart pointer so that it can be freed after method
end.

Added new unit tests to detect leaks.

Bug: 151966190

Test: Unwinding can still retrieve dex frame information during crash.
Test: Ran new unit tests before change and verified they fail, ran them
Test: after the change and verified they don't fail.

Signed-off-by: Yong Li <yongl0722@gmail.com>
Change-Id: I0627e1e255eb6644aba51e940c1a79ff78d568d7
(cherry picked from commit 489c3a8b35)
2020-03-23 13:47:00 -07:00
..
benchmarks Fix copy / move behaviour of Maps object. 2019-03-05 13:05:36 +00:00
include/unwindstack Properly handle empty map after read-only map. 2020-01-22 18:30:12 -08:00
tests Fix memory leak of DexFile handle after release 2020-03-23 13:47:00 -07:00
tools Fix handling of PT_GNU_EH_FRAME. 2019-10-21 19:11:22 -07:00
.clang-format
Android.bp Properly handle empty map after read-only map. 2020-01-22 18:30:12 -08:00
AndroidVersions.md Add document of changes between Android versions. 2019-10-15 18:33:11 -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 Add full support for initing registers. 2017-07-11 12:15:54 -07:00
Check.h Add error propagation into Unwinder/Elf objects. 2018-01-24 17:50:46 -08:00
DexFile.cpp Fix memory leak of DexFile handle after release 2020-03-23 13:47:00 -07:00
DexFile.h Fix memory leak of DexFile handle after release 2020-03-23 13:47:00 -07:00
DexFiles.cpp Move the dexfile support to implementation. 2019-11-20 14:59:55 -08:00
DwarfCfa.cpp Move DwarfCfaInfo::kTable from data.rel.ro to rodata 2018-12-14 06:03:09 -08:00
DwarfCfa.h Move DwarfCfaInfo::kTable from data.rel.ro to rodata 2018-12-14 06:03:09 -08:00
DwarfDebugFrame.h Fix potential bad info in eh_frame_hdr. 2019-10-29 18:39:30 -07:00
DwarfEhFrame.h Fix potential bad info in eh_frame_hdr. 2019-10-29 18:39:30 -07:00
DwarfEhFrameWithHdr.cpp Fix potential bad info in eh_frame_hdr. 2019-10-29 18:39:30 -07:00
DwarfEhFrameWithHdr.h Fix potential bad info in eh_frame_hdr. 2019-10-29 18:39:30 -07:00
DwarfEncoding.h Make the library usable as a library. 2017-07-14 12:20:23 -07:00
DwarfMemory.cpp Handle when bias is different in elf headers. 2019-10-08 17:36:06 +00:00
DwarfOp.cpp libunwindstack: Move DwarfOp callback table to rodata section 2019-01-24 11:11:15 -08:00
DwarfOp.h libunwindstack: Move DwarfOp callback table to rodata section 2019-01-24 11:11:15 -08:00
DwarfSection.cpp Rewrite DwarfSectionImpl::InsertFde 2020-02-23 06:34:21 +00:00
Elf.cpp Use elf offset in signal step check. 2019-12-04 22:29:59 +00:00
ElfInterface.cpp Fix handling of possible bad gnu_debugdata_size. 2019-12-19 16:48:15 -08:00
ElfInterfaceArm.cpp Handle when bias is different in elf headers. 2019-10-08 17:36:06 +00:00
ElfInterfaceArm.h Handle when bias is different in elf headers. 2019-10-08 17:36:06 +00:00
Global.cpp Fix global finding logic. 2020-01-21 18:00:57 -08:00
JitDebug.cpp Internalize subclasses of Memory 2019-06-11 12:09:18 -07:00
LocalUnwinder.cpp Fix pc/function name for signal handler frame. 2019-04-12 17:23:18 -07:00
Log.cpp Make the library usable as a library. 2017-07-14 12:20:23 -07:00
MapInfo.cpp Properly handle empty map after read-only map. 2020-01-22 18:30:12 -08:00
Maps.cpp Properly handle empty map after read-only map. 2020-01-22 18:30:12 -08:00
Memory.cpp Fix handling of possible bad gnu_debugdata_size. 2019-12-19 16:48:15 -08:00
MemoryBuffer.h Fix handling of possible bad gnu_debugdata_size. 2019-12-19 16:48:15 -08:00
MemoryCache.h Internalize subclasses of Memory 2019-06-11 12:09:18 -07:00
MemoryFileAtOffset.h Internalize subclasses of Memory 2019-06-11 12:09:18 -07:00
MemoryLocal.h Internalize subclasses of Memory 2019-06-11 12:09:18 -07:00
MemoryOffline.h Internalize subclasses of Memory 2019-06-11 12:09:18 -07:00
MemoryOfflineBuffer.h Internalize subclasses of Memory 2019-06-11 12:09:18 -07:00
MemoryRange.h Internalize subclasses of Memory 2019-06-11 12:09:18 -07:00
MemoryRemote.h Internalize subclasses of Memory 2019-06-11 12:09:18 -07:00
OWNERS Add OWNERS. 2017-12-07 13:30:03 -08:00
Regs.cpp Expose per arch headers. 2018-02-08 19:29:08 -08:00
RegsArm.cpp Use elf offset in signal step check. 2019-12-04 22:29:59 +00:00
RegsArm64.cpp unwindstack: RegsArm64: fix harmless off by 1 + iterate GPRs contiguously 2020-01-24 19:50:45 +00:00
RegsInfo.h Fix off by one error. 2018-10-23 18:10:41 +01:00
RegsMips.cpp Use elf offset in signal step check. 2019-12-04 22:29:59 +00:00
RegsMips64.cpp Use elf offset in signal step check. 2019-12-04 22:29:59 +00:00
RegsX86.cpp Use elf offset in signal step check. 2019-12-04 22:29:59 +00:00
RegsX86_64.cpp Use elf offset in signal step check. 2019-12-04 22:29:59 +00:00
Symbols.cpp Add missing includes. 2018-12-06 10:09:20 -08:00
Symbols.h Fix handling of load bias values. 2018-06-11 18:53:55 -07:00
TEST_MAPPING libunwindstack: add simpleperf presumit test. 2020-01-24 11:51:30 -08:00
Unwinder.cpp Move the dexfile support to implementation. 2019-11-20 14:59:55 -08:00