Skip to content

Instantly share code, notes, and snippets.

@Milek7
Created May 11, 2021 16:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Milek7/c415be3c0abbea008cb7576f73f92e71 to your computer and use it in GitHub Desktop.
Save Milek7/c415be3c0abbea008cb7576f73f92e71 to your computer and use it in GitHub Desktop.
=================================================================
==25186==ERROR: AddressSanitizer: heap-use-after-free on address 0x6140000089a4 at pc 0x55b619e9fef2 bp 0x7f455b64b320 sp 0x7f455b64b310
WRITE of size 4 at 0x6140000089a4 thread T34 (ottd:game)
#0 0x55b619e9fef1 in TCPServerConnecter::SetResult(int) /home/milek7/ottd3/src/network/core/tcp_connect.cpp:401
#1 0x55b619f2a28f in ClientNetworkCoordinatorSocketHandler::ConnectSuccess(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, NetworkAddress&) /home/milek7/ottd3/src/network/network_coordinator.cpp:518
#2 0x55b619f82949 in ClientNetworkTurnSocketHandler::Receive_SERVER_CONNECTED(Packet*) /home/milek7/ottd3/src/network/network_turn.cpp:61
#3 0x55b619eba757 in NetworkTurnSocketHandler::HandlePacket(Packet*) /home/milek7/ottd3/src/network/core/tcp_turn.cpp:41
#4 0x55b619eba7ac in NetworkTurnSocketHandler::ReceivePackets() /home/milek7/ottd3/src/network/core/tcp_turn.cpp:59
#5 0x55b619f82daa in ClientNetworkTurnSocketHandler::SendReceive() /home/milek7/ottd3/src/network/network_turn.cpp:127
#6 0x55b619f2b053 in ClientNetworkCoordinatorSocketHandler::SendReceive() /home/milek7/ottd3/src/network/network_coordinator.cpp:595
#7 0x55b619ec4214 in NetworkBackgroundLoop() /home/milek7/ottd3/src/network/network.cpp:988
#8 0x55b61a65ce5c in GameLoop() /home/milek7/ottd3/src/openttd.cpp:1466
#9 0x55b61a10edbc in VideoDriver::GameLoop() /home/milek7/ottd3/src/video/video_driver.cpp:37
#10 0x55b61a10ef58 in VideoDriver::GameThread() /home/milek7/ottd3/src/video/video_driver.cpp:44
#11 0x55b61a10f2bf in VideoDriver::GameThreadThunk(VideoDriver*) /home/milek7/ottd3/src/video/video_driver.cpp:81
#12 0x55b61a1121ae in StartNewThread<void (*)(VideoDriver*), VideoDriver*>(std::thread*, char const*, void (*&&)(VideoDriver*), VideoDriver*&&)::{lambda(char const*, void (*&&)(VideoDriver*), VideoDriver*&&)#1}::operator()(char const*, void (*&&)(VideoDriver*), VideoDriver*&&) const /home/milek7/ottd3/src/video/../thread.h:54
#13 0x55b61a1137af in void std::__invoke_impl<void, StartNewThread<void (*)(VideoDriver*), VideoDriver*>(std::thread*, char const*, void (*&&)(VideoDriver*), VideoDriver*&&)::{lambda(char const*, void (*&&)(VideoDriver*), VideoDriver*&&)#1}, char const*, void (*)(VideoDriver*), VideoDriver*>(std::__invoke_other, StartNewThread<void (*)(VideoDriver*), VideoDriver*>(std::thread*, char const*, void (*&&)(VideoDriver*), VideoDriver*&&)::{lambda(char const*, void (*&&&&)(VideoDriver*), VideoDriver*&&)#1}, char const*&&, void (*&&)(VideoDriver*), VideoDriver*&&) /usr/include/c++/12.0.0/bits/invoke.h:61
#14 0x55b61a113687 in _ZSt8__invokeIZ14StartNewThreadIPFvP11VideoDriverEJS2_EEbPSt6threadPKcOT_DpOT0_EUlS8_OS4_OS2_E_JS8_S4_S2_EENSt15__invoke_resultIS9_JDpSB_EE4typeESA_SD_ /usr/include/c++/12.0.0/bits/invoke.h:96
#15 0x55b61a11357e in void std::thread::_Invoker<std::tuple<StartNewThread<void (*)(VideoDriver*), VideoDriver*>(std::thread*, char const*, void (*&&)(VideoDriver*), VideoDriver*&&)::{lambda(char const*, void (*&&)(VideoDriver*), VideoDriver*&&)#1}, char const*, void (*)(VideoDriver*), VideoDriver*> >::_M_invoke<0ul, 1ul, 2ul, 3ul>(std::_Index_tuple<0ul, 1ul, 2ul, 3ul>) /usr/include/c++/12.0.0/bits/std_thread.h:253
#16 0x55b61a1134ff in std::thread::_Invoker<std::tuple<StartNewThread<void (*)(VideoDriver*), VideoDriver*>(std::thread*, char const*, void (*&&)(VideoDriver*), VideoDriver*&&)::{lambda(char const*, void (*&&)(VideoDriver*), VideoDriver*&&)#1}, char const*, void (*)(VideoDriver*), VideoDriver*> >::operator()() /usr/include/c++/12.0.0/bits/std_thread.h:260
#17 0x55b61a1134e3 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<StartNewThread<void (*)(VideoDriver*), VideoDriver*>(std::thread*, char const*, void (*&&)(VideoDriver*), VideoDriver*&&)::{lambda(char const*, void (*&&)(VideoDriver*), VideoDriver*&&)#1}, char const*, void (*)(VideoDriver*), VideoDriver*> > >::_M_run() /usr/include/c++/12.0.0/bits/std_thread.h:211
#18 0x7f45bc87f5f3 in execute_native_thread_routine /home/milek7/gcc-git/src/gcc/libstdc++-v3/src/c++11/thread.cc:82
#19 0x7f45bc9e5298 in start_thread (/usr/lib/libpthread.so.0+0x9298)
#20 0x7f45bc56a052 in __GI___clone (/usr/lib/libc.so.6+0xff052)
0x6140000089a4 is located 356 bytes inside of 440-byte region [0x614000008840,0x6140000089f8)
freed by thread T0 here:
#0 0x7f45bf071c99 in operator delete(void*, unsigned long) /home/milek7/gcc-git/src/gcc/libsanitizer/asan/asan_new_delete.cpp:172
#1 0x55b619ed14b0 in TCPLobbyQueryConnecter::~TCPLobbyQueryConnecter() /home/milek7/ottd3/src/network/network.cpp:658
#2 0x55b619ea049f in TCPConnecter::KillAll() /home/milek7/ottd3/src/network/core/tcp_connect.cpp:431
#3 0x55b619ec2811 in NetworkClose(bool) /home/milek7/ottd3/src/network/network.cpp:595
#4 0x55b619ec40f7 in NetworkDisconnect(bool, bool) /home/milek7/ottd3/src/network/network.cpp:949
#5 0x55b619ec3384 in NetworkClientJoinGame() /home/milek7/ottd3/src/network/network.cpp:825
#6 0x55b619ec3251 in NetworkClientConnectGame(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, Owner, char const*, char const*) /home/milek7/ottd3/src/network/network.cpp:806
#7 0x55b619f523a8 in NetworkLobbyWindow::OnClick(Point, int, int) /home/milek7/ottd3/src/network/network_gui.cpp:1504
#8 0x55b61aaef3a0 in DispatchLeftClickEvent /home/milek7/ottd3/src/window.cpp:775
#9 0x55b61ab04b22 in MouseLoop /home/milek7/ottd3/src/window.cpp:2931
#10 0x55b61ab057c4 in HandleMouseEvents() /home/milek7/ottd3/src/window.cpp:3028
#11 0x55b61a107087 in VideoDriver_SDL_Base::PollEvent() /home/milek7/ottd3/src/video/sdl2_v.cpp:434
#12 0x55b61a10ff45 in VideoDriver::Tick() /home/milek7/ottd3/src/video/video_driver.cpp:144
#13 0x55b61a108433 in VideoDriver_SDL_Base::LoopOnce() /home/milek7/ottd3/src/video/sdl2_v.cpp:642
#14 0x55b61a10846b in VideoDriver_SDL_Base::MainLoop() /home/milek7/ottd3/src/video/sdl2_v.cpp:660
#15 0x55b61a6567ab in openttd_main(int, char**) /home/milek7/ottd3/src/openttd.cpp:800
#16 0x55b619f85d40 in main /home/milek7/ottd3/src/os/unix/unix.cpp:262
#17 0x7f45bc492b24 in __libc_start_main (/usr/lib/libc.so.6+0x27b24)
previously allocated by thread T0 here:
#0 0x7f45bf070b39 in operator new(unsigned long) /home/milek7/gcc-git/src/gcc/libsanitizer/asan/asan_new_delete.cpp:99
#1 0x55b619ec29d1 in NetworkQueryLobbyServer(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /home/milek7/ottd3/src/network/network.cpp:690
#2 0x55b619f3c1ed in ShowNetworkLobbyWindow /home/milek7/ottd3/src/network/network_gui.cpp:1581
#3 0x55b619f4cc20 in NetworkGameWindow::OnClick(Point, int, int) /home/milek7/ottd3/src/network/network_gui.cpp:766
#4 0x55b61aaef3a0 in DispatchLeftClickEvent /home/milek7/ottd3/src/window.cpp:775
#5 0x55b61ab04b22 in MouseLoop /home/milek7/ottd3/src/window.cpp:2931
#6 0x55b61ab057c4 in HandleMouseEvents() /home/milek7/ottd3/src/window.cpp:3028
#7 0x55b61a107087 in VideoDriver_SDL_Base::PollEvent() /home/milek7/ottd3/src/video/sdl2_v.cpp:434
#8 0x55b61a10ff45 in VideoDriver::Tick() /home/milek7/ottd3/src/video/video_driver.cpp:144
#9 0x55b61a108433 in VideoDriver_SDL_Base::LoopOnce() /home/milek7/ottd3/src/video/sdl2_v.cpp:642
#10 0x55b61a10846b in VideoDriver_SDL_Base::MainLoop() /home/milek7/ottd3/src/video/sdl2_v.cpp:660
#11 0x55b61a6567ab in openttd_main(int, char**) /home/milek7/ottd3/src/openttd.cpp:800
#12 0x55b619f85d40 in main /home/milek7/ottd3/src/os/unix/unix.cpp:262
#13 0x7f45bc492b24 in __libc_start_main (/usr/lib/libc.so.6+0x27b24)
Thread T34 (ottd:game) created by T0 here:
#0 0x7f45befd5907 in __interceptor_pthread_create /home/milek7/gcc-git/src/gcc/libsanitizer/asan/asan_interceptors.cpp:216
#1 0x7f45bc87f8ea in std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)()) /home/milek7/gcc-git/src/gcc-build/x86_64-pc-linux-gnu/libstdc++-v3/include/x86_64-pc-linux-gnu/bits/gthr-default.h:663
#2 0x55b61a112307 in bool StartNewThread<void (*)(VideoDriver*), VideoDriver*>(std::thread*, char const*, void (*&&)(VideoDriver*), VideoDriver*&&) /home/milek7/ottd3/src/video/../thread.h:49
#3 0x55b61a10f430 in VideoDriver::StartGameThread() /home/milek7/ottd3/src/video/video_driver.cpp:87
#4 0x55b61a10845d in VideoDriver_SDL_Base::MainLoop() /home/milek7/ottd3/src/video/sdl2_v.cpp:657
#5 0x55b61a6567ab in openttd_main(int, char**) /home/milek7/ottd3/src/openttd.cpp:800
#6 0x55b619f85d40 in main /home/milek7/ottd3/src/os/unix/unix.cpp:262
#7 0x7f45bc492b24 in __libc_start_main (/usr/lib/libc.so.6+0x27b24)
SUMMARY: AddressSanitizer: heap-use-after-free /home/milek7/ottd3/src/network/core/tcp_connect.cpp:401 in TCPServerConnecter::SetResult(int)
Shadow bytes around the buggy address:
0x0c287fff90e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x0c287fff90f0: 00 00 00 00 00 00 00 00 00 07 fa fa fa fa fa fa
0x0c287fff9100: fa fa fa fa fa fa fa fa fd fd fd fd fd fd fd fd
0x0c287fff9110: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c287fff9120: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
=>0x0c287fff9130: fd fd fd fd[fd]fd fd fd fd fd fd fd fd fd fd fa
0x0c287fff9140: fa fa fa fa fa fa fa fa fd fd fd fd fd fd fd fd
0x0c287fff9150: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c287fff9160: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c287fff9170: fd fd fd fd fd fd fd fd fd fd fa fa fa fa fa fa
0x0c287fff9180: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
Shadow byte legend (one shadow byte represents 8 application bytes):
Addressable: 00
Partially addressable: 01 02 03 04 05 06 07
Heap left redzone: fa
Freed heap region: fd
Stack left redzone: f1
Stack mid redzone: f2
Stack right redzone: f3
Stack after return: f5
Stack use after scope: f8
Global redzone: f9
Global init order: f6
Poisoned by user: f7
Container overflow: fc
Array cookie: ac
Intra object redzone: bb
ASan internal: fe
Left alloca redzone: ca
Right alloca redzone: cb
Shadow gap: cc
==25186==ABORTING
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment