[llvm] e0968ad - call ::pthread_detach on llvm_execute_on_thread_impl

Nathan James via llvm-commits llvm-commits at lists.llvm.org
Thu Jul 2 06:41:16 PDT 2020


Author: Nathan James
Date: 2020-07-02T14:41:05+01:00
New Revision: e0968ad45948d5b7a89c468576e660381c88148f

URL: https://github.com/llvm/llvm-project/commit/e0968ad45948d5b7a89c468576e660381c88148f
DIFF: https://github.com/llvm/llvm-project/commit/e0968ad45948d5b7a89c468576e660381c88148f.diff

LOG: call ::pthread_detach on llvm_execute_on_thread_impl

Fixes all TSAN bugs in clangd

Reviewed By: sammccall

Differential Revision: https://reviews.llvm.org/D83039

Added: 
    

Modified: 
    llvm/lib/Support/Unix/Threading.inc

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Support/Unix/Threading.inc b/llvm/lib/Support/Unix/Threading.inc
index 9c1f1166b9ec..2d0aacabf092 100644
--- a/llvm/lib/Support/Unix/Threading.inc
+++ b/llvm/lib/Support/Unix/Threading.inc
@@ -94,6 +94,10 @@ llvm_execute_on_thread_impl(void *(*ThreadFunc)(void *), void *Arg,
     if ((errnum = ::pthread_join(Thread, nullptr)) != 0) {
       ReportErrnumFatal("pthread_join failed", errnum);
     }
+  } else if (JP == JoiningPolicy::Detach) {
+    if ((errnum = ::pthread_detach(Thread)) != 0) {
+      ReportErrnumFatal("pthread_detach failed", errnum);
+    }
   }
 }
 


        


More information about the llvm-commits mailing list