[compiler-rt] 25feff4 - [sanitizer] Start background thread once
    Vitaly Buka via llvm-commits 
    llvm-commits at lists.llvm.org
       
    Thu Dec  2 11:45:41 PST 2021
    
    
  
Author: Vitaly Buka
Date: 2021-12-02T11:45:37-08:00
New Revision: 25feff4b2e815aeda777368625fb75e52a77753a
URL: https://github.com/llvm/llvm-project/commit/25feff4b2e815aeda777368625fb75e52a77753a
DIFF: https://github.com/llvm/llvm-project/commit/25feff4b2e815aeda777368625fb75e52a77753a.diff
LOG: [sanitizer] Start background thread once
Reviewed By: morehouse
Differential Revision: https://reviews.llvm.org/D114933
Added: 
    
Modified: 
    compiler-rt/lib/sanitizer_common/sanitizer_common_libcdep.cpp
Removed: 
    
################################################################################
diff  --git a/compiler-rt/lib/sanitizer_common/sanitizer_common_libcdep.cpp b/compiler-rt/lib/sanitizer_common/sanitizer_common_libcdep.cpp
index bc4b477e350f..0a065fefb814 100644
--- a/compiler-rt/lib/sanitizer_common/sanitizer_common_libcdep.cpp
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_common_libcdep.cpp
@@ -29,6 +29,7 @@ void SetSoftRssLimitExceededCallback(void (*Callback)(bool exceeded)) {
 SANITIZER_WEAK_ATTRIBUTE StackDepotStats StackDepotGetStats() { return {}; }
 
 void *BackgroundThread(void *arg) {
+  VPrintf(1, "%s: Started BackgroundThread\n", SanitizerToolName);
   const uptr hard_rss_limit_mb = common_flags()->hard_rss_limit_mb;
   const uptr soft_rss_limit_mb = common_flags()->soft_rss_limit_mb;
   const bool heap_profile = common_flags()->heap_profile;
@@ -112,8 +113,16 @@ void MaybeStartBackgroudThread() {
   if (!common_flags()->hard_rss_limit_mb &&
       !common_flags()->soft_rss_limit_mb &&
       !common_flags()->heap_profile) return;
-  if (!&real_pthread_create) return;  // Can't spawn the thread anyway.
-  internal_start_thread(BackgroundThread, nullptr);
+  if (!&real_pthread_create) {
+    VPrintf(1, "%s: real_pthread_create undefined\n", SanitizerToolName);
+    return;  // Can't spawn the thread anyway.
+  }
+
+  static bool started = false;
+  if (!started) {
+    started = true;
+    internal_start_thread(BackgroundThread, nullptr);
+  }
 #endif
 }
 
        
    
    
More information about the llvm-commits
mailing list