<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr">Hi Dmitry,<div><br></div><div>It looks like your change has caused a failure of the `Darwin/<a href="http://dispatch_main.mm">dispatch_main.mm</a>` TSAN test on our CI:</div><div><br></div><div><div>******************** TEST 'ThreadSanitizer-x86_64-iossim :: Darwin/<a href="http://dispatch_main.mm">dispatch_main.mm</a>' FAILED ********************</div><div>Script:</div><div>--</div><div>: 'RUN: at line 4';     /Users/buildslave/jenkins/workspace/clang-stage1-cmake-RA-expensive/llvm/projects/compiler-rt/test/sanitizer_common/ios_commands/iossim_compile.py /Users/buildslave/jenkins/workspace/clang-stage1-cmake-RA-expensive/clang-build/./bin/clang  -fsanitize=thread -Wall  -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator11.4.sdk   -gline-tables-only -I/Users/buildslave/jenkins/workspace/clang-stage1-cmake-RA-expensive/llvm/projects/compiler-rt/test/tsan/../ /Users/buildslave/jenkins/workspace/clang-stage1-cmake-RA-expensive/llvm/projects/compiler-rt/test/tsan/Darwin/<a href="http://dispatch_main.mm">dispatch_main.mm</a> -o /Users/buildslave/jenkins/workspace/clang-stage1-cmake-RA-expensive/clang-build/tools/clang/runtime/compiler-rt-bins/test/tsan/IOSSimX86_64Config/Darwin/Output/dispatch_main.mm.tmp -framework Foundation</div><div>: 'RUN: at line 5';   /Users/buildslave/jenkins/workspace/clang-stage1-cmake-RA-expensive/llvm/projects/compiler-rt/test/sanitizer_common/ios_commands/iossim_run.py /Users/buildslave/jenkins/workspace/clang-stage1-cmake-RA-expensive/clang-build/tools/clang/runtime/compiler-rt-bins/test/tsan/IOSSimX86_64Config/Darwin/Output/dispatch_main.mm.tmp 2>&1 | FileCheck /Users/buildslave/jenkins/workspace/clang-stage1-cmake-RA-expensive/llvm/projects/compiler-rt/test/tsan/Darwin/<a href="http://dispatch_main.mm">dispatch_main.mm</a></div><div>--</div><div>Exit Code: 66</div><div><br></div><div><br></div><div>********************</div></div><div><br></div><div>Here's the full log:</div><div><br></div><div><a href="http://lab.llvm.org:8080/green/job/clang-stage1-cmake-RA-expensive/13539/console">http://lab.llvm.org:8080/green/job/clang-stage1-cmake-RA-expensive/13539/console</a><br></div><div><br></div><div>I narrowed it down to your commit.</div><div>You can reproduce it by running 'check-tsan' on macOS with the following CMake options "-DCMAKE_BUILD_TYPE=Release" "-DLLVM_ENABLE_ASSERTIONS=On" "-DLLVM_ENABLE_EXPENSIVE_CHECK=ON". </div><div><br></div><div>Could you please take a look?</div><div><br></div><div>Thanks,</div><div>Alex</div><div><br></div><div><span style="color:rgb(51,51,51);font-family:monospace;font-size:13px;white-space:pre-wrap"><br></span></div></div></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, 7 Feb 2019 at 02:45, Dmitry Vyukov via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">Author: dvyukov<br>
Date: Thu Feb  7 02:46:02 2019<br>
New Revision: 353385<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=353385&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=353385&view=rev</a><br>
Log:<br>
tsan: Implement pthread_exit() interceptor for Thread sanitizer<br>
<br>
This change is preparation for fiber support.<br>
<br>
Author: yuri (Yuri Per)<br>
Reviewed in: <a href="https://reviews.llvm.org/D57876" rel="noreferrer" target="_blank">https://reviews.llvm.org/D57876</a><br>
Context: <a href="https://reviews.llvm.org/D54889" rel="noreferrer" target="_blank">https://reviews.llvm.org/D54889</a><br>
<br>
<br>
Added:<br>
    compiler-rt/trunk/test/tsan/thread_exit.c<br>
Modified:<br>
    compiler-rt/trunk/lib/tsan/rtl/tsan_interceptors.cc<br>
<br>
Modified: compiler-rt/trunk/lib/tsan/rtl/tsan_interceptors.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/rtl/tsan_interceptors.cc?rev=353385&r1=353384&r2=353385&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/rtl/tsan_interceptors.cc?rev=353385&r1=353384&r2=353385&view=diff</a><br>
==============================================================================<br>
--- compiler-rt/trunk/lib/tsan/rtl/tsan_interceptors.cc (original)<br>
+++ compiler-rt/trunk/lib/tsan/rtl/tsan_interceptors.cc Thu Feb  7 02:46:02 2019<br>
@@ -1050,6 +1050,11 @@ TSAN_INTERCEPTOR(int, pthread_detach, vo<br>
   return res;<br>
 }<br>
<br>
+TSAN_INTERCEPTOR(void, pthread_exit, void *retval) {<br>
+  SCOPED_TSAN_INTERCEPTOR(pthread_exit, retval);<br>
+  REAL(pthread_exit)(retval);<br>
+}<br>
+<br>
 #if SANITIZER_LINUX<br>
 TSAN_INTERCEPTOR(int, pthread_tryjoin_np, void *th, void **ret) {<br>
   SCOPED_TSAN_INTERCEPTOR(pthread_tryjoin_np, th, ret);<br>
@@ -2664,6 +2669,7 @@ void InitializeInterceptors() {<br>
   TSAN_INTERCEPT(pthread_create);<br>
   TSAN_INTERCEPT(pthread_join);<br>
   TSAN_INTERCEPT(pthread_detach);<br>
+  TSAN_INTERCEPT(pthread_exit);<br>
   #if SANITIZER_LINUX<br>
   TSAN_INTERCEPT(pthread_tryjoin_np);<br>
   TSAN_INTERCEPT(pthread_timedjoin_np);<br>
<br>
Added: compiler-rt/trunk/test/tsan/thread_exit.c<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/tsan/thread_exit.c?rev=353385&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/tsan/thread_exit.c?rev=353385&view=auto</a><br>
==============================================================================<br>
--- compiler-rt/trunk/test/tsan/thread_exit.c (added)<br>
+++ compiler-rt/trunk/test/tsan/thread_exit.c Thu Feb  7 02:46:02 2019<br>
@@ -0,0 +1,25 @@<br>
+// RUN: %clang_tsan -O1 %s -o %t && %run %t 2>&1 | FileCheck %s<br>
+#include "test.h"<br>
+<br>
+int var;<br>
+<br>
+void *Thread(void *x) {<br>
+  pthread_exit(&var);<br>
+  return 0;<br>
+}<br>
+<br>
+int main() {<br>
+  pthread_t t;<br>
+  pthread_create(&t, 0, Thread, 0);<br>
+  void *retval = 0;<br>
+  pthread_join(t, &retval);<br>
+  if (retval != &var) {<br>
+    fprintf(stderr, "Unexpected return value\n");<br>
+    exit(1);<br>
+  }<br>
+  fprintf(stderr, "PASS\n");<br>
+  return 0;<br>
+}<br>
+<br>
+// CHECK-NOT: WARNING: ThreadSanitizer:<br>
+// CHECK: PASS<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</blockquote></div>