MJY-HUST opened a new issue, #2864:
URL: https://github.com/apache/brpc/issues/2864

   * 项目中依赖brpc作为第三方库时出现的报错问题: 
brpc中的mutex.cpp覆盖了pthread_mutex_lock的实现,疑似导致tsan识别不了bthread内部实现的pthread_mutex_lock,导致出现了告警,请问有办法解决这个warning吗?一个简单的复现方式
   
    ```cpp
   #include <bthread/bthread.h>
   #include <gflags/gflags.h>
   #include <gtest/gtest.h>
   
   namespace my::test {
   
   class TsanCheckTest : public ::testing::Test {};
   
   int counter;
   std::mutex mutex_std;
   pthread_mutex_t mu;
   const int kIncrementsPerThread = 100;
   void* Locker(void*) {
     for (int i = 0; i < kIncrementsPerThread; ++i) {
       pthread_mutex_lock(&mu);
       counter++;
       pthread_mutex_unlock(&mu);
     }
     return nullptr;
   }
   
   TEST_F(TsanCheckTest, MutexUsedInPthread) {
     pthread_mutex_init(&mu, nullptr);
     const int num_threads = 8;
     pthread_t th[num_threads];
   
     counter = 0;
     for (int i = 0; i < num_threads; ++i) {
       ASSERT_EQ(0, pthread_create(&th[i], nullptr, Locker, nullptr));
     }
     for (int i = 0; i < num_threads; ++i) {
       ASSERT_EQ(0, pthread_join(th[i], nullptr));
     }
     ASSERT_EQ(counter, num_threads * kIncrementsPerThread);
   }
   
   TEST_F(TsanCheckTest, MutexUsedInBthread) {
     const int num_threads = 8;
     bthread_t th[num_threads];
   
     counter = 0;
     for (int i = 0; i < num_threads; ++i) {
       ASSERT_EQ(0, bthread_start_urgent(&th[i], nullptr, Locker, nullptr));
     }
     for (int i = 0; i < num_threads; ++i) {
       ASSERT_EQ(0, bthread_join(th[i], nullptr));
     }
     ASSERT_EQ(counter, num_threads * kIncrementsPerThread);
   }
   
   }  // namespace my::test
   ```
   
   
   
![image](https://github.com/user-attachments/assets/9a7bff18-47d7-4f01-86f7-a99b521d07ca)
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscr...@brpc.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@brpc.apache.org
For additional commands, e-mail: dev-h...@brpc.apache.org

Reply via email to