Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TSan: data race in Histogram::operator() #11641

Open
JosiahWI opened this issue Aug 2, 2024 · 0 comments
Open

TSan: data race in Histogram::operator() #11641

JosiahWI opened this issue Aug 2, 2024 · 0 comments
Labels
Milestone

Comments

@JosiahWI
Copy link
Contributor

JosiahWI commented Aug 2, 2024

WARNING: ThreadSanitizer: data race (pid=9915)
  Write of size 8 at 0xffff937ffd70 by thread T2 (mutexes: write M0):
    #0 ts::Histogram<7, 2>::operator()(unsigned long) /trafficserver/include/tsutil/Histogram.h:163 (traffic_server+0x9f8674) (BuildId: 7206bc40bbaaebae6ec8626a5203b22a73f3cecf)
    #1 EThread::Metrics::record_loop_time(long) <null> (traffic_server+0xed3824) (BuildId: 7206bc40bbaaebae6ec8626a5203b22a73f3cecf)
    #2 EThread::execute_regular() /trafficserver/src/iocore/eventsystem/UnixEThread.cc:310 (traffic_server+0xed2580) (BuildId: 7206bc40bbaaebae6ec8626a5203b22a73f3cecf)
    #3 EThread::execute() /trafficserver/src/iocore/eventsystem/UnixEThread.cc:350 (traffic_server+0xed2780) (BuildId: 7206bc40bbaaebae6ec8626a5203b22a73f3cecf)
    #4 spawn_thread_internal /trafficserver/src/iocore/eventsystem/Thread.cc:75 (traffic_server+0xed0220) (BuildId: 7206bc40bbaaebae6ec8626a5203b22a73f3cecf)
    #5 <null> <null> (libtsan.so.2+0x555e4) (BuildId: 4fc6d4b1d08e85e4139b0e07fb335a013192e924)

  Previous read of size 8 at 0xffff937ffd70 by thread T5 (mutexes: write M1, write M2, write M3):
    #0 ts::Histogram<7, 2>::operator+=(ts::Histogram<7, 2> const&) /trafficserver/include/tsutil/Histogram.h:136 (traffic_server+0xed4394) (BuildId: 7206bc40bbaaebae6ec8626a5203b22a73f3cecf)
    #1 EThread::Metrics::summarize(EThread::Metrics&) /trafficserver/src/iocore/eventsystem/UnixEThread.cc:405 (traffic_server+0xed2b8c) (BuildId: 7206bc40bbaaebae6ec8626a5203b22a73f3cecf)
    #2 EventMetricStatSync /trafficserver/src/iocore/eventsystem/UnixEventProcessor.cc:95 (traffic_server+0xed5bac) (BuildId: 7206bc40bbaaebae6ec8626a5203b22a73f3cecf)
    #3 RecExecRawStatSyncCbs() /trafficserver/src/records/RecRawStats.cc:386 (traffic_server+0xeba044) (BuildId: 7206bc40bbaaebae6ec8626a5203b22a73f3cecf)
    #4 raw_stat_sync_cont::exec_callbacks(int, Event*) /trafficserver/src/iocore/eventsystem/RecProcess.cc:91 (traffic_server+0xedcd0c) (BuildId: 7206bc40bbaaebae6ec8626a5203b22a73f3cecf)
    #5 Continuation::handleEvent(int, void*) /trafficserver/include/iocore/eventsystem/Continuation.h:228 (traffic_server+0x8e5740) (BuildId: 7206bc40bbaaebae6ec8626a5203b22a73f3cecf)
    #6 EThread::process_event(Event*, int) /trafficserver/src/iocore/eventsystem/UnixEThread.cc:163 (traffic_server+0xed1a70) (BuildId: 7206bc40bbaaebae6ec8626a5203b22a73f3cecf)
    #7 EThread::execute_regular() /trafficserver/src/iocore/eventsystem/UnixEThread.cc:270 (traffic_server+0xed2294) (BuildId: 7206bc40bbaaebae6ec8626a5203b22a73f3cecf)
    #8 EThread::execute() /trafficserver/src/iocore/eventsystem/UnixEThread.cc:350 (traffic_server+0xed2780) (BuildId: 7206bc40bbaaebae6ec8626a5203b22a73f3cecf)
    #9 spawn_thread_internal /trafficserver/src/iocore/eventsystem/Thread.cc:75 (traffic_server+0xed0220) (BuildId: 7206bc40bbaaebae6ec8626a5203b22a73f3cecf)
    #10 <null> <null> (libtsan.so.2+0x555e4) (BuildId: 4fc6d4b1d08e85e4139b0e07fb335a013192e924)

  Location is heap block of size 1101696 at 0xffff936f3000 allocated by main thread:
    #0 operator new(unsigned long) <null> (libtsan.so.2+0xa7418) (BuildId: 4fc6d4b1d08e85e4139b0e07fb335a013192e924)
    #1 EventProcessor::spawn_event_threads(int, int, unsigned long) /trafficserver/src/iocore/eventsystem/UnixEventProcessor.cc:451 (traffic_server+0xed7b7c) (BuildId: 7206bc40bbaaebae6ec8626a5203b22a73f3cecf)
    #2 EventProcessor::start(int, unsigned long) /trafficserver/src/iocore/eventsystem/UnixEventProcessor.cc:550 (traffic_server+0xed84f0) (BuildId: 7206bc40bbaaebae6ec8626a5203b22a73f3cecf)
    #3 main /trafficserver/src/traffic_server/traffic_server.cc:2110 (traffic_server+0x8fc9ac) (BuildId: 7206bc40bbaaebae6ec8626a5203b22a73f3cecf)

  Mutex M0 (0xffff937f3bd0) created at:
    #0 pthread_mutex_init <null> (libtsan.so.2+0x5f218) (BuildId: 4fc6d4b1d08e85e4139b0e07fb335a013192e924)
    #1 ink_mutex_init(pthread_mutex_t*) /trafficserver/src/tscore/ink_mutex.cc:54 (traffic_server+0x93aa0c) (BuildId: 7206bc40bbaaebae6ec8626a5203b22a73f3cecf)
    #2 ProtectedQueue::ProtectedQueue() /trafficserver/src/iocore/dns/../eventsystem/P_ProtectedQueue.h:38 (traffic_server+0xc2bbd4) (BuildId: 7206bc40bbaaebae6ec8626a5203b22a73f3cecf)
    #3 EThread::EThread(ThreadType, int) /trafficserver/src/iocore/eventsystem/UnixEThread.cc:89 (traffic_server+0xed0cc0) (BuildId: 7206bc40bbaaebae6ec8626a5203b22a73f3cecf)
    #4 EventProcessor::spawn_event_threads(int, int, unsigned long) /trafficserver/src/iocore/eventsystem/UnixEventProcessor.cc:451 (traffic_server+0xed7bbc) (BuildId: 7206bc40bbaaebae6ec8626a5203b22a73f3cecf)
    #5 EventProcessor::start(int, unsigned long) /trafficserver/src/iocore/eventsystem/UnixEventProcessor.cc:550 (traffic_server+0xed84f0) (BuildId: 7206bc40bbaaebae6ec8626a5203b22a73f3cecf)
    #6 main /trafficserver/src/traffic_server/traffic_server.cc:2110 (traffic_server+0x8fc9ac) (BuildId: 7206bc40bbaaebae6ec8626a5203b22a73f3cecf)

  Mutex M1 (0xffff932c7bd0) created at:
    #0 pthread_mutex_init <null> (libtsan.so.2+0x5f218) (BuildId: 4fc6d4b1d08e85e4139b0e07fb335a013192e924)
    #1 ink_mutex_init(pthread_mutex_t*) /trafficserver/src/tscore/ink_mutex.cc:54 (traffic_server+0x93aa0c) (BuildId: 7206bc40bbaaebae6ec8626a5203b22a73f3cecf)
    #2 ProtectedQueue::ProtectedQueue() /trafficserver/src/iocore/dns/../eventsystem/P_ProtectedQueue.h:38 (traffic_server+0xc2bbd4) (BuildId: 7206bc40bbaaebae6ec8626a5203b22a73f3cecf)
    #3 EThread::EThread(ThreadType, int) /trafficserver/src/iocore/eventsystem/UnixEThread.cc:89 (traffic_server+0xed0cc0) (BuildId: 7206bc40bbaaebae6ec8626a5203b22a73f3cecf)
    #4 EventProcessor::spawn_event_threads(int, int, unsigned long) /trafficserver/src/iocore/eventsystem/UnixEventProcessor.cc:451 (traffic_server+0xed7bbc) (BuildId: 7206bc40bbaaebae6ec8626a5203b22a73f3cecf)
    #5 TasksProcessor::start(int, unsigned long) /trafficserver/src/iocore/eventsystem/Tasks.cc:42 (traffic_server+0xecfa08) (BuildId: 7206bc40bbaaebae6ec8626a5203b22a73f3cecf)
    #6 main /trafficserver/src/traffic_server/traffic_server.cc:2155 (traffic_server+0x8fcca0) (BuildId: 7206bc40bbaaebae6ec8626a5203b22a73f3cecf)

  Mutex M2 (0xffff97803790) created at:
    #0 pthread_mutex_init <null> (libtsan.so.2+0x5f218) (BuildId: 4fc6d4b1d08e85e4139b0e07fb335a013192e924)
    #1 ink_mutex_init(pthread_mutex_t*) /trafficserver/src/tscore/ink_mutex.cc:54 (traffic_server+0x93aa0c) (BuildId: 7206bc40bbaaebae6ec8626a5203b22a73f3cecf)
    #2 ProxyMutex::init() /trafficserver/include/iocore/eventsystem/Lock.h:245 (traffic_server+0x8e4df4) (BuildId: 7206bc40bbaaebae6ec8626a5203b22a73f3cecf)
    #3 new_ProxyMutex() /trafficserver/include/iocore/eventsystem/Lock.h:677 (traffic_server+0x8e5490) (BuildId: 7206bc40bbaaebae6ec8626a5203b22a73f3cecf)
    #4 RecProcessStart() /trafficserver/src/iocore/eventsystem/RecProcess.cc:183 (traffic_server+0xedc684) (BuildId: 7206bc40bbaaebae6ec8626a5203b22a73f3cecf)
    #5 main /trafficserver/src/traffic_server/traffic_server.cc:2157 (traffic_server+0x8fcca4) (BuildId: 7206bc40bbaaebae6ec8626a5203b22a73f3cecf)

  Mutex M3 (0xffff9b243570) created at:
    #0 pthread_mutex_init <null> (libtsan.so.2+0x5f218) (BuildId: 4fc6d4b1d08e85e4139b0e07fb335a013192e924)
    #1 ink_mutex_init(pthread_mutex_t*) /trafficserver/src/tscore/ink_mutex.cc:54 (traffic_server+0x93aa0c) (BuildId: 7206bc40bbaaebae6ec8626a5203b22a73f3cecf)
    #2 rec_mutex_init(RecMutex*, char const*) /trafficserver/src/records/RecMutex.cc:32 (traffic_server+0xeaf0b4) (BuildId: 7206bc40bbaaebae6ec8626a5203b22a73f3cecf)
    #3 RecRecordInit(RecRecord*) /trafficserver/src/records/RecUtils.cc:39 (traffic_server+0xeaf490) (BuildId: 7206bc40bbaaebae6ec8626a5203b22a73f3cecf)
    #4 RecAlloc(RecT, char const*, RecDataT) /trafficserver/src/records/RecUtils.cc:62 (traffic_server+0xeaf700) (BuildId: 7206bc40bbaaebae6ec8626a5203b22a73f3cecf)
    #5 register_record /trafficserver/src/records/RecCore.cc:95 (traffic_server+0xe961c4) (BuildId: 7206bc40bbaaebae6ec8626a5203b22a73f3cecf)
    #6 RecRegisterStat(RecT, char const*, RecDataT, RecData, RecPersistT) /trafficserver/src/records/RecCore.cc:720 (traffic_server+0xe98a64) (BuildId: 7206bc40bbaaebae6ec8626a5203b22a73f3cecf)
    #7 _RecRegisterRawStat(RecRawStatBlock*, RecT, char const*, RecDataT, RecPersistT, int, int (*)(char const*, RecDataT, RecData*, RecRawStatBlock*, int)) /trafficserver/src/records/RecRawStats.cc:64 (traffic_server+0xeb8174) (BuildId: 7206bc40bbaaebae6ec8626a5203b22a73f3cecf)
    #8 EventProcessor::start(int, unsigned long) /trafficserver/src/iocore/eventsystem/UnixEventProcessor.cc:544 (traffic_server+0xed84a8) (BuildId: 7206bc40bbaaebae6ec8626a5203b22a73f3cecf)
    #9 main /trafficserver/src/traffic_server/traffic_server.cc:2110 (traffic_server+0x8fc9ac) (BuildId: 7206bc40bbaaebae6ec8626a5203b22a73f3cecf)

  Thread T2 '[ET_NET 0]' (tid=9922, running) created by main thread at:
    #0 pthread_create <null> (libtsan.so.2+0x6073c) (BuildId: 4fc6d4b1d08e85e4139b0e07fb335a013192e924)
    #1 ink_thread_create /trafficserver/include/tscore/ink_thread.h:129 (traffic_server+0xecfdb4) (BuildId: 7206bc40bbaaebae6ec8626a5203b22a73f3cecf)
    #2 Thread::start(char const*, void*, unsigned long, std::function<void ()> const&) /trafficserver/src/iocore/eventsystem/Thread.cc:92 (traffic_server+0xed0354) (BuildId: 7206bc40bbaaebae6ec8626a5203b22a73f3cecf)
    #3 EventProcessor::spawn_event_threads(int, int, unsigned long) /trafficserver/src/iocore/eventsystem/UnixEventProcessor.cc:469 (traffic_server+0xed7e70) (BuildId: 7206bc40bbaaebae6ec8626a5203b22a73f3cecf)
    #4 EventProcessor::start(int, unsigned long) /trafficserver/src/iocore/eventsystem/UnixEventProcessor.cc:550 (traffic_server+0xed84f0) (BuildId: 7206bc40bbaaebae6ec8626a5203b22a73f3cecf)
    #5 main /trafficserver/src/traffic_server/traffic_server.cc:2110 (traffic_server+0x8fc9ac) (BuildId: 7206bc40bbaaebae6ec8626a5203b22a73f3cecf)

  Thread T5 '[ET_TASK 1]' (tid=9925, running) created by main thread at:
    #0 pthread_create <null> (libtsan.so.2+0x6073c) (BuildId: 4fc6d4b1d08e85e4139b0e07fb335a013192e924)
    #1 ink_thread_create /trafficserver/include/tscore/ink_thread.h:129 (traffic_server+0xecfdb4) (BuildId: 7206bc40bbaaebae6ec8626a5203b22a73f3cecf)
    #2 Thread::start(char const*, void*, unsigned long, std::function<void ()> const&) /trafficserver/src/iocore/eventsystem/Thread.cc:92 (traffic_server+0xed0354) (BuildId: 7206bc40bbaaebae6ec8626a5203b22a73f3cecf)
    #3 EventProcessor::spawn_event_threads(int, int, unsigned long) /trafficserver/src/iocore/eventsystem/UnixEventProcessor.cc:469 (traffic_server+0xed7e70) (BuildId: 7206bc40bbaaebae6ec8626a5203b22a73f3cecf)
    #4 TasksProcessor::start(int, unsigned long) /trafficserver/src/iocore/eventsystem/Tasks.cc:42 (traffic_server+0xecfa08) (BuildId: 7206bc40bbaaebae6ec8626a5203b22a73f3cecf)
    #5 main /trafficserver/src/traffic_server/traffic_server.cc:2155 (traffic_server+0x8fcca0) (BuildId: 7206bc40bbaaebae6ec8626a5203b22a73f3cecf)


@JosiahWI JosiahWI added the TSan label Aug 2, 2024
@bryancall bryancall added this to the 10.0.0 milestone Aug 5, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
Status: No status
Development

No branches or pull requests

2 participants