Open jlsantiago0 opened 9 months ago
Describe the bug Clang TSAN build of SRT Listener
To Reproduce Configured with PKTINFO and BONDING enabled.
Expected behavior No potential lock inversions.
Screenshots Will attach TSAN log.
Desktop (please provide the following information):
Additional context
Mutex M0 = m_ConnectionLock Mutex M1 = uglobal().m_GlobControlLock T17: T17 Thread Created: #4 srt::CRcvQueue::init(int, unsigned long, int, int, srt::CChannel*, srt::sync::CTimer*) /mnt/jlsws2/dev/orthrus/master/src/vendor/utils/haisrt/srt-1.5.3/srtcore/queue.cpp:1199:10 (hvmaf_hviorouter+0x19a6a79) #5 srt::CUDTUnited::updateMux(srt::CUDTSocket*, srt::sockaddr_any const&, int const*) /mnt/jlsws2/dev/orthrus/master/src/vendor/utils/haisrt/srt-1.5.3/srtcore/api.cpp:3160:24 (hvmaf_hviorouter+0x18bf63d) #6 srt::CUDTUnited::bind(srt::CUDTSocket*, srt::sockaddr_any const&) /mnt/jlsws2/dev/orthrus/master/src/vendor/utils/haisrt/srt-1.5.3/srtcore/api.cpp:932:5 (hvmaf_hviorouter+0x18beac7) #7 srt::CUDT::bind(int, sockaddr const*, int) /mnt/jlsws2/dev/orthrus/master/src/vendor/utils/haisrt/srt-1.5.3/srtcore/api.cpp:3522:26 (hvmaf_hviorouter+0x18ccc9e) #8 srt_bind /mnt/jlsws2/dev/orthrus/master/src/vendor/utils/haisrt/srt-1.5.3/srtcore/srt_c_api.cpp:112:79 (hvmaf_hviorouter+0x19bc55f) Aquires Lock M0 via: #3 srt::CUDT::acceptAndRespond(srt::sockaddr_any const&, srt::sockaddr_any const&, srt::CPacket const&, srt::CHandShake&) /mnt/jlsws2/dev/orthrus/master/src/vendor/utils/haisrt/srt-1.5.3/srtcore/core.cpp:5665:16 (hvmaf_hviorouter+0x191b5ed) #4 srt::CUDTUnited::newConnection(int, srt::sockaddr_any const&, srt::CPacket const&, srt::CHandShake&, int&, srt::CUDT*&) /mnt/jlsws2/dev/orthrus/master/src/vendor/utils/haisrt/srt-1.5.3/srtcore/api.cpp:631:20 (hvmaf_hviorouter+0x18bbd84) #5 srt::CUDT::processConnectRequest(srt::sockaddr_any const&, srt::CPacket&) /mnt/jlsws2/dev/orthrus/master/src/vendor/utils/haisrt/srt-1.5.3/srtcore/core.cpp:11068:32 (hvmaf_hviorouter+0x193357b) #6 srt::CRcvQueue::worker_ProcessConnectionRequest(srt::CUnit*, srt::sockaddr_any const&) /mnt/jlsws2/dev/orthrus/master/src/vendor/utils/haisrt/srt-1.5.3/srtcore/queue.cpp:1411:41 (hvmaf_hviorouter+0x19a7d99) #7 srt::CRcvQueue::worker(void*) /mnt/jlsws2/dev/orthrus/master/src/vendor/utils/haisrt/srt-1.5.3/srtcore/queue.cpp:1247:29 (hvmaf_hviorouter+0x19a6e4e) While Holding M1: #3 srt::CUDT::acceptAndRespond(srt::sockaddr_any const&, srt::sockaddr_any const&, srt::CPacket const&, srt::CHandShake&) /mnt/jlsws2/dev/orthrus/master/src/vendor/utils/haisrt/srt-1.5.3/srtcore/core.cpp:5768:20 (hvmaf_hviorouter+0x191b943) #4 srt::CUDTUnited::newConnection(int, srt::sockaddr_any const&, srt::CPacket const&, srt::CHandShake&, int&, srt::CUDT*&) /mnt/jlsws2/dev/orthrus/master/src/vendor/utils/haisrt/srt-1.5.3/srtcore/api.cpp:631:20 (hvmaf_hviorouter+0x18bbd84) #5 srt::CUDT::processConnectRequest(srt::sockaddr_any const&, srt::CPacket&) /mnt/jlsws2/dev/orthrus/master/src/vendor/utils/haisrt/srt-1.5.3/srtcore/core.cpp:11068:32 (hvmaf_hviorouter+0x193357b) #6 srt::CRcvQueue::worker_ProcessConnectionRequest(srt::CUnit*, srt::sockaddr_any const&) /mnt/jlsws2/dev/orthrus/master/src/vendor/utils/haisrt/srt-1.5.3/srtcore/queue.cpp:1411:41 (hvmaf_hviorouter+0x19a7d99) #7 srt::CRcvQueue::worker(void*) /mnt/jlsws2/dev/orthrus/master/src/vendor/utils/haisrt/srt-1.5.3/srtcore/queue.cpp:1247:29 (hvmaf_hviorouter+0x19a6e4e) T15: T15 Thread Created: #4 srt::CUDTUnited::startup() /mnt/jlsws2/dev/orthrus/master/src/vendor/utils/haisrt/srt-1.5.3/srtcore/api.cpp:266:10 (hvmaf_hviorouter+0x18ba3b8) #5 srt::CUDT::socket() /mnt/jlsws2/dev/orthrus/master/src/vendor/utils/haisrt/srt-1.5.3/srtcore/api.cpp:3368:19 (hvmaf_hviorouter+0x18cc23a) #6 srt_create_socket /mnt/jlsws2/dev/orthrus/master/src/vendor/utils/haisrt/srt-1.5.3/srtcore/srt_c_api.cpp:37:40 (hvmaf_hviorouter+0x19bc0db) Aquries M1 via: #3 srt::CUDTUnited::checkBrokenSockets() /mnt/jlsws2/dev/orthrus/master/src/vendor/utils/haisrt/srt-1.5.3/srtcore/api.cpp:2568:16 (hvmaf_hviorouter+0x18c9e7f) #4 srt::CUDTUnited::garbageCollect(void*) /mnt/jlsws2/dev/orthrus/master/src/vendor/utils/haisrt/srt-1.5.3/srtcore/api.cpp:3284:15 (hvmaf_hviorouter+0x18ba511) While Holding M0 via: #3 srt::CUDT::closeInternal() /mnt/jlsws2/dev/orthrus/master/src/vendor/utils/haisrt/srt-1.5.3/srtcore/core.cpp:6191:16 (hvmaf_hviorouter+0x191c8f4) #4 srt::CUDTUnited::removeSocket(int) /mnt/jlsws2/dev/orthrus/master/src/vendor/utils/haisrt/srt-1.5.3/srtcore/api.cpp:2786:15 (hvmaf_hviorouter+0x18cb7e8) #5 srt::CUDTUnited::checkBrokenSockets() /mnt/jlsws2/dev/orthrus/master/src/vendor/utils/haisrt/srt-1.5.3/srtcore/api.cpp:2702:9 (hvmaf_hviorouter+0x18cb110) #6 srt::CUDTUnited::garbageCollect(void*) /mnt/jlsws2/dev/orthrus/master/src/vendor/utils/haisrt/srt-1.5.3/srtcore/api.cpp:3284:15 (hvmaf_hviorouter+0x18ba511)
tsan.log
Describe the bug Clang TSAN build of SRT Listener
To Reproduce Configured with PKTINFO and BONDING enabled.
Expected behavior No potential lock inversions.
Screenshots Will attach TSAN log.
Desktop (please provide the following information):
Additional context
tsan.log