[compiler-rt] r325703 - Fix racy msan test
Maxim Kuvyrkov via llvm-commits
llvm-commits at lists.llvm.org
Wed Feb 21 10:03:50 PST 2018
Author: maxim-kuvyrkov
Date: Wed Feb 21 10:03:50 2018
New Revision: 325703
URL: http://llvm.org/viewvc/llvm-project?rev=325703&view=rev
Log:
Fix racy msan test
Summary:
Child thread may finish before pthread_setname_np() and/or
pthread_getname_np() had a chance to run, which causes these functions
to fail with ENOENT (meaning /proc/self/task/[tid]/comm doesn't exist).
Fix by stalling child thread on a mutex.
Reviewers: eugenis
Reviewed By: eugenis
Subscribers: llvm-commits, #sanitizers
Differential Revision: https://reviews.llvm.org/D43548
Modified:
compiler-rt/trunk/test/msan/pthread_getname_np.cc
Modified: compiler-rt/trunk/test/msan/pthread_getname_np.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/msan/pthread_getname_np.cc?rev=325703&r1=325702&r2=325703&view=diff
==============================================================================
--- compiler-rt/trunk/test/msan/pthread_getname_np.cc (original)
+++ compiler-rt/trunk/test/msan/pthread_getname_np.cc Wed Feb 21 10:03:50 2018
@@ -10,12 +10,22 @@
#include <stdio.h>
+// Stall child thread on this lock to make sure it doesn't finish
+// before the end of the pthread_getname_np() / pthread_setname_np() tests.
+static pthread_mutex_t lock;
+
void *ThreadFn(void *) {
+ pthread_mutex_lock (&lock);
+ pthread_mutex_unlock (&lock);
return nullptr;
}
int main(void) {
pthread_t t;
+
+ pthread_mutex_init (&lock, NULL);
+ pthread_mutex_lock (&lock);
+
int res = pthread_create(&t, 0, ThreadFn, 0);
assert(!res);
@@ -28,6 +38,8 @@ int main(void) {
assert(!res);
assert(strcmp(buf, kMyThreadName) == 0);
+ pthread_mutex_unlock (&lock);
+
res = pthread_join(t, 0);
assert(!res);
return 0;
More information about the llvm-commits
mailing list