[NFC][HWASAN] Fix pthread_attr_getdetachstate use
authorVitaly Buka <vitalybuka@google.com>
Thu, 18 May 2023 07:53:53 +0000 (00:53 -0700)
committerVitaly Buka <vitalybuka@google.com>
Thu, 18 May 2023 08:07:20 +0000 (01:07 -0700)
Luckely of Linux PTHREAD_CREATE_DETACHED is 1.

compiler-rt/lib/hwasan/hwasan_interceptors.cpp

index f87e6a2..443bfe8 100644 (file)
@@ -68,9 +68,10 @@ INTERCEPTOR(int, pthread_create, void *thread, void *attr,
             void *(*callback)(void *), void *param) {
   EnsureMainThreadIDIsCorrect();
   ScopedTaggingDisabler tagging_disabler;
-  int detached = 0;
-  if (attr)
-    pthread_attr_getdetachstate(attr, &detached);
+  bool detached = [attr]() {
+    int d = 0;
+    return attr && !pthread_attr_getdetachstate(attr, &d) && IsStateDetached(d);
+  }();
   ThreadStartArg *A = (ThreadStartArg *)InternalAlloc(sizeof(ThreadStartArg));
   ScopedBlockSignals block(&A->starting_sigset_);
   // ASAN uses the same approach to disable leaks from pthread_create.