<div dir="ltr">



















<p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:"Calibri",sans-serif"><span class="gmail-transaction-comment">Hi Vitaly,</span></p><p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:"Calibri",sans-serif"><span class="gmail-transaction-comment"><br></span></p><p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:"Calibri",sans-serif"><span class="gmail-transaction-comment">It seems that this commit has caused
a test failure.<span></span></span></p>

<p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:"Calibri",sans-serif">      FAIL: ThreadSanitizer-powerpc64le::clockwait_double_lock.c<span class="gmail-transaction-comment"><span></span></span></p>

<p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:"Calibri",sans-serif"><br></p><p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:"Calibri",sans-serif"><span class="gmail-transaction-comment">You can see here: </span><a href="http://lab.llvm.org:8011/#/builders/105/builds/1951" style="color:rgb(5,99,193);text-decoration:underline">http://lab.llvm.org:8011/#/builders/105/builds/1951</a>.</p><p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:"Calibri",sans-serif"><br><span></span></p>

<p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:"Calibri",sans-serif">Could you please fix it<span class="gmail-transaction-comment">? <span></span></span></p>

<p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:"Calibri",sans-serif"><span class="gmail-transaction-comment">Thanks,</span></p><p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:"Calibri",sans-serif"><br><span class="gmail-transaction-comment"><span></span></span></p>

<p class="MsoNormal" style="margin:0cm 0cm 8pt;line-height:107%;font-size:11pt;font-family:"Calibri",sans-serif"><span class="gmail-transaction-comment">Ying</span><span></span></p>





</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Nov 18, 2020 at 11:02 AM Vitaly Buka 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:1px solid rgb(204,204,204);padding-left:1ex"><br>
Author: Vitaly Buka<br>
Date: 2020-11-18T03:01:58-08:00<br>
New Revision: 16eb853ffdd1a1ad7c95455b7795c5f004402e46<br>
<br>
URL: <a href="https://github.com/llvm/llvm-project/commit/16eb853ffdd1a1ad7c95455b7795c5f004402e46" rel="noreferrer" target="_blank">https://github.com/llvm/llvm-project/commit/16eb853ffdd1a1ad7c95455b7795c5f004402e46</a><br>
DIFF: <a href="https://github.com/llvm/llvm-project/commit/16eb853ffdd1a1ad7c95455b7795c5f004402e46.diff" rel="noreferrer" target="_blank">https://github.com/llvm/llvm-project/commit/16eb853ffdd1a1ad7c95455b7795c5f004402e46.diff</a><br>
<br>
LOG: [tsan] Add pthread_cond_clockwait interceptor<br>
<br>
Fixes <a href="https://github.com/google/sanitizers/issues/1259" rel="noreferrer" target="_blank">https://github.com/google/sanitizers/issues/1259</a><br>
<br>
Reviewed By: dvyukov<br>
<br>
Differential Revision: <a href="https://reviews.llvm.org/D91684" rel="noreferrer" target="_blank">https://reviews.llvm.org/D91684</a><br>
<br>
Added: <br>
    compiler-rt/test/tsan/Linux/clockwait_double_lock.c<br>
<br>
Modified: <br>
    compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp<br>
<br>
Removed: <br>
<br>
<br>
<br>
################################################################################<br>
diff  --git a/compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp b/compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp<br>
index 74e6ae6ea74a..7a731df34d80 100644<br>
--- a/compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp<br>
+++ b/compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp<br>
@@ -1202,6 +1202,21 @@ INTERCEPTOR(int, pthread_cond_timedwait, void *c, void *m, void *abstime) {<br>
       m);<br>
 }<br>
<br>
+#if SANITIZER_LINUX<br>
+INTERCEPTOR(int, pthread_cond_clockwait, void *c, void *m,<br>
+            __sanitizer_clockid_t clock, void *abstime) {<br>
+  void *cond = init_cond(c);<br>
+  SCOPED_TSAN_INTERCEPTOR(pthread_cond_clockwait, cond, m, clock, abstime);<br>
+  return cond_wait(<br>
+      thr, pc, &si,<br>
+      [=]() { return REAL(pthread_cond_clockwait)(cond, m, clock, abstime); },<br>
+      cond, m);<br>
+}<br>
+#define TSAN_MAYBE_PTHREAD_COND_CLOCKWAIT TSAN_INTERCEPT(pthread_cond_clockwait)<br>
+#else<br>
+#define TSAN_MAYBE_PTHREAD_COND_CLOCKWAIT<br>
+#endif<br>
+<br>
 #if SANITIZER_MAC<br>
 INTERCEPTOR(int, pthread_cond_timedwait_relative_np, void *c, void *m,<br>
             void *reltime) {<br>
@@ -2716,6 +2731,8 @@ void InitializeInterceptors() {<br>
   TSAN_INTERCEPT_VER(pthread_cond_timedwait, PTHREAD_ABI_BASE);<br>
   TSAN_INTERCEPT_VER(pthread_cond_destroy, PTHREAD_ABI_BASE);<br>
<br>
+  TSAN_MAYBE_PTHREAD_COND_CLOCKWAIT;<br>
+<br>
   TSAN_INTERCEPT(pthread_mutex_init);<br>
   TSAN_INTERCEPT(pthread_mutex_destroy);<br>
   TSAN_INTERCEPT(pthread_mutex_trylock);<br>
<br>
diff  --git a/compiler-rt/test/tsan/Linux/clockwait_double_lock.c b/compiler-rt/test/tsan/Linux/clockwait_double_lock.c<br>
new file mode 100644<br>
index 000000000000..8378fc3c7c82<br>
--- /dev/null<br>
+++ b/compiler-rt/test/tsan/Linux/clockwait_double_lock.c<br>
@@ -0,0 +1,31 @@<br>
+// Regression test for <a href="https://github.com/google/sanitizers/issues/1259" rel="noreferrer" target="_blank">https://github.com/google/sanitizers/issues/1259</a><br>
+// RUN: %clang_tsan -O1 %s -o %t && %run %t<br>
+<br>
+#define _GNU_SOURCE<br>
+#include <pthread.h><br>
+<br>
+pthread_cond_t cv;<br>
+pthread_mutex_t mtx;<br>
+<br>
+void *fn(void *vp) {<br>
+  pthread_mutex_lock(&mtx);<br>
+  pthread_cond_signal(&cv);<br>
+  pthread_mutex_unlock(&mtx);<br>
+  return NULL;<br>
+}<br>
+<br>
+int main() {<br>
+  pthread_mutex_lock(&mtx);<br>
+<br>
+  pthread_t tid;<br>
+  pthread_create(&tid, NULL, fn, NULL);<br>
+<br>
+  struct timespec ts;<br>
+  clock_gettime(CLOCK_MONOTONIC, &ts);<br>
+  ts.tv_sec += 10;<br>
+  pthread_cond_clockwait(&cv, &mtx, CLOCK_MONOTONIC, &ts);<br>
+  pthread_mutex_unlock(&mtx);<br>
+<br>
+  pthread_join(tid, NULL);<br>
+  return 0;<br>
+}<br>
<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><br clear="all"><br>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><font size="2"><span style="font-family:arial,helvetica,sans-serif"></span></font><font size="2" face="Calibri"><span style="font-size:11pt"><font size="2"><span style="font-size:10pt"><font face="Arial" color="#1F497D">Ying Yi<br>SN Systems - Sony Interactive Entertainment</font></span></font></span></font><br></div></div></div></div></div></div></div></div>