diff options
| author | Marco Elver <elver@google.com> | 2021-08-19 13:17:45 +0200 |
|---|---|---|
| committer | Marco Elver <elver@google.com> | 2021-08-19 13:17:45 +0200 |
| commit | 303d278ad2fa9bb8caf5beaac7374ea0773dc2fe (patch) | |
| tree | 931414feb0a037f700fd1c98ba3315e4f0634137 /llvm/lib/TextAPI/ArchitectureSet.cpp | |
| parent | c20cb5547ddde565c4fd69900ef7d71371e51611 (diff) | |
| download | llvm-303d278ad2fa9bb8caf5beaac7374ea0773dc2fe.zip llvm-303d278ad2fa9bb8caf5beaac7374ea0773dc2fe.tar.gz llvm-303d278ad2fa9bb8caf5beaac7374ea0773dc2fe.tar.bz2 | |
[tsan] Fix pthread_once() on Mac OS X
Change 636428c727cd enabled BlockingRegion hooks for pthread_once().
Unfortunately this seems to cause crashes on Mac OS X which uses
pthread_once() from locations that seem to result in crashes:
| ThreadSanitizer:DEADLYSIGNAL
| ==31465==ERROR: ThreadSanitizer: stack-overflow on address 0x7ffee73fffd8 (pc 0x00010807fd2a bp 0x7ffee7400050 sp 0x7ffee73fffb0 T93815)
| #0 __tsan::MetaMap::GetSync(__tsan::ThreadState*, unsigned long, unsigned long, bool, bool) tsan_sync.cpp:195 (libclang_rt.tsan_osx_dynamic.dylib:x86_64+0x78d2a)
| #1 __tsan::MutexPreLock(__tsan::ThreadState*, unsigned long, unsigned long, unsigned int) tsan_rtl_mutex.cpp:143 (libclang_rt.tsan_osx_dynamic.dylib:x86_64+0x6cefc)
| #2 wrap_pthread_mutex_lock sanitizer_common_interceptors.inc:4240 (libclang_rt.tsan_osx_dynamic.dylib:x86_64+0x3dae0)
| #3 flockfile <null>:2 (libsystem_c.dylib:x86_64+0x38a69)
| #4 puts <null>:2 (libsystem_c.dylib:x86_64+0x3f69b)
| #5 wrap_puts sanitizer_common_interceptors.inc (libclang_rt.tsan_osx_dynamic.dylib:x86_64+0x34d83)
| #6 __tsan::OnPotentiallyBlockingRegionBegin() cxa_guard_acquire.cpp:8 (foo:x86_64+0x100000e48)
| #7 wrap_pthread_once tsan_interceptors_posix.cpp:1512 (libclang_rt.tsan_osx_dynamic.dylib:x86_64+0x2f6e6)
From the stack trace it can be seen that the caller is unknown, and the
resulting stack-overflow seems to indicate that whoever the caller is
does not have enough stack space or otherwise is running in a limited
environment not yet ready for full instrumentation.
Fix it by reverting behaviour on Mac OS X to not call BlockingRegion
hooks from pthread_once().
Reported-by: azharudd
Reviewed By: glider
Differential Revision: https://reviews.llvm.org/D108305
Diffstat (limited to 'llvm/lib/TextAPI/ArchitectureSet.cpp')
0 files changed, 0 insertions, 0 deletions
