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

[BUG] TSAN Lock Inversion #2833

Open
jlsantiago0 opened this issue Dec 14, 2023 · 1 comment
Open

[BUG] TSAN Lock Inversion #2833

jlsantiago0 opened this issue Dec 14, 2023 · 1 comment
Assignees
Labels
[core] Area: Changes in SRT library core Type: Bug Indicates an unexpected problem or unintended behavior
Milestone

Comments

@jlsantiago0
Copy link
Contributor

jlsantiago0 commented Dec 14, 2023

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):

  • OS: linux
  • SRT Version / commit ID: 1.5.3 release

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

@jlsantiago0 jlsantiago0 added the Type: Bug Indicates an unexpected problem or unintended behavior label Dec 14, 2023
@jlsantiago0
Copy link
Contributor Author

tsan.log

@maxsharabayko maxsharabayko added this to the v1.6.0 milestone Dec 20, 2023
@maxsharabayko maxsharabayko added the [core] Area: Changes in SRT library core label Dec 20, 2023
@maxsharabayko maxsharabayko modified the milestones: v1.5.4, v1.6.0 Aug 7, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[core] Area: Changes in SRT library core Type: Bug Indicates an unexpected problem or unintended behavior
Projects
None yet
Development

No branches or pull requests

3 participants