[lsan] Fix deadlock in dl_iterate_phdr.
authorEvgeniy Stepanov <eugeni.stepanov@gmail.com>
Thu, 19 Sep 2019 19:52:57 +0000 (19:52 +0000)
committerEvgeniy Stepanov <eugeni.stepanov@gmail.com>
Thu, 19 Sep 2019 19:52:57 +0000 (19:52 +0000)
commitf1b6bd403d52f41d0c55733387cf5f71753f3c25
treef84d88450e673aaead8ea29e07f9a91a1d349001
parente6b2164723b06417dfe44d4bedcb3c2fd8a79c0d
[lsan] Fix deadlock in dl_iterate_phdr.

Summary:
Do not grab the allocator lock before calling dl_iterate_phdr. This may
cause a lock order inversion with (valid) user code that uses malloc
inside a dl_iterate_phdr callback.

Reviewers: vitalybuka, hctim

Subscribers: jfb, #sanitizers, llvm-commits

Tags: #sanitizers, #llvm

Differential Revision: https://reviews.llvm.org/D67738

llvm-svn: 372348
compiler-rt/lib/lsan/lsan_common.cpp
compiler-rt/lib/lsan/lsan_common.h
compiler-rt/lib/lsan/lsan_common_linux.cpp
compiler-rt/lib/lsan/lsan_common_mac.cpp
compiler-rt/test/lsan/TestCases/Linux/libdl_deadlock.cpp [new file with mode: 0644]