When destroying the IPCP, sometimes there is a data race. Probably there are threads running while the mutexes are destroyed. WARNING: ThreadSanitizer: data race (pid=1988) WARNING: ThreadSanitizer: data race (pid=1901) Write of size 8 at 0x7b0800006018 by thread T19 Write of size 8 at 0x7b080001a018 by thread T19 (mutexes: (mutexes: read M582793278524728976 read M582793550640842384)): : #0 free /build/gcc/src/gcc/libsanitizer/tsan/tsan_interceptors.cc:706 (libtsan.so.0+0x2c91d) #0 free /build/gcc/src/gcc/libsanitizer/tsan/tsan_interceptors.cc:706 (libtsan.so.0+0x2c91d) #1 lsdb_del_nb /home/dstaesse/git/ouroboros/src/ipcpd/unicast/pol/link_state.c:367 (ipcpd-unicast+0x21b52) #1 lsdb_del_nb /home/dstaesse/git/ouroboros/src/ipcpd/unicast/pol/link_state.c:367 (ipcpd-unicast+0x21b52) #2 handle_event /home/dstaesse/git/ouroboros/src/ipcpd/unicast/pol/link_state.c:805 (ipcpd-unicast+0x239a8) #2 handle_event /home/dstaesse/git/ouroboros/src/ipcpd/unicast/pol/link_state.c:805 (ipcpd-unicast+0x239a8) #3 notifier_event /home/dstaesse/git/ouroboros/src/lib/notifier.c:83 (libouroboros-common.so+0xd262) #3 notifier_event /home/dstaesse/git/ouroboros/src/lib/notifier.c:83 (libouroboros-common.so+0xd262) #4 handle_event /home/dstaesse/git/ouroboros/src/ipcpd/unicast/connmgr.c:216 (ipcpd-unicast+0x56b7) #4 handle_event /home/dstaesse/git/ouroboros/src/ipcpd/unicast/connmgr.c:216 (ipcpd-unicast+0x56b7) #5 notifier_event /home/dstaesse/git/ouroboros/src/lib/notifier.c:83 (libouroboros-common.so+0xd262) #5 notifier_event /home/dstaesse/git/ouroboros/src/lib/notifier.c:83 (libouroboros-common.so+0xd262) #6 packet_reader /home/dstaesse/git/ouroboros/src/ipcpd/unicast/psched.c:95 (ipcpd-unicast+0x1ef15) #6 packet_reader /home/dstaesse/git/ouroboros/src/ipcpd/unicast/psched.c:95 (ipcpd-unicast+0x1ef15) Previous read of size 4 at 0x7b080001a018 by thread T17 (mutexes: Previous read of size 4 at 0x7b0800006018 by thread T17 write M586447685137998024 (mutexes:) write M587573585044840776: ): #0 nbr_to_fd /home/dstaesse/git/ouroboros/src/ipcpd/unicast/pol/link_state.c:387 (ipcpd-unicast+0x21c43) #0 nbr_to_fd /home/dstaesse/git/ouroboros/src/ipcpd/unicast/pol/link_state.c:387 (ipcpd-unicast+0x21c43) #1 calculate_pff /home/dstaesse/git/ouroboros/src/ipcpd/unicast/pol/link_state.c:421 (ipcpd-unicast+0x21dfe) #1 calculate_pff /home/dstaesse/git/ouroboros/src/ipcpd/unicast/pol/link_state.c:421 (ipcpd-unicast+0x21dfe) #2 periodic_recalc_pff /home/dstaesse/git/ouroboros/src/ipcpd/unicast/pol/link_state.c:549 (ipcpd-unicast+0x2266e) #2 periodic_recalc_pff /home/dstaesse/git/ouroboros/src/ipcpd/unicast/pol/link_state.c:549 (ipcpd-unicast+0x2266e) Mutex M582793550640842384 is already destroyed. Mutex M582793278524728976 is already destroyed. Mutex M586447685137998024 is already destroyed. Mutex M587573585044840776 is already destroyed. Thread T19 (tid=1921, running) created by thread T4 Thread T19 at: (tid=2032, running) created by thread T4 at: #0 pthread_create /build/gcc/src/gcc/libsanitizer/tsan/tsan_interceptors.cc:964 (libtsan.so.0+0x2d683) #0 pthread_create /build/gcc/src/gcc/libsanitizer/tsan/tsan_interceptors.cc:964 (libtsan.so.0+0x2d683) #1 psched_create /home/dstaesse/git/ouroboros/src/ipcpd/unicast/psched.c:156 (ipcpd-unicast+0x1f324) #1 psched_create /home/dstaesse/git/ouroboros/src/ipcpd/unicast/psched.c:156 (ipcpd-unicast+0x1f324) #2 dt_start /home/dstaesse/git/ouroboros/src/ipcpd/unicast/dt.c:765 (ipcpd-unicast+0x16eca) #2 dt_start /home/dstaesse/git/ouroboros/src/ipcpd/unicast/dt.c:765 (ipcpd-unicast+0x16eca) #3 unicast_ipcp_bootstrap /home/dstaesse/git/ouroboros/src/ipcpd/unicast/main.c:255 (ipcpd-unicast+0x1ddc4) #3 unicast_ipcp_enroll /home/dstaesse/git/ouroboros/src/ipcpd/unicast/main.c:210 (ipcpd-unicast+0x1d90b) #4 mainloop /home/dstaesse/git/ouroboros/src/ipcpd/ipcp.c:298 (ipcpd-unicast+0x2881c) #4 mainloop /home/dstaesse/git/ouroboros/src/ipcpd/ipcp.c:320 (ipcpd-unicast+0x28a92) Thread T17 (tid=1919, running) created by thread T4 Thread T17 at: (tid=2030, running) created by thread T4 at: #0 pthread_create /build/gcc/src/gcc/libsanitizer/tsan/tsan_interceptors.cc:964 (libtsan.so.0+0x2d683) #0 pthread_create /build/gcc/src/gcc/libsanitizer/tsan/tsan_interceptors.cc:964 (libtsan.so.0+0x2d683) #1 link_state_routing_i_create /home/dstaesse/git/ouroboros/src/ipcpd/unicast/pol/link_state.c:855 (ipcpd-unicast+0x23f6b) #1 link_state_routing_i_create /home/dstaesse/git/ouroboros/src/ipcpd/unicast/pol/link_state.c:855 (ipcpd-unicast+0x23f6b) #2 routing_i_create /home/dstaesse/git/ouroboros/src/ipcpd/unicast/routing.c:48 (ipcpd-unicast+0x1ec58) #2 routing_i_create /home/dstaesse/git/ouroboros/src/ipcpd/unicast/routing.c:48 (ipcpd-unicast+0x1ec58) #3 dt_init /home/dstaesse/git/ouroboros/src/ipcpd/unicast/dt.c:678 (ipcpd-unicast+0x16894) #3 dt_init /home/dstaesse/git/ouroboros/src/ipcpd/unicast/dt.c:678 (ipcpd-unicast+0x16894) #4 initialize_components /home/dstaesse/git/ouroboros/src/ipcpd/unicast/main.c:84 (ipcpd-unicast+0x1d149) #4 initialize_components /home/dstaesse/git/ouroboros/src/ipcpd/unicast/main.c:84 (ipcpd-unicast+0x1d149) #5 unicast_ipcp_bootstrap /home/dstaesse/git/ouroboros/src/ipcpd/unicast/main.c:250 (ipcpd-unicast+0x1dd30) #5 unicast_ipcp_enroll /home/dstaesse/git/ouroboros/src/ipcpd/unicast/main.c:205 (ipcpd-unicast+0x1d877) #6 mainloop /home/dstaesse/git/ouroboros/src/ipcpd/ipcp.c:298 (ipcpd-unicast+0x2881c) #6 mainloop /home/dstaesse/git/ouroboros/src/ipcpd/ipcp.c:320 (ipcpd-unicast+0x28a92) SUMMARY: ThreadSanitizer: data race /home/dstaesse/git/ouroboros/src/ipcpd/unicast/pol/link_state.c:367 in lsdb_del_nb SUMMARY: ThreadSanitizer: data race /home/dstaesse/git/ouroboros/src/ipcpd/unicast/pol/link_state.c:367 in lsdb_del_nb