Haivision / srtgo

Go bindings for SRT. Advantages of SRT technology for an easy to use programming language
Mozilla Public License 2.0
185 stars 52 forks source link

Running tests with -race results in segfault #66

Open markniebur opened 1 year ago

markniebur commented 1 year ago

Running the tests with the go race detector results in a seg fault. When I compile the tests to a binary with go test -race -c and run in gdb, the segfault is reported here:

#0  0x00007ffff740f8c4 in std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*) () from /usr/lib64/libstdc++.so.6
#1  0x00007ffff7eebad5 in std::__cxx11::list<srt::CInfoBlock*, std::allocator<srt::CInfoBlock*> >::_M_insert<srt::CInfoBlock* const&> (this=0x1735d80, __position=...) at /usr/include/c++/7/bits/stl_list.h:1802
#2  0x00007ffff7ee8b1e in std::__cxx11::list<srt::CInfoBlock*, std::allocator<srt::CInfoBlock*> >::push_front (this=0x1735d80, __x=@0x7fffbeffc830: 0x7fff78029ff0) at /usr/include/c++/7/bits/stl_list.h:1068
#3  0x00007ffff7ee6491 in srt::CCache<srt::CInfoBlock>::update (this=0x1735d80, data=0x7fffbeffc8d0) at /home/mark/dev/srt/srtcore/cache.h:166
#4  0x00007ffff7ecd4fb in srt::CUDT::closeInternal (this=0x7fff78012c18) at /home/mark/dev/srt/srtcore/core.cpp:6198
#5  0x00007ffff7e8e224 in srt::CUDTUnited::removeSocket (this=0x7ffff7fb8260 <srt::CUDT::uglobal()::instance>, u=369704512) at /home/mark/dev/srt/srtcore/api.cpp:2786
#6  0x00007ffff7e8dbfe in srt::CUDTUnited::checkBrokenSockets (this=0x7ffff7fb8260 <srt::CUDT::uglobal()::instance>) at /home/mark/dev/srt/srtcore/api.cpp:2702
#7  0x00007ffff7e9028b in srt::CUDTUnited::garbageCollect (p=0x7ffff7fb8260 <srt::CUDT::uglobal()::instance>) at /home/mark/dev/srt/srtcore/api.cpp:3284
#8  0x00007ffff7d696ea in start_thread () from /lib64/libpthread.so.0
#9  0x00007ffff7c6994f in clone () from /lib64/libc.so.6

I updated to the latest commit in the srt lib master and am still seeing the issue. I'm happy to turn on high logging in srt lib and post the capture if that helps.