frr
frr copied to clipboard
Data race in zserv.c
Description
WARNING: ThreadSanitizer: data race (pid=97248)
Write of size 8 at 0x7b8000005098 by main thread (mutexes: write M647):
#0 _event_add_read_write lib/event.c:1031 (libfrr.so.0+0x58e8bb)
#1 zserv_client_event zebra/zserv.c:492 (zebra+0x521937)
#2 zserv_send_message zebra/zserv.c:566 (zebra+0x521e34)
#3 zsend_client_close_notify zebra/zapi_msg.c:2775 (zebra+0x2e7087)
#4 zserv_client_close_cb zebra/zserv.c:1335 (zebra+0x52a328)
#5 hook_call_zserv_client_close zebra/zserv.c:593 (zebra+0x5223d7)
#6 zserv_client_free zebra/zserv.c:612 (zebra+0x5224c9)
#7 zserv_close_client zebra/zserv.c:741 (zebra+0x523dfe)
#8 sigint zebra/main.c:172 (zebra+0x2755ee)
#9 frr_sigevent_process lib/sigevent.c:117 (libfrr.so.0+0x527cde)
#10 event_fetch lib/event.c:1784 (libfrr.so.0+0x596941)
#11 frr_run lib/libfrr.c:1216 (libfrr.so.0+0x3b36be)
#12 main zebra/main.c:521 (zebra+0x2764a6)
Previous read of size 8 at 0x7b8000005098 by thread T9:
#0 zserv_client_fail zebra/zserv.c:193 (zebra+0x51f50e)
#1 zserv_read zebra/zserv.c:480 (zebra+0x5215e4)
#2 event_call lib/event.c:2013 (libfrr.so.0+0x5984e1)
#3 fpt_run lib/frr_pthread.c:369 (libfrr.so.0+0x354611)
#4 frr_pthread_inner lib/frr_pthread.c:178 (libfrr.so.0+0x352fb9)
Location is heap block of size 3784 at 0x7b8000005000 allocated by main thread:
#0 calloc ../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:667 (libtsan.so.2+0x3fdd2)
#1 qcalloc lib/memory.c:105 (libfrr.so.0+0x3f5980)
#2 zserv_client_create zebra/zserv.c:775 (zebra+0x523eff)
#3 zserv_accept zebra/zserv.c:912 (zebra+0x52507c)
#4 event_call lib/event.c:2013 (libfrr.so.0+0x5984e1)
#5 frr_run lib/libfrr.c:1217 (libfrr.so.0+0x3b36a5)
#6 main zebra/main.c:521 (zebra+0x2764a6)
Mutex M647 (0x7b4800003b90) created at:
#0 pthread_mutex_init ../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:1295 (libtsan.so.2+0x53ca6)
#1 event_master_create lib/event.c:557 (libfrr.so.0+0x58985d)
#2 frr_pthread_new lib/frr_pthread.c:81 (libfrr.so.0+0x351b93)
#3 zserv_client_create zebra/zserv.c:809 (zebra+0x52492c)
#4 zserv_accept zebra/zserv.c:912 (zebra+0x52507c)
#5 event_call lib/event.c:2013 (libfrr.so.0+0x5984e1)
#6 frr_run lib/libfrr.c:1217 (libfrr.so.0+0x3b36a5)
#7 main zebra/main.c:521 (zebra+0x2764a6)
Thread T9 'zebra_apic' (tid=97345, finished) created by main thread at:
#0 pthread_create ../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:1001 (libtsan.so.2+0x63a59)
#1 frr_pthread_run lib/frr_pthread.c:197 (libfrr.so.0+0x35319d)
#2 zserv_client_create zebra/zserv.c:819 (zebra+0x5249cf)
#3 zserv_accept zebra/zserv.c:912 (zebra+0x52507c)
#4 event_call lib/event.c:2013 (libfrr.so.0+0x5984e1)
#5 frr_run lib/libfrr.c:1217 (libfrr.so.0+0x3b36a5)
#6 main zebra/main.c:521 (zebra+0x2764a6)
SUMMARY: ThreadSanitizer: data race lib/event.c:1031 in _event_add_read_write
Run with --enable-thread-sanitizer and --enable-undefined-sanitizer
This error is happening in a bunch of topotests, but can be seen in bgp_accept_own
Version
master
How to reproduce
described above
Expected behavior
no data race
Actual behavior
data race
Additional context
No response
Checklist
- [X] I have searched the open issues for this bug.
- [X] I have not included sensitive information in this report.