diff options
author | David Srbecky <dsrbecky@google.com> | 2018-02-23 18:06:13 +0000 |
---|---|---|
committer | David Srbecky <dsrbecky@google.com> | 2019-03-29 14:01:32 +0000 |
commit | e7caa05786371df54cba2038588d4f5465e9d476 (patch) | |
tree | fac7af5e6c483517979497b2c3e17a58bc7df5c0 /libbacktrace | |
parent | 8dbfa97631b6570d56575e838811da854a5faa6c (diff) | |
download | unwinding-e7caa05786371df54cba2038588d4f5465e9d476.tar.gz |
Check for data races when reading JIT/DEX entries.
Update the entries only when the list is modified by the runtime.
Check that the list wasn't concurrently modified when being read.
Bug: 124287208
Test: libunwindstack_test
Test: art/test.py -b --host -r -t 137-cfi
Change-Id: I87ba70322053a01b3d5be1fdf6310e1dc21bb084
Diffstat (limited to 'libbacktrace')
-rw-r--r-- | libbacktrace/UnwindStack.cpp | 11 | ||||
-rw-r--r-- | libbacktrace/UnwindStackMap.cpp | 7 | ||||
-rw-r--r-- | libbacktrace/UnwindStackMap.h | 14 |
3 files changed, 0 insertions, 32 deletions
diff --git a/libbacktrace/UnwindStack.cpp b/libbacktrace/UnwindStack.cpp index f5f9b2a..ff19833 100644 --- a/libbacktrace/UnwindStack.cpp +++ b/libbacktrace/UnwindStack.cpp @@ -32,9 +32,6 @@ #include <unwindstack/Regs.h> #include <unwindstack/RegsGetLocal.h> -#if !defined(NO_LIBDEXFILE_SUPPORT) -#include <unwindstack/DexFiles.h> -#endif #include <unwindstack/Unwinder.h> #include "BacktraceLog.h" @@ -50,14 +47,6 @@ bool Backtrace::Unwind(unwindstack::Regs* regs, BacktraceMap* back_map, regs, stack_map->process_memory()); unwinder.SetResolveNames(stack_map->ResolveNames()); stack_map->SetArch(regs->Arch()); - if (stack_map->GetJitDebug() != nullptr) { - unwinder.SetJitDebug(stack_map->GetJitDebug(), regs->Arch()); - } -#if !defined(NO_LIBDEXFILE_SUPPORT) - if (stack_map->GetDexFiles() != nullptr) { - unwinder.SetDexFiles(stack_map->GetDexFiles(), regs->Arch()); - } -#endif unwinder.Unwind(skip_names, &stack_map->GetSuffixesToIgnore()); if (error != nullptr) { switch (unwinder.LastErrorCode()) { diff --git a/libbacktrace/UnwindStackMap.cpp b/libbacktrace/UnwindStackMap.cpp index 4518891..726fdfa 100644 --- a/libbacktrace/UnwindStackMap.cpp +++ b/libbacktrace/UnwindStackMap.cpp @@ -43,13 +43,6 @@ bool UnwindStackMap::Build() { // Create the process memory object. process_memory_ = unwindstack::Memory::CreateProcessMemory(pid_); - // Create a JitDebug object for getting jit unwind information. - std::vector<std::string> search_libs_{"libart.so", "libartd.so"}; - jit_debug_.reset(new unwindstack::JitDebug(process_memory_, search_libs_)); -#if !defined(NO_LIBDEXFILE_SUPPORT) - dex_files_.reset(new unwindstack::DexFiles(process_memory_, search_libs_)); -#endif - if (!stack_maps_->Parse()) { return false; } diff --git a/libbacktrace/UnwindStackMap.h b/libbacktrace/UnwindStackMap.h index e19b605..9bb9709 100644 --- a/libbacktrace/UnwindStackMap.h +++ b/libbacktrace/UnwindStackMap.h @@ -27,9 +27,6 @@ #include <backtrace/Backtrace.h> #include <backtrace/BacktraceMap.h> -#if !defined(NO_LIBDEXFILE_SUPPORT) -#include <unwindstack/DexFiles.h> -#endif #include <unwindstack/Elf.h> #include <unwindstack/JitDebug.h> #include <unwindstack/Maps.h> @@ -53,12 +50,6 @@ class UnwindStackMap : public BacktraceMap { const std::shared_ptr<unwindstack::Memory>& process_memory() { return process_memory_; } - unwindstack::JitDebug* GetJitDebug() { return jit_debug_.get(); } - -#if !defined(NO_LIBDEXFILE_SUPPORT) - unwindstack::DexFiles* GetDexFiles() { return dex_files_.get(); } -#endif - void SetArch(unwindstack::ArchEnum arch) { arch_ = arch; } protected: @@ -66,11 +57,6 @@ class UnwindStackMap : public BacktraceMap { std::unique_ptr<unwindstack::Maps> stack_maps_; std::shared_ptr<unwindstack::Memory> process_memory_; - std::unique_ptr<unwindstack::JitDebug> jit_debug_; -#if !defined(NO_LIBDEXFILE_SUPPORT) - std::unique_ptr<unwindstack::DexFiles> dex_files_; -#endif - unwindstack::ArchEnum arch_ = unwindstack::ARCH_UNKNOWN; }; |