FreeRDP: freerdp-shadow-cli rdpgfx failing randomly
Describe the bug
build tag 2.10.0 with thread sanitizer (-DWITH_SANITIZE_THREAD) detects a data race
To Reproduce
Steps to reproduce the behavior:
Debian: freerdp-shadow-cli -auth -sec-rdp -sec-nla /sec:tls +may-interact +may-view (commit: 7471ae383e7b7a613f275e19f7b54958a193c891) Windows 10: Microsoft RDP Client 10.0.19041 (in virtualbox)
Expected behavior
i should be able to interact with remote desktop, but connection is established one out of five times on my computer
Additional context
server side log:
freerdp-shadow-cli -auth -sec-rdp -sec-nla /sec:tls +may-interact +may-view /port:3393
[00:13:08:750] [10948:10948] [INFO][com.freerdp.server.shadow.x11] - X11 Extensions: XFixes: 1 Xinerama: 1 XDamage: 0 XShm: 0
[00:13:08:803] [10948:10948] [INFO][com.freerdp.core.listener] - Listening on [0.0.0.0]:3393
==================
WARNING: ThreadSanitizer: data race (pid=10948)
Write of size 4 at 0x7b1c0000000c by thread T1:
#0 ArrayList_Add /home/computer/workspace/FreeRDP/winpr/libwinpr/utils/collections/ArrayList.c:256 (libwinpr2.so.2+0x81610)
#1 shadow_client_context_new /home/computer/workspace/FreeRDP/server/shadow/shadow_client.c:187 (libfreerdp-shadow2.so.2+0x6979)
#2 freerdp_peer_context_new /home/computer/workspace/FreeRDP/libfreerdp/core/peer.c:1069 (libfreerdp2.so.2+0x16aa69)
#3 shadow_client_accepted /home/computer/workspace/FreeRDP/server/shadow/shadow_client.c:1938 (libfreerdp-shadow2.so.2+0xfd5b)
#4 freerdp_listener_check_fds /home/computer/workspace/FreeRDP/libfreerdp/core/listener.c:368 (libfreerdp2.so.2+0x165753)
#5 shadow_server_thread /home/computer/workspace/FreeRDP/server/shadow/shadow_server.c:476 (libfreerdp-shadow2.so.2+0x1d6a5)
#6 thread_launcher /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:530 (libwinpr2.so.2+0xd15aa)
Previous read of size 4 at 0x7b1c0000000c by thread T2:
#0 ArrayList_Count /home/computer/workspace/FreeRDP/winpr/libwinpr/utils/collections/ArrayList.c:52 (libwinpr2.so.2+0x80d0a)
#1 x11_shadow_screen_grab /home/computer/workspace/FreeRDP/server/shadow/X11/x11_shadow.c:752 (libfreerdp-shadow-subsystem2.so.2+0x6a0a)
#2 x11_shadow_subsystem_thread /home/computer/workspace/FreeRDP/server/shadow/X11/x11_shadow.c:944 (libfreerdp-shadow-subsystem2.so.2+0x78f1)
#3 thread_launcher /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:530 (libwinpr2.so.2+0xd15aa)
Location is heap block of size 104 at 0x7b1c00000000 allocated by main thread:
#0 calloc ../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:672 (libtsan.so.0+0x31edc)
#1 ArrayList_New /home/computer/workspace/FreeRDP/winpr/libwinpr/utils/collections/ArrayList.c:458 (libwinpr2.so.2+0x81d83)
#2 shadow_server_init /home/computer/workspace/FreeRDP/server/shadow/shadow_server.c:810 (libfreerdp-shadow2.so.2+0x1ec23)
#3 main /home/computer/workspace/FreeRDP/server/shadow/shadow.c:78 (freerdp-shadow-cli+0x1915)
Thread T1 (tid=10950, running) created by main thread at:
#0 pthread_create ../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:969 (libtsan.so.0+0x605b8)
#1 winpr_StartThread /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:578 (libwinpr2.so.2+0xd17c6)
#2 CreateThread /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:660 (libwinpr2.so.2+0xd1d7c)
#3 shadow_server_start /home/computer/workspace/FreeRDP/server/shadow/shadow_server.c:626 (libfreerdp-shadow2.so.2+0x1e21d)
#4 main /home/computer/workspace/FreeRDP/server/shadow/shadow.c:84 (freerdp-shadow-cli+0x19f1)
Thread T2 (tid=10951, running) created by thread T1 at:
#0 pthread_create ../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:969 (libtsan.so.0+0x605b8)
#1 winpr_StartThread /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:578 (libwinpr2.so.2+0xd17c6)
#2 CreateThread /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:660 (libwinpr2.so.2+0xd1d7c)
#3 x11_shadow_subsystem_start /home/computer/workspace/FreeRDP/server/shadow/X11/x11_shadow.c:1389 (libfreerdp-shadow-subsystem2.so.2+0xa16d)
#4 shadow_subsystem_start /home/computer/workspace/FreeRDP/server/shadow/shadow_subsystem.c:151 (libfreerdp-shadow2.so.2+0x18c1e)
#5 shadow_server_thread /home/computer/workspace/FreeRDP/server/shadow/shadow_server.c:450 (libfreerdp-shadow2.so.2+0x1d4b7)
#6 thread_launcher /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:530 (libwinpr2.so.2+0xd15aa)
SUMMARY: ThreadSanitizer: data race /home/computer/workspace/FreeRDP/winpr/libwinpr/utils/collections/ArrayList.c:256 in ArrayList_Add
==================
==================
WARNING: ThreadSanitizer: data race (pid=10948)
Read of size 4 at 0x7b1400000310 by thread T3:
#0 WLog_FindChild /home/computer/workspace/FreeRDP/winpr/libwinpr/utils/wlog/wlog.c:973 (libwinpr2.so.2+0xbf053)
#1 WLog_Get_int /home/computer/workspace/FreeRDP/winpr/libwinpr/utils/wlog/wlog.c:991 (libwinpr2.so.2+0xbf0b6)
#2 WLog_Get /home/computer/workspace/FreeRDP/winpr/libwinpr/utils/wlog/wlog.c:1012 (libwinpr2.so.2+0xbf169)
#3 shadow_multiclient_get_subscriber /home/computer/workspace/FreeRDP/server/shadow/shadow_mcevent.c:276 (libfreerdp-shadow2.so.2+0x1a204)
#4 shadow_client_thread /home/computer/workspace/FreeRDP/server/shadow/shadow_client.c:1659 (libfreerdp-shadow2.so.2+0xe4e8)
#5 thread_launcher /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:530 (libwinpr2.so.2+0xd15aa)
Previous write of size 4 at 0x7b1400000310 by thread T1:
#0 WLog_AddChild /home/computer/workspace/FreeRDP/winpr/libwinpr/utils/wlog/wlog.c:959 (libwinpr2.so.2+0xbef3f)
#1 WLog_Get_int /home/computer/workspace/FreeRDP/winpr/libwinpr/utils/wlog/wlog.c:999 (libwinpr2.so.2+0xbf107)
#2 WLog_Get /home/computer/workspace/FreeRDP/winpr/libwinpr/utils/wlog/wlog.c:1012 (libwinpr2.so.2+0xbf169)
#3 ThreadCloseHandle /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:728 (libwinpr2.so.2+0xd1fd0)
#4 CloseHandle /home/computer/workspace/FreeRDP/winpr/libwinpr/handle/handle.c:61 (libwinpr2.so.2+0xcca45)
#5 shadow_client_accepted /home/computer/workspace/FreeRDP/server/shadow/shadow_client.c:1951 (libfreerdp-shadow2.so.2+0xfe26)
#6 freerdp_listener_check_fds /home/computer/workspace/FreeRDP/libfreerdp/core/listener.c:368 (libfreerdp2.so.2+0x165753)
#7 shadow_server_thread /home/computer/workspace/FreeRDP/server/shadow/shadow_server.c:476 (libfreerdp-shadow2.so.2+0x1d6a5)
#8 thread_launcher /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:530 (libwinpr2.so.2+0xd15aa)
Location is heap block of size 72 at 0x7b14000002d0 allocated by main thread:
#0 calloc ../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:672 (libtsan.so.0+0x31edc)
#1 WLog_New /home/computer/workspace/FreeRDP/winpr/libwinpr/utils/wlog/wlog.c:824 (libwinpr2.so.2+0xbe841)
#2 WLog_InitializeRoot /home/computer/workspace/FreeRDP/winpr/libwinpr/utils/wlog/wlog.c:105 (libwinpr2.so.2+0xbbd1f)
#3 winpr_InitOnceExecuteOnce /home/computer/workspace/FreeRDP/winpr/libwinpr/synch/init.c:74 (libwinpr2.so.2+0x40cf4)
#4 WLog_GetRoot /home/computer/workspace/FreeRDP/winpr/libwinpr/utils/wlog/wlog.c:919 (libwinpr2.so.2+0xbecd3)
#5 WLog_Get /home/computer/workspace/FreeRDP/winpr/libwinpr/utils/wlog/wlog.c:1011 (libwinpr2.so.2+0xbf152)
#6 x11_shadow_subsystem_init /home/computer/workspace/FreeRDP/server/shadow/X11/x11_shadow.c:1345 (libfreerdp-shadow-subsystem2.so.2+0x9e47)
#7 shadow_subsystem_init /home/computer/workspace/FreeRDP/server/shadow/shadow_subsystem.c:89 (libfreerdp-shadow2.so.2+0x18801)
#8 shadow_server_init /home/computer/workspace/FreeRDP/server/shadow/shadow_server.c:841 (libfreerdp-shadow2.so.2+0x1ee17)
#9 main /home/computer/workspace/FreeRDP/server/shadow/shadow.c:78 (freerdp-shadow-cli+0x1915)
Thread T3 (tid=10957, running) created by thread T1 at:
#0 pthread_create ../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:969 (libtsan.so.0+0x605b8)
#1 winpr_StartThread /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:578 (libwinpr2.so.2+0xd17c6)
#2 CreateThread /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:660 (libwinpr2.so.2+0xd1d7c)
#3 shadow_client_accepted /home/computer/workspace/FreeRDP/server/shadow/shadow_client.c:1943 (libfreerdp-shadow2.so.2+0xfdac)
#4 freerdp_listener_check_fds /home/computer/workspace/FreeRDP/libfreerdp/core/listener.c:368 (libfreerdp2.so.2+0x165753)
#5 shadow_server_thread /home/computer/workspace/FreeRDP/server/shadow/shadow_server.c:476 (libfreerdp-shadow2.so.2+0x1d6a5)
#6 thread_launcher /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:530 (libwinpr2.so.2+0xd15aa)
Thread T1 (tid=10950, running) created by main thread at:
#0 pthread_create ../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:969 (libtsan.so.0+0x605b8)
#1 winpr_StartThread /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:578 (libwinpr2.so.2+0xd17c6)
#2 CreateThread /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:660 (libwinpr2.so.2+0xd1d7c)
#3 shadow_server_start /home/computer/workspace/FreeRDP/server/shadow/shadow_server.c:626 (libfreerdp-shadow2.so.2+0x1e21d)
#4 main /home/computer/workspace/FreeRDP/server/shadow/shadow.c:84 (freerdp-shadow-cli+0x19f1)
SUMMARY: ThreadSanitizer: data race /home/computer/workspace/FreeRDP/winpr/libwinpr/utils/wlog/wlog.c:973 in WLog_FindChild
==================
==================
WARNING: ThreadSanitizer: data race (pid=10948)
Read of size 8 at 0x7b20000006a0 by thread T3:
#0 WLog_FindChild /home/computer/workspace/FreeRDP/winpr/libwinpr/utils/wlog/wlog.c:975 (libwinpr2.so.2+0xbf009)
#1 WLog_Get_int /home/computer/workspace/FreeRDP/winpr/libwinpr/utils/wlog/wlog.c:991 (libwinpr2.so.2+0xbf0b6)
#2 WLog_Get /home/computer/workspace/FreeRDP/winpr/libwinpr/utils/wlog/wlog.c:1012 (libwinpr2.so.2+0xbf169)
#3 shadow_multiclient_get_subscriber /home/computer/workspace/FreeRDP/server/shadow/shadow_mcevent.c:276 (libfreerdp-shadow2.so.2+0x1a204)
#4 shadow_client_thread /home/computer/workspace/FreeRDP/server/shadow/shadow_client.c:1659 (libfreerdp-shadow2.so.2+0xe4e8)
#5 thread_launcher /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:530 (libwinpr2.so.2+0xd15aa)
Previous write of size 8 at 0x7b20000006a0 by thread T1:
#0 WLog_AddChild /home/computer/workspace/FreeRDP/winpr/libwinpr/utils/wlog/wlog.c:959 (libwinpr2.so.2+0xbef5a)
#1 WLog_Get_int /home/computer/workspace/FreeRDP/winpr/libwinpr/utils/wlog/wlog.c:999 (libwinpr2.so.2+0xbf107)
#2 WLog_Get /home/computer/workspace/FreeRDP/winpr/libwinpr/utils/wlog/wlog.c:1012 (libwinpr2.so.2+0xbf169)
#3 ThreadCloseHandle /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:728 (libwinpr2.so.2+0xd1fd0)
#4 CloseHandle /home/computer/workspace/FreeRDP/winpr/libwinpr/handle/handle.c:61 (libwinpr2.so.2+0xcca45)
#5 shadow_client_accepted /home/computer/workspace/FreeRDP/server/shadow/shadow_client.c:1951 (libfreerdp-shadow2.so.2+0xfe26)
#6 freerdp_listener_check_fds /home/computer/workspace/FreeRDP/libfreerdp/core/listener.c:368 (libfreerdp2.so.2+0x165753)
#7 shadow_server_thread /home/computer/workspace/FreeRDP/server/shadow/shadow_server.c:476 (libfreerdp-shadow2.so.2+0x1d6a5)
#8 thread_launcher /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:530 (libwinpr2.so.2+0xd15aa)
Location is heap block of size 128 at 0x7b2000000680 allocated by main thread:
#0 calloc ../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:672 (libtsan.so.0+0x31edc)
#1 WLog_New /home/computer/workspace/FreeRDP/winpr/libwinpr/utils/wlog/wlog.c:842 (libwinpr2.so.2+0xbe942)
#2 WLog_InitializeRoot /home/computer/workspace/FreeRDP/winpr/libwinpr/utils/wlog/wlog.c:105 (libwinpr2.so.2+0xbbd1f)
#3 winpr_InitOnceExecuteOnce /home/computer/workspace/FreeRDP/winpr/libwinpr/synch/init.c:74 (libwinpr2.so.2+0x40cf4)
#4 WLog_GetRoot /home/computer/workspace/FreeRDP/winpr/libwinpr/utils/wlog/wlog.c:919 (libwinpr2.so.2+0xbecd3)
#5 WLog_Get /home/computer/workspace/FreeRDP/winpr/libwinpr/utils/wlog/wlog.c:1011 (libwinpr2.so.2+0xbf152)
#6 x11_shadow_subsystem_init /home/computer/workspace/FreeRDP/server/shadow/X11/x11_shadow.c:1345 (libfreerdp-shadow-subsystem2.so.2+0x9e47)
#7 shadow_subsystem_init /home/computer/workspace/FreeRDP/server/shadow/shadow_subsystem.c:89 (libfreerdp-shadow2.so.2+0x18801)
#8 shadow_server_init /home/computer/workspace/FreeRDP/server/shadow/shadow_server.c:841 (libfreerdp-shadow2.so.2+0x1ee17)
#9 main /home/computer/workspace/FreeRDP/server/shadow/shadow.c:78 (freerdp-shadow-cli+0x1915)
Thread T3 (tid=10957, running) created by thread T1 at:
#0 pthread_create ../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:969 (libtsan.so.0+0x605b8)
#1 winpr_StartThread /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:578 (libwinpr2.so.2+0xd17c6)
#2 CreateThread /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:660 (libwinpr2.so.2+0xd1d7c)
#3 shadow_client_accepted /home/computer/workspace/FreeRDP/server/shadow/shadow_client.c:1943 (libfreerdp-shadow2.so.2+0xfdac)
#4 freerdp_listener_check_fds /home/computer/workspace/FreeRDP/libfreerdp/core/listener.c:368 (libfreerdp2.so.2+0x165753)
#5 shadow_server_thread /home/computer/workspace/FreeRDP/server/shadow/shadow_server.c:476 (libfreerdp-shadow2.so.2+0x1d6a5)
#6 thread_launcher /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:530 (libwinpr2.so.2+0xd15aa)
Thread T1 (tid=10950, running) created by main thread at:
#0 pthread_create ../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:969 (libtsan.so.0+0x605b8)
#1 winpr_StartThread /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:578 (libwinpr2.so.2+0xd17c6)
#2 CreateThread /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:660 (libwinpr2.so.2+0xd1d7c)
#3 shadow_server_start /home/computer/workspace/FreeRDP/server/shadow/shadow_server.c:626 (libfreerdp-shadow2.so.2+0x1e21d)
#4 main /home/computer/workspace/FreeRDP/server/shadow/shadow.c:84 (freerdp-shadow-cli+0x19f1)
SUMMARY: ThreadSanitizer: data race /home/computer/workspace/FreeRDP/winpr/libwinpr/utils/wlog/wlog.c:975 in WLog_FindChild
==================
==================
WARNING: ThreadSanitizer: data race (pid=10948)
Read of size 8 at 0x7b14000029e0 by thread T3:
#0 WLog_FindChild /home/computer/workspace/FreeRDP/winpr/libwinpr/utils/wlog/wlog.c:977 (libwinpr2.so.2+0xbf01c)
#1 WLog_Get_int /home/computer/workspace/FreeRDP/winpr/libwinpr/utils/wlog/wlog.c:991 (libwinpr2.so.2+0xbf0b6)
#2 WLog_Get /home/computer/workspace/FreeRDP/winpr/libwinpr/utils/wlog/wlog.c:1012 (libwinpr2.so.2+0xbf169)
#3 shadow_multiclient_get_subscriber /home/computer/workspace/FreeRDP/server/shadow/shadow_mcevent.c:276 (libfreerdp-shadow2.so.2+0x1a204)
#4 shadow_client_thread /home/computer/workspace/FreeRDP/server/shadow/shadow_client.c:1659 (libfreerdp-shadow2.so.2+0xe4e8)
#5 thread_launcher /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:530 (libwinpr2.so.2+0xd15aa)
Previous write of size 8 at 0x7b14000029e0 by thread T1:
#0 calloc ../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:672 (libtsan.so.0+0x31edc)
#1 WLog_New /home/computer/workspace/FreeRDP/winpr/libwinpr/utils/wlog/wlog.c:824 (libwinpr2.so.2+0xbe841)
#2 WLog_Get_int /home/computer/workspace/FreeRDP/winpr/libwinpr/utils/wlog/wlog.c:996 (libwinpr2.so.2+0xbf0e2)
#3 WLog_Get /home/computer/workspace/FreeRDP/winpr/libwinpr/utils/wlog/wlog.c:1012 (libwinpr2.so.2+0xbf169)
#4 ThreadCloseHandle /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:728 (libwinpr2.so.2+0xd1fd0)
#5 CloseHandle /home/computer/workspace/FreeRDP/winpr/libwinpr/handle/handle.c:61 (libwinpr2.so.2+0xcca45)
#6 shadow_client_accepted /home/computer/workspace/FreeRDP/server/shadow/shadow_client.c:1951 (libfreerdp-shadow2.so.2+0xfe26)
#7 freerdp_listener_check_fds /home/computer/workspace/FreeRDP/libfreerdp/core/listener.c:368 (libfreerdp2.so.2+0x165753)
#8 shadow_server_thread /home/computer/workspace/FreeRDP/server/shadow/shadow_server.c:476 (libfreerdp-shadow2.so.2+0x1d6a5)
#9 thread_launcher /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:530 (libwinpr2.so.2+0xd15aa)
Location is heap block of size 72 at 0x7b14000029e0 allocated by thread T1:
#0 calloc ../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:672 (libtsan.so.0+0x31edc)
#1 WLog_New /home/computer/workspace/FreeRDP/winpr/libwinpr/utils/wlog/wlog.c:824 (libwinpr2.so.2+0xbe841)
#2 WLog_Get_int /home/computer/workspace/FreeRDP/winpr/libwinpr/utils/wlog/wlog.c:996 (libwinpr2.so.2+0xbf0e2)
#3 WLog_Get /home/computer/workspace/FreeRDP/winpr/libwinpr/utils/wlog/wlog.c:1012 (libwinpr2.so.2+0xbf169)
#4 ThreadCloseHandle /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:728 (libwinpr2.so.2+0xd1fd0)
#5 CloseHandle /home/computer/workspace/FreeRDP/winpr/libwinpr/handle/handle.c:61 (libwinpr2.so.2+0xcca45)
#6 shadow_client_accepted /home/computer/workspace/FreeRDP/server/shadow/shadow_client.c:1951 (libfreerdp-shadow2.so.2+0xfe26)
#7 freerdp_listener_check_fds /home/computer/workspace/FreeRDP/libfreerdp/core/listener.c:368 (libfreerdp2.so.2+0x165753)
#8 shadow_server_thread /home/computer/workspace/FreeRDP/server/shadow/shadow_server.c:476 (libfreerdp-shadow2.so.2+0x1d6a5)
#9 thread_launcher /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:530 (libwinpr2.so.2+0xd15aa)
Thread T3 (tid=10957, running) created by thread T1 at:
#0 pthread_create ../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:969 (libtsan.so.0+0x605b8)
#1 winpr_StartThread /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:578 (libwinpr2.so.2+0xd17c6)
#2 CreateThread /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:660 (libwinpr2.so.2+0xd1d7c)
#3 shadow_client_accepted /home/computer/workspace/FreeRDP/server/shadow/shadow_client.c:1943 (libfreerdp-shadow2.so.2+0xfdac)
#4 freerdp_listener_check_fds /home/computer/workspace/FreeRDP/libfreerdp/core/listener.c:368 (libfreerdp2.so.2+0x165753)
#5 shadow_server_thread /home/computer/workspace/FreeRDP/server/shadow/shadow_server.c:476 (libfreerdp-shadow2.so.2+0x1d6a5)
#6 thread_launcher /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:530 (libwinpr2.so.2+0xd15aa)
Thread T1 (tid=10950, running) created by main thread at:
#0 pthread_create ../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:969 (libtsan.so.0+0x605b8)
#1 winpr_StartThread /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:578 (libwinpr2.so.2+0xd17c6)
#2 CreateThread /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:660 (libwinpr2.so.2+0xd1d7c)
#3 shadow_server_start /home/computer/workspace/FreeRDP/server/shadow/shadow_server.c:626 (libfreerdp-shadow2.so.2+0x1e21d)
#4 main /home/computer/workspace/FreeRDP/server/shadow/shadow.c:84 (freerdp-shadow-cli+0x19f1)
SUMMARY: ThreadSanitizer: data race /home/computer/workspace/FreeRDP/winpr/libwinpr/utils/wlog/wlog.c:977 in WLog_FindChild
==================
==================
WARNING: ThreadSanitizer: data race (pid=10948)
Read of size 1 at 0x7b080001b660 by thread T3:
#0 strcmp ../../../../src/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:457 (libtsan.so.0+0x672c1)
#1 WLog_FindChild /home/computer/workspace/FreeRDP/winpr/libwinpr/utils/wlog/wlog.c:977 (libwinpr2.so.2+0xbf032)
#2 WLog_Get_int /home/computer/workspace/FreeRDP/winpr/libwinpr/utils/wlog/wlog.c:991 (libwinpr2.so.2+0xbf0b6)
#3 WLog_Get /home/computer/workspace/FreeRDP/winpr/libwinpr/utils/wlog/wlog.c:1012 (libwinpr2.so.2+0xbf169)
#4 shadow_multiclient_get_subscriber /home/computer/workspace/FreeRDP/server/shadow/shadow_mcevent.c:276 (libfreerdp-shadow2.so.2+0x1a204)
#5 shadow_client_thread /home/computer/workspace/FreeRDP/server/shadow/shadow_client.c:1659 (libfreerdp-shadow2.so.2+0xe4e8)
#6 thread_launcher /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:530 (libwinpr2.so.2+0xd15aa)
Previous write of size 8 at 0x7b080001b660 by thread T1:
#0 malloc ../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:655 (libtsan.so.0+0x31c57)
#1 __GI___strdup string/strdup.c:42 (libc.so.6+0xa860e)
#2 _strdup /home/computer/workspace/FreeRDP/winpr/libwinpr/crt/string.c:63 (libwinpr2.so.2+0x10564c)
#3 WLog_New /home/computer/workspace/FreeRDP/winpr/libwinpr/utils/wlog/wlog.c:829 (libwinpr2.so.2+0xbe862)
#4 WLog_Get_int /home/computer/workspace/FreeRDP/winpr/libwinpr/utils/wlog/wlog.c:996 (libwinpr2.so.2+0xbf0e2)
#5 WLog_Get /home/computer/workspace/FreeRDP/winpr/libwinpr/utils/wlog/wlog.c:1012 (libwinpr2.so.2+0xbf169)
#6 ThreadCloseHandle /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:728 (libwinpr2.so.2+0xd1fd0)
#7 CloseHandle /home/computer/workspace/FreeRDP/winpr/libwinpr/handle/handle.c:61 (libwinpr2.so.2+0xcca45)
#8 shadow_client_accepted /home/computer/workspace/FreeRDP/server/shadow/shadow_client.c:1951 (libfreerdp-shadow2.so.2+0xfe26)
#9 freerdp_listener_check_fds /home/computer/workspace/FreeRDP/libfreerdp/core/listener.c:368 (libfreerdp2.so.2+0x165753)
#10 shadow_server_thread /home/computer/workspace/FreeRDP/server/shadow/shadow_server.c:476 (libfreerdp-shadow2.so.2+0x1d6a5)
#11 thread_launcher /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:530 (libwinpr2.so.2+0xd15aa)
Location is heap block of size 17 at 0x7b080001b660 allocated by thread T1:
#0 malloc ../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:655 (libtsan.so.0+0x31c57)
#1 __GI___strdup string/strdup.c:42 (libc.so.6+0xa860e)
#2 _strdup /home/computer/workspace/FreeRDP/winpr/libwinpr/crt/string.c:63 (libwinpr2.so.2+0x10564c)
#3 WLog_New /home/computer/workspace/FreeRDP/winpr/libwinpr/utils/wlog/wlog.c:829 (libwinpr2.so.2+0xbe862)
#4 WLog_Get_int /home/computer/workspace/FreeRDP/winpr/libwinpr/utils/wlog/wlog.c:996 (libwinpr2.so.2+0xbf0e2)
#5 WLog_Get /home/computer/workspace/FreeRDP/winpr/libwinpr/utils/wlog/wlog.c:1012 (libwinpr2.so.2+0xbf169)
#6 ThreadCloseHandle /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:728 (libwinpr2.so.2+0xd1fd0)
#7 CloseHandle /home/computer/workspace/FreeRDP/winpr/libwinpr/handle/handle.c:61 (libwinpr2.so.2+0xcca45)
#8 shadow_client_accepted /home/computer/workspace/FreeRDP/server/shadow/shadow_client.c:1951 (libfreerdp-shadow2.so.2+0xfe26)
#9 freerdp_listener_check_fds /home/computer/workspace/FreeRDP/libfreerdp/core/listener.c:368 (libfreerdp2.so.2+0x165753)
#10 shadow_server_thread /home/computer/workspace/FreeRDP/server/shadow/shadow_server.c:476 (libfreerdp-shadow2.so.2+0x1d6a5)
#11 thread_launcher /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:530 (libwinpr2.so.2+0xd15aa)
Thread T3 (tid=10957, running) created by thread T1 at:
#0 pthread_create ../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:969 (libtsan.so.0+0x605b8)
#1 winpr_StartThread /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:578 (libwinpr2.so.2+0xd17c6)
#2 CreateThread /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:660 (libwinpr2.so.2+0xd1d7c)
#3 shadow_client_accepted /home/computer/workspace/FreeRDP/server/shadow/shadow_client.c:1943 (libfreerdp-shadow2.so.2+0xfdac)
#4 freerdp_listener_check_fds /home/computer/workspace/FreeRDP/libfreerdp/core/listener.c:368 (libfreerdp2.so.2+0x165753)
#5 shadow_server_thread /home/computer/workspace/FreeRDP/server/shadow/shadow_server.c:476 (libfreerdp-shadow2.so.2+0x1d6a5)
#6 thread_launcher /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:530 (libwinpr2.so.2+0xd15aa)
Thread T1 (tid=10950, running) created by main thread at:
#0 pthread_create ../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:969 (libtsan.so.0+0x605b8)
#1 winpr_StartThread /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:578 (libwinpr2.so.2+0xd17c6)
#2 CreateThread /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:660 (libwinpr2.so.2+0xd1d7c)
#3 shadow_server_start /home/computer/workspace/FreeRDP/server/shadow/shadow_server.c:626 (libfreerdp-shadow2.so.2+0x1e21d)
#4 main /home/computer/workspace/FreeRDP/server/shadow/shadow.c:84 (freerdp-shadow-cli+0x19f1)
SUMMARY: ThreadSanitizer: data race /home/computer/workspace/FreeRDP/winpr/libwinpr/utils/wlog/wlog.c:977 in WLog_FindChild
==================
[00:13:15:262] [10948:10957] [INFO][com.freerdp.core.connection] - Client Security: NLA:1 TLS:1 RDP:0
[00:13:15:263] [10948:10957] [INFO][com.freerdp.core.connection] - Server Security: NLA:0 TLS:1 RDP:0
[00:13:15:263] [10948:10957] [INFO][com.freerdp.core.connection] - Negotiated Security: NLA:0 TLS:1 RDP:0
[00:13:15:365] [10948:10957] [ERROR][com.freerdp.core.transport] - BIO_read returned a system error 0: Success
[00:13:15:365] [10948:10957] [ERROR][com.freerdp.core] - transport_read_layer:freerdp_set_last_error_ex ERRCONNECT_CONNECT_TRANSPORT_FAILED [0x0002000D]
[00:13:15:366] [10948:10957] [ERROR][com.freerdp.client.shadow] - Failed to check FreeRDP file descriptor
==================
WARNING: ThreadSanitizer: data race (pid=10948)
Read of size 4 at 0x7b4c00011128 by thread T3:
#0 thread_launcher /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:544 (libwinpr2.so.2+0xd162d)
Previous write of size 4 at 0x7b4c00011128 by thread T1:
#0 ThreadCloseHandle /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:729 (libwinpr2.so.2+0xd2070)
#1 CloseHandle /home/computer/workspace/FreeRDP/winpr/libwinpr/handle/handle.c:61 (libwinpr2.so.2+0xcca45)
#2 shadow_client_accepted /home/computer/workspace/FreeRDP/server/shadow/shadow_client.c:1951 (libfreerdp-shadow2.so.2+0xfe26)
#3 freerdp_listener_check_fds /home/computer/workspace/FreeRDP/libfreerdp/core/listener.c:368 (libfreerdp2.so.2+0x165753)
#4 shadow_server_thread /home/computer/workspace/FreeRDP/server/shadow/shadow_server.c:476 (libfreerdp-shadow2.so.2+0x1d6a5)
#5 thread_launcher /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:530 (libwinpr2.so.2+0xd15aa)
Location is heap block of size 416 at 0x7b4c00011100 allocated by thread T1:
#0 calloc ../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:672 (libtsan.so.0+0x31edc)
#1 CreateThread /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:615 (libwinpr2.so.2+0xd199b)
#2 shadow_client_accepted /home/computer/workspace/FreeRDP/server/shadow/shadow_client.c:1943 (libfreerdp-shadow2.so.2+0xfdac)
#3 freerdp_listener_check_fds /home/computer/workspace/FreeRDP/libfreerdp/core/listener.c:368 (libfreerdp2.so.2+0x165753)
#4 shadow_server_thread /home/computer/workspace/FreeRDP/server/shadow/shadow_server.c:476 (libfreerdp-shadow2.so.2+0x1d6a5)
#5 thread_launcher /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:530 (libwinpr2.so.2+0xd15aa)
Thread T3 (tid=10957, running) created by thread T1 at:
#0 pthread_create ../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:969 (libtsan.so.0+0x605b8)
#1 winpr_StartThread /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:578 (libwinpr2.so.2+0xd17c6)
#2 CreateThread /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:660 (libwinpr2.so.2+0xd1d7c)
#3 shadow_client_accepted /home/computer/workspace/FreeRDP/server/shadow/shadow_client.c:1943 (libfreerdp-shadow2.so.2+0xfdac)
#4 freerdp_listener_check_fds /home/computer/workspace/FreeRDP/libfreerdp/core/listener.c:368 (libfreerdp2.so.2+0x165753)
#5 shadow_server_thread /home/computer/workspace/FreeRDP/server/shadow/shadow_server.c:476 (libfreerdp-shadow2.so.2+0x1d6a5)
#6 thread_launcher /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:530 (libwinpr2.so.2+0xd15aa)
Thread T1 (tid=10950, running) created by main thread at:
#0 pthread_create ../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:969 (libtsan.so.0+0x605b8)
#1 winpr_StartThread /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:578 (libwinpr2.so.2+0xd17c6)
#2 CreateThread /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:660 (libwinpr2.so.2+0xd1d7c)
#3 shadow_server_start /home/computer/workspace/FreeRDP/server/shadow/shadow_server.c:626 (libfreerdp-shadow2.so.2+0x1e21d)
#4 main /home/computer/workspace/FreeRDP/server/shadow/shadow.c:84 (freerdp-shadow-cli+0x19f1)
SUMMARY: ThreadSanitizer: data race /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:544 in thread_launcher
==================
==================
WARNING: ThreadSanitizer: data race (pid=10948)
Write of size 8 at 0x7b4c00011100 by thread T3:
#0 free ../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:711 (libtsan.so.0+0x37ab8)
#1 cleanup_handle /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:702 (libwinpr2.so.2+0xd1f2f)
#2 thread_launcher /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:545 (libwinpr2.so.2+0xd165f)
Previous read of size 4 at 0x7b4c00011104 by thread T1:
#0 WaitForSingleObjectEx /home/computer/workspace/FreeRDP/winpr/libwinpr/synch/wait.c:258 (libwinpr2.so.2+0x46a55)
#1 WaitForSingleObject /home/computer/workspace/FreeRDP/winpr/libwinpr/synch/wait.c:301 (libwinpr2.so.2+0x46e87)
#2 ThreadCloseHandle /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:726 (libwinpr2.so.2+0xd1f9e)
#3 CloseHandle /home/computer/workspace/FreeRDP/winpr/libwinpr/handle/handle.c:61 (libwinpr2.so.2+0xcca45)
#4 shadow_client_accepted /home/computer/workspace/FreeRDP/server/shadow/shadow_client.c:1951 (libfreerdp-shadow2.so.2+0xfe26)
#5 freerdp_listener_check_fds /home/computer/workspace/FreeRDP/libfreerdp/core/listener.c:368 (libfreerdp2.so.2+0x165753)
#6 shadow_server_thread /home/computer/workspace/FreeRDP/server/shadow/shadow_server.c:476 (libfreerdp-shadow2.so.2+0x1d6a5)
#7 thread_launcher /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:530 (libwinpr2.so.2+0xd15aa)
Thread T3 (tid=10957, running) created by thread T1 at:
#0 pthread_create ../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:969 (libtsan.so.0+0x605b8)
#1 winpr_StartThread /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:578 (libwinpr2.so.2+0xd17c6)
#2 CreateThread /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:660 (libwinpr2.so.2+0xd1d7c)
#3 shadow_client_accepted /home/computer/workspace/FreeRDP/server/shadow/shadow_client.c:1943 (libfreerdp-shadow2.so.2+0xfdac)
#4 freerdp_listener_check_fds /home/computer/workspace/FreeRDP/libfreerdp/core/listener.c:368 (libfreerdp2.so.2+0x165753)
#5 shadow_server_thread /home/computer/workspace/FreeRDP/server/shadow/shadow_server.c:476 (libfreerdp-shadow2.so.2+0x1d6a5)
#6 thread_launcher /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:530 (libwinpr2.so.2+0xd15aa)
Thread T1 (tid=10950, running) created by main thread at:
#0 pthread_create ../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:969 (libtsan.so.0+0x605b8)
#1 winpr_StartThread /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:578 (libwinpr2.so.2+0xd17c6)
#2 CreateThread /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:660 (libwinpr2.so.2+0xd1d7c)
#3 shadow_server_start /home/computer/workspace/FreeRDP/server/shadow/shadow_server.c:626 (libfreerdp-shadow2.so.2+0x1e21d)
#4 main /home/computer/workspace/FreeRDP/server/shadow/shadow.c:84 (freerdp-shadow-cli+0x19f1)
SUMMARY: ThreadSanitizer: data race /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:702 in cleanup_handle
==================
==================
WARNING: ThreadSanitizer: data race (pid=10948)
Write of size 8 at 0x7b4c00011108 by thread T3:
#0 free ../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:711 (libtsan.so.0+0x37ab8)
#1 cleanup_handle /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:702 (libwinpr2.so.2+0xd1f2f)
#2 thread_launcher /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:545 (libwinpr2.so.2+0xd165f)
Previous read of size 8 at 0x7b4c00011108 by thread T1:
#0 CloseHandle /home/computer/workspace/FreeRDP/winpr/libwinpr/handle/handle.c:57 (libwinpr2.so.2+0xcc9c7)
#1 shadow_client_accepted /home/computer/workspace/FreeRDP/server/shadow/shadow_client.c:1951 (libfreerdp-shadow2.so.2+0xfe26)
#2 freerdp_listener_check_fds /home/computer/workspace/FreeRDP/libfreerdp/core/listener.c:368 (libfreerdp2.so.2+0x165753)
#3 shadow_server_thread /home/computer/workspace/FreeRDP/server/shadow/shadow_server.c:476 (libfreerdp-shadow2.so.2+0x1d6a5)
#4 thread_launcher /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:530 (libwinpr2.so.2+0xd15aa)
Thread T3 (tid=10957, running) created by thread T1 at:
#0 pthread_create ../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:969 (libtsan.so.0+0x605b8)
#1 winpr_StartThread /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:578 (libwinpr2.so.2+0xd17c6)
#2 CreateThread /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:660 (libwinpr2.so.2+0xd1d7c)
#3 shadow_client_accepted /home/computer/workspace/FreeRDP/server/shadow/shadow_client.c:1943 (libfreerdp-shadow2.so.2+0xfdac)
#4 freerdp_listener_check_fds /home/computer/workspace/FreeRDP/libfreerdp/core/listener.c:368 (libfreerdp2.so.2+0x165753)
#5 shadow_server_thread /home/computer/workspace/FreeRDP/server/shadow/shadow_server.c:476 (libfreerdp-shadow2.so.2+0x1d6a5)
#6 thread_launcher /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:530 (libwinpr2.so.2+0xd15aa)
Thread T1 (tid=10950, running) created by main thread at:
#0 pthread_create ../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:969 (libtsan.so.0+0x605b8)
#1 winpr_StartThread /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:578 (libwinpr2.so.2+0xd17c6)
#2 CreateThread /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:660 (libwinpr2.so.2+0xd1d7c)
#3 shadow_server_start /home/computer/workspace/FreeRDP/server/shadow/shadow_server.c:626 (libfreerdp-shadow2.so.2+0x1e21d)
#4 main /home/computer/workspace/FreeRDP/server/shadow/shadow.c:84 (freerdp-shadow-cli+0x19f1)
SUMMARY: ThreadSanitizer: data race /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:702 in cleanup_handle
==================
==================
WARNING: ThreadSanitizer: data race (pid=10948)
Write of size 8 at 0x7b4c00011110 by thread T3:
#0 free ../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:711 (libtsan.so.0+0x37ab8)
#1 cleanup_handle /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:702 (libwinpr2.so.2+0xd1f2f)
#2 thread_launcher /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:545 (libwinpr2.so.2+0xd165f)
Previous read of size 4 at 0x7b4c00011110 by thread T1:
#0 ThreadCloseHandle /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:726 (libwinpr2.so.2+0xd1f7e)
#1 CloseHandle /home/computer/workspace/FreeRDP/winpr/libwinpr/handle/handle.c:61 (libwinpr2.so.2+0xcca45)
#2 shadow_client_accepted /home/computer/workspace/FreeRDP/server/shadow/shadow_client.c:1951 (libfreerdp-shadow2.so.2+0xfe26)
#3 freerdp_listener_check_fds /home/computer/workspace/FreeRDP/libfreerdp/core/listener.c:368 (libfreerdp2.so.2+0x165753)
#4 shadow_server_thread /home/computer/workspace/FreeRDP/server/shadow/shadow_server.c:476 (libfreerdp-shadow2.so.2+0x1d6a5)
#5 thread_launcher /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:530 (libwinpr2.so.2+0xd15aa)
Thread T3 (tid=10957, running) created by thread T1 at:
#0 pthread_create ../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:969 (libtsan.so.0+0x605b8)
#1 winpr_StartThread /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:578 (libwinpr2.so.2+0xd17c6)
#2 CreateThread /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:660 (libwinpr2.so.2+0xd1d7c)
#3 shadow_client_accepted /home/computer/workspace/FreeRDP/server/shadow/shadow_client.c:1943 (libfreerdp-shadow2.so.2+0xfdac)
#4 freerdp_listener_check_fds /home/computer/workspace/FreeRDP/libfreerdp/core/listener.c:368 (libfreerdp2.so.2+0x165753)
#5 shadow_server_thread /home/computer/workspace/FreeRDP/server/shadow/shadow_server.c:476 (libfreerdp-shadow2.so.2+0x1d6a5)
#6 thread_launcher /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:530 (libwinpr2.so.2+0xd15aa)
Thread T1 (tid=10950, running) created by main thread at:
#0 pthread_create ../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:969 (libtsan.so.0+0x605b8)
#1 winpr_StartThread /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:578 (libwinpr2.so.2+0xd17c6)
#2 CreateThread /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:660 (libwinpr2.so.2+0xd1d7c)
#3 shadow_server_start /home/computer/workspace/FreeRDP/server/shadow/shadow_server.c:626 (libfreerdp-shadow2.so.2+0x1e21d)
#4 main /home/computer/workspace/FreeRDP/server/shadow/shadow.c:84 (freerdp-shadow-cli+0x19f1)
SUMMARY: ThreadSanitizer: data race /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:702 in cleanup_handle
==================
==================
WARNING: ThreadSanitizer: data race (pid=10948)
Write of size 8 at 0x7b4c00011118 by thread T3:
#0 free ../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:711 (libtsan.so.0+0x37ab8)
#1 cleanup_handle /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:702 (libwinpr2.so.2+0xd1f2f)
#2 thread_launcher /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:545 (libwinpr2.so.2+0xd165f)
Previous read of size 4 at 0x7b4c00011118 by thread T1:
#0 ThreadGetFd /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:129 (libwinpr2.so.2+0xcf4fb)
#1 winpr_Handle_getFd /home/computer/workspace/FreeRDP/winpr/libwinpr/synch/../handle/handle.h:158 (libwinpr2.so.2+0x46020)
#2 WaitForSingleObjectEx /home/computer/workspace/FreeRDP/winpr/libwinpr/synch/wait.c:243 (libwinpr2.so.2+0x4685f)
#3 WaitForSingleObject /home/computer/workspace/FreeRDP/winpr/libwinpr/synch/wait.c:301 (libwinpr2.so.2+0x46e87)
#4 ThreadCloseHandle /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:726 (libwinpr2.so.2+0xd1f9e)
#5 CloseHandle /home/computer/workspace/FreeRDP/winpr/libwinpr/handle/handle.c:61 (libwinpr2.so.2+0xcca45)
#6 shadow_client_accepted /home/computer/workspace/FreeRDP/server/shadow/shadow_client.c:1951 (libfreerdp-shadow2.so.2+0xfe26)
#7 freerdp_listener_check_fds /home/computer/workspace/FreeRDP/libfreerdp/core/listener.c:368 (libfreerdp2.so.2+0x165753)
#8 shadow_server_thread /home/computer/workspace/FreeRDP/server/shadow/shadow_server.c:476 (libfreerdp-shadow2.so.2+0x1d6a5)
#9 thread_launcher /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:530 (libwinpr2.so.2+0xd15aa)
Thread T3 (tid=10957, running) created by thread T1 at:
#0 pthread_create ../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:969 (libtsan.so.0+0x605b8)
#1 winpr_StartThread /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:578 (libwinpr2.so.2+0xd17c6)
#2 CreateThread /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:660 (libwinpr2.so.2+0xd1d7c)
#3 shadow_client_accepted /home/computer/workspace/FreeRDP/server/shadow/shadow_client.c:1943 (libfreerdp-shadow2.so.2+0xfdac)
#4 freerdp_listener_check_fds /home/computer/workspace/FreeRDP/libfreerdp/core/listener.c:368 (libfreerdp2.so.2+0x165753)
#5 shadow_server_thread /home/computer/workspace/FreeRDP/server/shadow/shadow_server.c:476 (libfreerdp-shadow2.so.2+0x1d6a5)
#6 thread_launcher /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:530 (libwinpr2.so.2+0xd15aa)
Thread T1 (tid=10950, running) created by main thread at:
#0 pthread_create ../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:969 (libtsan.so.0+0x605b8)
#1 winpr_StartThread /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:578 (libwinpr2.so.2+0xd17c6)
#2 CreateThread /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:660 (libwinpr2.so.2+0xd1d7c)
#3 shadow_server_start /home/computer/workspace/FreeRDP/server/shadow/shadow_server.c:626 (libfreerdp-shadow2.so.2+0x1e21d)
#4 main /home/computer/workspace/FreeRDP/server/shadow/shadow.c:84 (freerdp-shadow-cli+0x19f1)
SUMMARY: ThreadSanitizer: data race /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:702 in cleanup_handle
==================
==================
WARNING: ThreadSanitizer: data race (pid=10948)
Write of size 8 at 0x7b4c00011148 by thread T3:
#0 free ../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:711 (libtsan.so.0+0x37ab8)
#1 cleanup_handle /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:702 (libwinpr2.so.2+0xd1f2f)
#2 thread_launcher /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:545 (libwinpr2.so.2+0xd165f)
Previous read of size 8 at 0x7b4c00011148 by thread T1:
#0 ThreadCloseHandle /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:730 (libwinpr2.so.2+0xd208b)
#1 CloseHandle /home/computer/workspace/FreeRDP/winpr/libwinpr/handle/handle.c:61 (libwinpr2.so.2+0xcca45)
#2 shadow_client_accepted /home/computer/workspace/FreeRDP/server/shadow/shadow_client.c:1951 (libfreerdp-shadow2.so.2+0xfe26)
#3 freerdp_listener_check_fds /home/computer/workspace/FreeRDP/libfreerdp/core/listener.c:368 (libfreerdp2.so.2+0x165753)
#4 shadow_server_thread /home/computer/workspace/FreeRDP/server/shadow/shadow_server.c:476 (libfreerdp-shadow2.so.2+0x1d6a5)
#5 thread_launcher /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:530 (libwinpr2.so.2+0xd15aa)
Thread T3 (tid=10957, running) created by thread T1 at:
#0 pthread_create ../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:969 (libtsan.so.0+0x605b8)
#1 winpr_StartThread /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:578 (libwinpr2.so.2+0xd17c6)
#2 CreateThread /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:660 (libwinpr2.so.2+0xd1d7c)
#3 shadow_client_accepted /home/computer/workspace/FreeRDP/server/shadow/shadow_client.c:1943 (libfreerdp-shadow2.so.2+0xfdac)
#4 freerdp_listener_check_fds /home/computer/workspace/FreeRDP/libfreerdp/core/listener.c:368 (libfreerdp2.so.2+0x165753)
#5 shadow_server_thread /home/computer/workspace/FreeRDP/server/shadow/shadow_server.c:476 (libfreerdp-shadow2.so.2+0x1d6a5)
#6 thread_launcher /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:530 (libwinpr2.so.2+0xd15aa)
Thread T1 (tid=10950, running) created by main thread at:
#0 pthread_create ../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:969 (libtsan.so.0+0x605b8)
#1 winpr_StartThread /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:578 (libwinpr2.so.2+0xd17c6)
#2 CreateThread /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:660 (libwinpr2.so.2+0xd1d7c)
#3 shadow_server_start /home/computer/workspace/FreeRDP/server/shadow/shadow_server.c:626 (libfreerdp-shadow2.so.2+0x1e21d)
#4 main /home/computer/workspace/FreeRDP/server/shadow/shadow.c:84 (freerdp-shadow-cli+0x19f1)
SUMMARY: ThreadSanitizer: data race /home/computer/workspace/FreeRDP/winpr/libwinpr/thread/thread.c:702 in cleanup_handle
==================
[00:13:17:390] [10948:10958] [INFO][com.freerdp.core.connection] - Client Security: NLA:1 TLS:1 RDP:0
[00:13:17:390] [10948:10958] [INFO][com.freerdp.core.connection] - Server Security: NLA:0 TLS:1 RDP:0
[00:13:17:391] [10948:10958] [INFO][com.freerdp.core.connection] - Negotiated Security: NLA:0 TLS:1 RDP:0
[00:13:17:493] [10948:10958] [INFO][com.freerdp.core.connection] - Accepted client: WINDOWS
[00:13:17:493] [10948:10958] [INFO][com.freerdp.core.connection] - Accepted channels:
[00:13:17:493] [10948:10958] [INFO][com.freerdp.core.connection] - rdpdr
[00:13:17:493] [10948:10958] [INFO][com.freerdp.core.connection] - rdpsnd
[00:13:17:493] [10948:10958] [INFO][com.freerdp.core.connection] - cliprdr
[00:13:17:494] [10948:10958] [INFO][com.freerdp.core.connection] - drdynvc
[00:13:17:494] [10948:10958] [INFO][com.freerdp.core.gcc] - Active rdp encryption level: NONE
[00:13:17:494] [10948:10958] [INFO][com.freerdp.core.gcc] - Selected rdp encryption method: NONE
[00:13:17:671] [10948:10958] [INFO][com.freerdp.client.shadow] - Client from 192.168.0.115 is activated (1366x768@32)
[00:13:17:715] [10948:10958] [WARN][com.freerdp.server.shadow.x11] - x11_shadow_input_synchronize_event not implemented
About this issue
- Original URL
- State: closed
- Created a year ago
- Comments: 48 (21 by maintainers)
@akallabeth It seems your recent comments have fixed everything. Thank you!
@EnchantedHunter did create a pull request #9230 that should address this issue.
@EnchantedHunter that looks like you nailed it.
Hello, I think I managed to find a pattern. So there is a function rdpgfx_send_caps_confirm_pdu that sends 22 bytes to rdpgfx_channel, and there is a function rdpgfx_send_reset_graphics_pdu that sends 342 bytes to rdpgfx_channel. They are called in different threads and if rdpgfx_send_caps_confirm_pdu is called first, then the connection is established, otherwise the connection is broken.
You are absolutely right, the problem is in rdpgfx.