Uploaded image for project: 'Thrift'
  1. Thrift
  2. THRIFT-2755

ThreadSanitizer reports data race in ThreadManager::Impl::addWorker

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 0.9.3, 0.10.0
    • Fix Version/s: 0.10.0
    • Component/s: C++ - Library
    • Labels:
      None
    • Environment:

      Ubuntu 12.04 x86_64, clang 3.3

      Description

      ThreadSanitizer reports the following data race:

      ==================
      WARNING: ThreadSanitizer: data race (pid=21413)
        Read of size 8 at 0x7d4c007eb0c8 by main thread (mutexes: write M250):
          #0 apache::thrift::concurrency::ThreadManager::Impl::addWorker(unsigned long) /home/golov/project/Framework/ThirdParty/Thrift/Implementation/thrift-1.0.0_dev_f459868/lib/cpp/src/thrift/concurrency/ThreadManager.cpp:363 (exe+0x000000892e55)
          #1 apache::thrift::concurrency::SimpleThreadManager::start() /home/golov/project/Framework/ThirdParty/Thrift/Implementation/thrift-1.0.0_dev_f459868/lib/cpp/src/thrift/concurrency/ThreadManager.cpp:563 (exe+0x0000008a93ad)
          #2 main /home/golov/project/Project/Main.cpp:201 (exe+0x000000758aa3)
      
        Previous write of size 8 at 0x7d4c007eb0c8 by thread T7 (mutexes: write M249):
          #0 apache::thrift::concurrency::ThreadManager::Worker::run() /home/golov/project/Framework/ThirdParty/Thrift/Implementation/thrift-1.0.0_dev_f459868/lib/cpp/src/thrift/concurrency/ThreadManager.cpp:251 (exe+0x0000008ac9eb)
          #1 apache::thrift::concurrency::PthreadThread::threadMain(void*) /home/golov/project/Framework/ThirdParty/Thrift/Implementation/thrift-1.0.0_dev_f459868/lib/cpp/src/thrift/concurrency/PosixThreadFactory.cpp:207 (exe+0x0000008c4e70)
      
        Location is heap block of size 440 at 0x7d4c007eb0c0 allocated by main thread:
          #0 operator new(unsigned long) ??:0 (exe+0x000000726b56)
          #1 apache::thrift::concurrency::ThreadManager::newSimpleThreadManager(unsigned long, unsigned long) /home/golov/project/Framework/ThirdParty/Thrift/Implementation/thrift-1.0.0_dev_f459868/lib/cpp/src/thrift/concurrency/ThreadManager.cpp:579 (exe+0x000000894db3)
          #2 main /home/golov/project/Project/Main.cpp:197 (exe+0x000000758983)
      
        Mutex M250 created at:
          #0 pthread_mutex_init ??:0 (exe+0x000000729e65)
          #1 apache::thrift::concurrency::Mutex::DEFAULT_INITIALIZER(void*) /home/golov/project/Framework/ThirdParty/Thrift/Implementation/thrift-1.0.0_dev_f459868/lib/cpp/src/thrift/concurrency/Mutex.cpp:209 (exe+0x0000008bf8e2)
      rc/thrift/concurrency/Mutex.cpp:122 (exe+0x0000008c2a34)
          #3 impl /home/golov/project/Framework/ThirdParty/Thrift/Implementation/thrift-1.0.0_dev_f459868/lib/cpp/src/thrift/concurrency/Mutex.cpp:124 (exe+0x0000008c0390)
          #4 Mutex /home/golov/project/Framework/ThirdParty/Thrift/Implementation/thrift-1.0.0_dev_f459868/lib/cpp/src/thrift/concurrency/Mutex.cpp:195 (exe+0x0000008bf5a0)
          #5 Impl /home/golov/project/Framework/ThirdParty/Thrift/Implementation/thrift-1.0.0_dev_f459868/lib/cpp/src/thrift/concurrency/Monitor.cpp:49 (exe+0x0000008c4aff)
          #6 Impl /home/golov/project/Framework/ThirdParty/Thrift/Implementation/thrift-1.0.0_dev_f459868/lib/cpp/src/thrift/concurrency/Monitor.cpp:51 (exe+0x0000008c34c0)
          #7 Monitor /home/golov/project/Framework/ThirdParty/Thrift/Implementation/thrift-1.0.0_dev_f459868/lib/cpp/src/thrift/concurrency/Monitor.cpp:187 (exe+0x0000008c2aee)
          #8 Impl /home/golov/project/Framework/ThirdParty/Thrift/Implementation/thrift-1.0.0_dev_f459868/lib/cpp/src/thrift/concurrency/ThreadManager.cpp:63 (exe+0x0000008a8ea4)
          #9 SimpleThreadManager /home/golov/project/Framework/ThirdParty/Thrift/Implementation/thrift-1.0.0_dev_f459868/lib/cpp/src/thrift/concurrency/ThreadManager.cpp:557 (exe+0x0000008a8b53)
          #10 SimpleThreadManager /home/golov/project/Framework/ThirdParty/Thrift/Implementation/thrift-1.0.0_dev_f459868/lib/cpp/src/thrift/concurrency/ThreadManager.cpp:558 (exe+0x000000897020)
          #11 apache::thrift::concurrency::ThreadManager::newSimpleThreadManager(unsigned long, unsigned long) /home/golov/project/Framework/ThirdParty/Thrift/Implementation/thrift-1.0.0_dev_f459868/lib/cpp/src/thrift/concurrency/ThreadManager.cpp:579 (exe+0x000000894df2)
          #12 main /home/golov/project/Project/Main.cpp:197 (exe+0x000000758983)
      
        Mutex M249 created at:
          #0 pthread_mutex_init ??:0 (exe+0x000000729e65)
          #1 apache::thrift::concurrency::Mutex::DEFAULT_INITIALIZER(void*) /home/golov/project/Framework/ThirdParty/Thrift/Implementation/thrift-1.0.0_dev_f459868/lib/cpp/src/thrift/concurrency/Mutex.cpp:209 (exe+0x0000008bf8e2)
          #2 impl /home/golov/project/Framework/ThirdParty/Thrift/Implementation/thrift-1.0.0_dev_f459868/lib/cpp/src/thrift/concurrency/Mutex.cpp:122 (exe+0x0000008c2a34)
          #3 impl /home/golov/project/Framework/ThirdParty/Thrift/Implementation/thrift-1.0.0_dev_f459868/lib/cpp/src/thrift/concurrency/Mutex.cpp:124 (exe+0x0000008c0390)
          #4 Mutex /home/golov/project/Framework/ThirdParty/Thrift/Implementation/thrift-1.0.0_dev_f459868/lib/cpp/src/thrift/concurrency/Mutex.cpp:195 (exe+0x0000008bf5a0)
          #5 Impl /home/golov/project/Framework/ThirdParty/Thrift/Implementation/thrift-1.0.0_dev_f459868/lib/cpp/src/thrift/concurrency/ThreadManager.cpp:63 (exe+0x0000008a8e2e)
          #6 SimpleThreadManager /home/golov/project/Framework/ThirdParty/Thrift/Implementation/thrift-1.0.0_dev_f459868/lib/cpp/src/thrift/concurrency/ThreadManager.cpp:557 (exe+0x0000008a8b53)
          #7 SimpleThreadManager /home/golov/project/Framework/ThirdParty/Thrift/Implementation/thrift-1.0.0_dev_f459868/lib/cpp/src/thrift/concurrency/ThreadManager.cpp:558 (exe+0x000000897020)
          #8 apache::thrift::concurrency::ThreadManager::newSimpleThreadManager(unsigned long, unsigned long) /home/golov/project/Framework/ThirdParty/Thrift/Implementation/thrift-1.0.0_dev_f459868/lib/cpp/src/thrift/concurrency/ThreadManager.cpp:579 (exe+0x000000894df2)
          #9 main /home/golov/project/Project/Main.cpp:197 (exe+0x000000758983)
      
        Thread T7 (tid=21516, running) created by main thread at:
          #0 pthread_create ??:0 (exe+0x0000007298b2)
          #1 apache::thrift::concurrency::PthreadThread::start() /home/golov/project/Framework/ThirdParty/Thrift/Implementation/thrift-1.0.0_dev_f459868/lib/cpp/src/thrift/concurrency/PosixThreadFactory.cpp:146 (exe+0x0000008c90f9)
          #2 apache::thrift::concurrency::ThreadManager::Impl::addWorker(unsigned long) /home/golov/project/Framework/ThirdParty/Thrift/Implementation/thrift-1.0.0_dev_f459868/lib/cpp/src/thrift/concurrency/ThreadManager.cpp:357 (exe+0x000000892bb1)
          #3 apache::thrift::concurrency::SimpleThreadManager::start() /home/golov/project/Framework/ThirdParty/Thrift/Implementation/thrift-1.0.0_dev_f459868/lib/cpp/src/thrift/concurrency/ThreadManager.cpp:563 (exe+0x0000008a93ad)
          #4 main /home/golov/project/Project/Main.cpp:201 (exe+0x000000758aa3)
      
      SUMMARY: ThreadSanitizer: data race /home/golov/project/Framework/ThirdParty/Thrift/Implementation/thrift-1.0.0_dev_f459868/lib/cpp/src/thrift/concurrency/ThreadManager.cpp:363 apache::thrift::concurrency::ThreadManager::Impl::addWorker(unsigned long)
      ==================
      

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                jking3 James E. King III
                Reporter:
                mgolov Maksim Golov
              • Votes:
                0 Vote for this issue
                Watchers:
                3 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: