[PATCH] D14837: [tsan] Fix detached threads in unit tests on OS X
Kuba Brecka via llvm-commits
llvm-commits at lists.llvm.org
Thu Nov 19 11:52:29 PST 2015
kubabrecka created this revision.
kubabrecka added reviewers: dvyukov, kcc, glider, samsonov.
kubabrecka added subscribers: llvm-commits, zaks.anna, ismailp.
We need to call the intercepted version of pthread_detach. Secondly, PTHREAD_CREATE_JOINABLE and PTHREAD_CREATE_DETACHED are not `0` and `1` on OS X, so we need to properly pass these constants and not just a bool.
http://reviews.llvm.org/D14837
Files:
lib/tsan/tests/rtl/tsan_test_util_posix.cc
Index: lib/tsan/tests/rtl/tsan_test_util_posix.cc
===================================================================
--- lib/tsan/tests/rtl/tsan_test_util_posix.cc
+++ lib/tsan/tests/rtl/tsan_test_util_posix.cc
@@ -38,6 +38,7 @@
#define __interceptor_memset wrap_memset
#define __interceptor_pthread_create wrap_pthread_create
#define __interceptor_pthread_join wrap_pthread_join
+#define __interceptor_pthread_detach wrap_pthread_detach
#endif
extern "C" void *__interceptor_memcpy(void *, const void *, uptr);
@@ -47,6 +48,7 @@
void *(*start_routine)(void *),
void *arg);
extern "C" int __interceptor_pthread_join(pthread_t thread, void **value_ptr);
+extern "C" int __interceptor_pthread_detach(pthread_t thread);
static void *BeforeInitThread(void *param) {
(void)param;
@@ -381,7 +383,8 @@
if (!main) {
pthread_attr_t attr;
pthread_attr_init(&attr);
- pthread_attr_setdetachstate(&attr, detached);
+ pthread_attr_setdetachstate(
+ &attr, detached ? PTHREAD_CREATE_DETACHED : PTHREAD_CREATE_JOINABLE);
pthread_attr_setstacksize(&attr, 64*1024);
__interceptor_pthread_create(&impl_->thread, &attr,
ScopedThread::Impl::ScopedThreadCallback, impl_);
@@ -402,7 +405,7 @@
CHECK(!impl_->main);
CHECK(!impl_->detached);
impl_->detached = true;
- pthread_detach(impl_->thread);
+ __interceptor_pthread_detach(impl_->thread);
}
void ScopedThread::Access(void *addr, bool is_write,
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D14837.40687.patch
Type: text/x-patch
Size: 1541 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20151119/446a0a7b/attachment.bin>
More information about the llvm-commits
mailing list