[compiler-rt] r180106 - [ASan] Disable strict-init-order checker once we have more than one thread, as this mode is thread-hostile
Alexey Samsonov
samsonov at google.com
Tue Apr 23 06:57:35 PDT 2013
Author: samsonov
Date: Tue Apr 23 08:57:35 2013
New Revision: 180106
URL: http://llvm.org/viewvc/llvm-project?rev=180106&view=rev
Log:
[ASan] Disable strict-init-order checker once we have more than one thread, as this mode is thread-hostile
Modified:
compiler-rt/trunk/lib/asan/asan_interceptors.cc
compiler-rt/trunk/lib/asan/lit_tests/init-order-dlopen.cc
Modified: compiler-rt/trunk/lib/asan/asan_interceptors.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_interceptors.cc?rev=180106&r1=180105&r2=180106&view=diff
==============================================================================
--- compiler-rt/trunk/lib/asan/asan_interceptors.cc (original)
+++ compiler-rt/trunk/lib/asan/asan_interceptors.cc Tue Apr 23 08:57:35 2013
@@ -94,6 +94,11 @@ void SetThreadName(const char *name) {
asanThreadRegistry().SetThreadName(t->tid(), name);
}
+static void DisableStrictInitOrderChecker() {
+ if (flags()->strict_init_order)
+ flags()->check_initialization_order = false;
+}
+
} // namespace __asan
// ---------------------- Wrappers ---------------- {{{1
@@ -132,6 +137,8 @@ extern "C" int pthread_attr_getdetachsta
INTERCEPTOR(int, pthread_create, void *thread,
void *attr, void *(*start_routine)(void*), void *arg) {
+ // Strict init-order checking in thread-hostile.
+ DisableStrictInitOrderChecker();
GET_STACK_TRACE_THREAD;
int detached = 0;
if (attr != 0)
@@ -639,6 +646,8 @@ INTERCEPTOR_WINAPI(DWORD, CreateThread,
void* security, uptr stack_size,
DWORD (__stdcall *start_routine)(void*), void* arg,
DWORD flags, void* tid) {
+ // Strict init-order checking in thread-hostile.
+ DisableStrictInitOrderChecker();
GET_STACK_TRACE_THREAD;
u32 current_tid = GetCurrentTidOrInvalid();
AsanThread *t = AsanThread::Create(start_routine, arg);
Modified: compiler-rt/trunk/lib/asan/lit_tests/init-order-dlopen.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/lit_tests/init-order-dlopen.cc?rev=180106&r1=180105&r2=180106&view=diff
==============================================================================
--- compiler-rt/trunk/lib/asan/lit_tests/init-order-dlopen.cc (original)
+++ compiler-rt/trunk/lib/asan/lit_tests/init-order-dlopen.cc Tue Apr 23 08:57:35 2013
@@ -4,7 +4,7 @@
// RUN: %clangxx_asan -m64 -O0 %p/SharedLibs/init-order-dlopen-so.cc \
// RUN: -fPIC -shared -o %t-so.so
// RUN: %clangxx_asan -m64 -O0 %s -o %t -Wl,--export-dynamic
-// RUN: ASAN_OPTIONS=check_initialization_order=true %t 2>&1 | FileCheck %s
+// RUN: ASAN_OPTIONS=check_initialization_order=true:strict_init_order=true %t 2>&1 | FileCheck %s
#include <dlfcn.h>
#include <pthread.h>
#include <stdio.h>
More information about the llvm-commits
mailing list