[asan] Fix deadlock in stack unwinder on android/x86.
Fixes PR17116.
Patch by 林作健 (manjian2006 at gmail.com).
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@190590 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/lsan/lsan_common_linux.cc b/lib/lsan/lsan_common_linux.cc
index 38cf88a..6517cf1 100644
--- a/lib/lsan/lsan_common_linux.cc
+++ b/lib/lsan/lsan_common_linux.cc
@@ -114,8 +114,9 @@
chunk = GetUserBegin(chunk);
LsanMetadata m(chunk);
if (m.allocated() && m.tag() != kReachable) {
- if (linker->containsAddress(
- GetCallerPC(m.stack_trace_id(), param->stack_depot_reverse_map))) {
+ u32 stack_id = m.stack_trace_id();
+ if (!stack_id || linker->containsAddress(GetCallerPC(
+ stack_id, param->stack_depot_reverse_map))) {
m.set_tag(kReachable);
param->frontier->push_back(chunk);
}