[ 
https://issues.apache.org/jira/browse/DISPATCH-2203?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17483130#comment-17483130
 ] 

Jiri Daněk commented on DISPATCH-2203:
--------------------------------------

https://github.com/apache/qpid-dispatch/runs/4957906112?check_suite_focus=true#step:27:1123

{noformat}
WARNING: ThreadSanitizer: data race (pid=1889)
  Write of size 8 at 0x7b400000af00 by thread T2 (mutexes: write M13):
    #0 qd_dealloc 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/alloc_pool.c:470
 (qdrouterd+0x44b652)
    #1 free_qd_message_t 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/message.c:93 
(qdrouterd+0x46e049)
    #2 qd_message_free 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/message.c:1128 
(qdrouterd+0x46e049)
    #3 qd_python_send 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/python_embedded.c:798
 (qdrouterd+0x4830a0)
    #4 method_vectorcall_VARARGS <null> (libpython3.10.so.1.0+0x12ca80)
    #5 qd_router_timer_handler 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/router_node.c:1622
 (qdrouterd+0x4cf2dc)
    #6 qd_timer_visit 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/timer.c:320 
(qdrouterd+0x4dd7cf)
    #7 handle 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/server.c:1026 
(qdrouterd+0x4d8a96)
    #8 thread_run 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/server.c:1141 
(qdrouterd+0x4daeb7)
    #9 _thread_init 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/posix/threading.c:172
 (qdrouterd+0x4812dd)

  Previous read of size 8 at 0x7b400000af00 by main thread:
    #0 qd_alloc_sequence 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/alloc_pool.c:514
 (qdrouterd+0x44bef0)
    #1 qd_alloc_deref_safe_ptr 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/include/qpid/dispatch/alloc_pool.h:102
 (qdrouterd+0x45c033)
    #2 cleanup_link 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/container.c:350 
(qdrouterd+0x45c033)
    #3 qd_link_free 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/container.c:997 
(qdrouterd+0x45c1c9)
    #4 qd_link_free 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/container.c:988 
(qdrouterd+0x45dd32)
    #5 AMQP_link_detach_handler 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/router_node.c:1158
 (qdrouterd+0x4d38f1)
    #6 AMQP_link_detach_handler 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/router_node.c:1107
 (qdrouterd+0x4d38f1)
    #7 close_links 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/container.c:328 
(qdrouterd+0x45c2b9)
    #8 qd_container_handle_event 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/container.c:525 
(qdrouterd+0x45f003)
    #9 handle 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/server.c:1116 
(qdrouterd+0x4d8b01)
    #10 thread_run 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/server.c:1141 
(qdrouterd+0x4dadc4)
    #11 qd_server_run 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/server.c:1535 
(qdrouterd+0x4dba1c)
    #12 main_process 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/router/src/main.c:115
 (qdrouterd+0x426e5c)
    #13 main 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/router/src/main.c:369
 (qdrouterd+0x42626c)

  Location is heap block of size 256 at 0x7b400000af00 allocated by thread T1:
    #0 posix_memalign <null> (libtsan.so.0+0x32a23)
    #1 qd_alloc 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/alloc_pool.c:391
 (qdrouterd+0x44ad29)
    #2 new_qd_message_t 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/message.c:93 
(qdrouterd+0x470e7d)
    #3 qd_message_copy 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/message.c:1136 
(qdrouterd+0x470e7d)
    #4 qdr_forward_new_delivery_CT 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/router_core/forwarder.c:153
 (qdrouterd+0x4a64d7)
    #5 qdr_forward_multicast_CT 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/router_core/forwarder.c:497
 (qdrouterd+0x4a9155)
    #6 qdr_forward_message_CT 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/router_core/forwarder.c:1122
 (qdrouterd+0x4aab70)
    #7 qdr_in_process_send_to_CT 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/router_core/transfer.c:924
 (qdrouterd+0x4bc7dd)
    #8 qdr_send_to_CT 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/router_core/transfer.c:899
 (qdrouterd+0x4bc943)
    #9 router_core_thread 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/router_core/router_core_thread.c:236
 (qdrouterd+0x4b53fa)
    #10 _thread_init 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/posix/threading.c:172
 (qdrouterd+0x4812dd)

  Mutex M13 (0x7b1000000380) created at:
    #0 pthread_mutex_init <null> (libtsan.so.0+0x49603)
    #1 sys_mutex 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/posix/threading.c:43
 (qdrouterd+0x48132c)
    #2 qd_python_initialize 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/python_embedded.c:56
 (qdrouterd+0x48214f)
    #3 qd_dispatch 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/dispatch.c:111 
(qdrouterd+0x4601f5)
    #4 main_process 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/router/src/main.c:92
 (qdrouterd+0x426d99)
    #5 main 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/router/src/main.c:369
 (qdrouterd+0x42626c)

  Thread T2 (tid=1892, running) created by main thread at:
    #0 pthread_create <null> (libtsan.so.0+0x5bef5)
    #1 sys_thread 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/posix/threading.c:181
 (qdrouterd+0x48176c)
    #2 qd_server_run 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/server.c:1533 
(qdrouterd+0x4db9fc)
    #3 main_process 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/router/src/main.c:115
 (qdrouterd+0x426e5c)
    #4 main 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/router/src/main.c:369
 (qdrouterd+0x42626c)

  Thread T1 (tid=1891, running) created by main thread at:
    #0 pthread_create <null> (libtsan.so.0+0x5bef5)
    #1 sys_thread 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/posix/threading.c:181
 (qdrouterd+0x48176c)
    #2 qdr_core 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/router_core/router_core.c:124
 (qdrouterd+0x4af340)
    #3 qd_router_setup_late 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/router_node.c:2142
 (qdrouterd+0x4d3e48)
    #4 ffi_call_unix64 <null> (libffi.so.6+0x6c03)
    #5 main_process 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/router/src/main.c:97
 (qdrouterd+0x426dfc)
    #6 main 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/router/src/main.c:369
 (qdrouterd+0x42626c)

SUMMARY: ThreadSanitizer: data race 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/alloc_pool.c:470
 in qd_dealloc
==================
ThreadSanitizer: reported 1 warnings
{noformat}

> Alloc_pool_item_t sequence number should be atomic
> --------------------------------------------------
>
>                 Key: DISPATCH-2203
>                 URL: https://issues.apache.org/jira/browse/DISPATCH-2203
>             Project: Qpid Dispatch
>          Issue Type: Test
>          Components: Router Node
>    Affects Versions: 1.16.1
>            Reporter: Charles E. Rolke
>            Priority: Major
>              Labels: race-condition
>
> Alloc pool uses a sequence number for safe pointer dereferencing. 
> {code:java}
> Definition
>   Line 55: uintmax_t sequence;  // uintmax_t ensures proper alignment of 
> following data
> In qd_alloc:
>   Line 406: item->sequence = 0;
> in qd_dealloc:
>   Line 477: item->sequence++;
> In qd_alloc_sequence:
>   Line 525: reuturn item->sequence;
> {code}
> It is reasonably certain that multiple threads will be referencing the same 
> item at nearly the same time. The code as shown gets flagged by tsan.



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to