[ 
https://issues.apache.org/jira/browse/PROTON-2436?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Clifford Jansen resolved PROTON-2436.
-------------------------------------
    Fix Version/s: proton-c-0.37.0
       Resolution: Fixed

Make ownership of scheduled io events compared to task-processed io events 
consistent between AMQP connections, listeners, and raw connections.

> TSAN race in epoll.c post_event with raw connection
> ---------------------------------------------------
>
>                 Key: PROTON-2436
>                 URL: https://issues.apache.org/jira/browse/PROTON-2436
>             Project: Qpid Proton
>          Issue Type: Bug
>          Components: proton-c
>    Affects Versions: proton-c-0.36.0
>            Reporter: Ken Giusti
>            Assignee: Clifford Jansen
>            Priority: Major
>             Fix For: proton-c-0.37.0
>
>
> today's github CI run of dispatch+proton main kicked up a tsan error in 
> proton I've never seen before:
> https://github.com/apache/qpid-dispatch/runs/3700836319?check_suite_focus=true#step:27:2142
>  
> {noformat}
> 70: WARNING: ThreadSanitizer: data race (pid=3075)
> 70:   Write of size 4 at 0x7b680000dd38 by main thread (mutexes: write M257):
> 70:     #0 post_event 
> /home/runner/work/qpid-dispatch/qpid-dispatch/qpid-proton/c/src/proactor/epoll.c:2304
>  (libqpid-proton-proactor.so.1+0x14108)
> 70:     #1 poller_do_epoll 
> /home/runner/work/qpid-dispatch/qpid-dispatch/qpid-proton/c/src/proactor/epoll.c:2534
>  (libqpid-proton-proactor.so.1+0x14108)
> 70:     #2 next_event_batch 
> /home/runner/work/qpid-dispatch/qpid-dispatch/qpid-proton/c/src/proactor/epoll.c:2438
>  (libqpid-proton-proactor.so.1+0x14108)
> 70:     #3 pn_proactor_wait 
> /home/runner/work/qpid-dispatch/qpid-dispatch/qpid-proton/c/src/proactor/epoll.c:2650
>  (libqpid-proton-proactor.so.1+0x14622)
> 70:     #4 thread_run 
> /home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/server.c:1118 
> (qdrouterd+0x4d83a9)
> 70:     #5 qd_server_run 
> /home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/server.c:1527 
> (qdrouterd+0x4d904c)
> 70:     #6 main_process 
> /home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/router/src/main.c:115
>  (qdrouterd+0x426cdc)
> 70:     #7 main 
> /home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/router/src/main.c:369
>  (qdrouterd+0x42623c)
> 70: 
> 70:   Previous read of size 4 at 0x7b680000dd38 by thread T3 (mutexes: write 
> M499):
> 70:     #0 pni_raw_connection_process 
> /home/runner/work/qpid-dispatch/qpid-dispatch/qpid-proton/c/src/proactor/epoll_raw_connection.c:355
>  (libqpid-proton-proactor.so.1+0x108ec)
> 70:     #1 process 
> /home/runner/work/qpid-dispatch/qpid-dispatch/qpid-proton/c/src/proactor/epoll.c:2230
>  (libqpid-proton-proactor.so.1+0x108ec)
> 70:     #2 next_event_batch 
> /home/runner/work/qpid-dispatch/qpid-dispatch/qpid-proton/c/src/proactor/epoll.c:2419
>  (libqpid-proton-proactor.so.1+0x108ec)
> 70:     #3 pn_proactor_wait 
> /home/runner/work/qpid-dispatch/qpid-dispatch/qpid-proton/c/src/proactor/epoll.c:2650
>  (libqpid-proton-proactor.so.1+0x14622)
> 70:     #4 thread_run 
> /home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/server.c:1118 
> (qdrouterd+0x4d83a9)
> 70:     #5 _thread_init 
> /home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/posix/threading.c:172
>  (qdrouterd+0x47fe2d)
> 70: 
> 70:   Location is heap block of size 1536 at 0x7b680000d800 allocated by main 
> thread:
> 70:     #0 calloc <null> (libtsan.so.0+0x32b3e)
> 70:     #1 pn_raw_connection 
> /home/runner/work/qpid-dispatch/qpid-dispatch/qpid-proton/c/src/proactor/epoll_raw_connection.c:168
>  (libqpid-proton-proactor.so.1+0xdf82)
> 70:     #2 _do_reconnect 
> /home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/adaptors/http1/http1_server.c:451
>  (qdrouterd+0x43da47)
> 70:     #3 qd_timer_visit 
> /home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/timer.c:316 
> (qdrouterd+0x4daddf)
> 70:     #4 handle 
> /home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/server.c:1018 
> (qdrouterd+0x4d60d6)
> 70:     #5 thread_run 
> /home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/server.c:1133 
> (qdrouterd+0x4d84e7)
> 70:     #6 qd_server_run 
> /home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/server.c:1527 
> (qdrouterd+0x4d904c)
> 70:     #7 main_process 
> /home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/router/src/main.c:115
>  (qdrouterd+0x426cdc)
> 70:     #8 main 
> /home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/router/src/main.c:369
>  (qdrouterd+0x42623c)
> 70: 
> 70:   Mutex M257 (0x7b640003aa20) created at:
> 70:     #0 pthread_mutex_init <null> (libtsan.so.0+0x49603)
> 70:     #1 pmutex_init 
> /home/runner/work/qpid-dispatch/qpid-dispatch/qpid-proton/c/src/proactor/epoll-internal.h:323
>  (libqpid-proton-proactor.so.1+0xd52c)
> 70:     #2 pn_proactor 
> /home/runner/work/qpid-dispatch/qpid-dispatch/qpid-proton/c/src/proactor/epoll.c:1941
>  (libqpid-proton-proactor.so.1+0xd52c)
> 70:     #3 qd_server 
> /home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/server.c:1380 
> (qdrouterd+0x4d872f)
> 70:     #4 qd_dispatch_prepare 
> /home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/dispatch.c:334
>  (qdrouterd+0x4604b6)
> 70:     #5 ffi_call_unix64 <null> (libffi.so.6+0x6c03)
> 70:     #6 main_process 
> /home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/router/src/main.c:97
>  (qdrouterd+0x426c7c)
> 70:     #7 main 
> /home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/router/src/main.c:369
>  (qdrouterd+0x42623c)
> 70: 
> 70:   Mutex M499 (0x7b680000d800) created at:
> 70:     #0 pthread_mutex_init <null> (libtsan.so.0+0x49603)
> 70:     #1 pmutex_init 
> /home/runner/work/qpid-dispatch/qpid-dispatch/qpid-proton/c/src/proactor/epoll-internal.h:323
>  (libqpid-proton-proactor.so.1+0x146eb)
> 70:     #2 task_init 
> /home/runner/work/qpid-dispatch/qpid-dispatch/qpid-proton/c/src/proactor/epoll.c:224
>  (libqpid-proton-proactor.so.1+0x146eb)
> 70:     #3 praw_connection_init 
> /home/runner/work/qpid-dispatch/qpid-dispatch/qpid-proton/c/src/proactor/epoll_raw_connection.c:141
>  (libqpid-proton-proactor.so.1+0x146eb)
> 70:     #4 pn_proactor_raw_connect 
> /home/runner/work/qpid-dispatch/qpid-dispatch/qpid-proton/c/src/proactor/epoll_raw_connection.c:179
>  (libqpid-proton-proactor.so.1+0x146eb)
> 70:     #5 _do_reconnect 
> /home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/adaptors/http1/http1_server.c:455
>  (qdrouterd+0x43daa2)
> 70:     #6 qd_timer_visit 
> /home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/timer.c:316 
> (qdrouterd+0x4daddf)
> 70:     #7 handle 
> /home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/server.c:1018 
> (qdrouterd+0x4d60d6)
> 70:     #8 thread_run 
> /home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/server.c:1133 
> (qdrouterd+0x4d84e7)
> 70:     #9 qd_server_run 
> /home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/server.c:1527 
> (qdrouterd+0x4d904c)
> 70:     #10 main_process 
> /home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/router/src/main.c:115
>  (qdrouterd+0x426cdc)
> 70:     #11 main 
> /home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/router/src/main.c:369
>  (qdrouterd+0x42623c)
> 70: 
> 70:   Thread T3 (tid=3079, running) created by main thread at:
> 70:     #0 pthread_create <null> (libtsan.so.0+0x5bf45)
> 70:     #1 sys_thread 
> /home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/posix/threading.c:181
>  (qdrouterd+0x4802bc)
> 70:     #2 qd_server_run 
> /home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/src/server.c:1525 
> (qdrouterd+0x4d902c)
> 70:     #3 main_process 
> /home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/router/src/main.c:115
>  (qdrouterd+0x426cdc)
> 70:     #4 main 
> /home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/router/src/main.c:369
>  (qdrouterd+0x42623c)
> 70: 
> 70: SUMMARY: ThreadSanitizer: data race 
> /home/runner/work/qpid-dispatch/qpid-dispatch/qpid-proton/c/src/proactor/epoll.c:2304
>  in post_event
> 70: ==================
> 70: ThreadSanitizer: reported 1 warnings
> {noformat}
>  
>  
> Proton main latest (commit 30b245a48d7461fd41854e5bb63eadf19cbb26bd)
>  



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

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@qpid.apache.org
For additional commands, e-mail: dev-h...@qpid.apache.org

Reply via email to