frr icon indicating copy to clipboard operation
frr copied to clipboard

Data race in zserv.c

Open donaldsharp opened this issue 1 year ago • 0 comments

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.

donaldsharp avatar Jun 19 '24 12:06 donaldsharp