[jira] [Updated] (DISPATCH-1917) Thread race accessing connector->conn_msg buffer (TSAN)

2021-04-14 Thread Ganesh Murthy (Jira)


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

Ganesh Murthy updated DISPATCH-1917:

Fix Version/s: (was: 1.16.0)
   1.17.0

> Thread race accessing connector->conn_msg buffer (TSAN)
> ---
>
> Key: DISPATCH-1917
> URL: https://issues.apache.org/jira/browse/DISPATCH-1917
> Project: Qpid Dispatch
>  Issue Type: Bug
>  Components: Router Node
>Affects Versions: 1.15.0
>Reporter: Ken Giusti
>Assignee: Ken Giusti
>Priority: Major
>  Labels: race-condition
> Fix For: 1.17.0
>
>
> qd_connector_t holds a buffer for connection related mgmt messages 
> (conn_msg[300]). 
> One thread can read it buffer content while another thread can write it:
> {noformat}
> 14: WARNING: ThreadSanitizer: data race (pid=63992)
> 14: Read of size 8 at 0x7b440140 by main thread (mutexes: write M13, 
> write M312, write M9):
> 14: #0 strlen  (libtsan.so.0+0x32c4f)
> 14: #1 PyUnicode_FromString  (libpython3.8.so.1.0+0xf8a58)
> 14: #2 qd_entity_refresh_connector 
> /home/kgiusti/work/dispatch/qpid-dispatch/src/connection_manager.c:868 
> (libqpid-dispatch.so+0x68522)
> 14: #3 ffi_call_unix64  (libffi.so.6+0x6aef)
> 14: #4 qdr_forward_on_message 
> /home/kgiusti/work/dispatch/qpid-dispatch/src/router_core/forwarder.c:336 
> (libqpid-dispatch.so+0xb083c)
> 14: #5 qdr_general_handler 
> /home/kgiusti/work/dispatch/qpid-dispatch/src/router_core/router_core.c:887 
> (libqpid-dispatch.so+0xb9189)
> 14: #6 qd_timer_visit 
> /home/kgiusti/work/dispatch/qpid-dispatch/src/timer.c:201 
> (libqpid-dispatch.so+0xe60c7)
> 14: #7 handle /home/kgiusti/work/dispatch/qpid-dispatch/src/server.c:1008 
> (libqpid-dispatch.so+0xe01ae)
> 14: #8 thread_run /home/kgiusti/work/dispatch/qpid-dispatch/src/server.c:1122 
> (libqpid-dispatch.so+0xe2aa7)
> 14: #9 qd_server_run 
> /home/kgiusti/work/dispatch/qpid-dispatch/src/server.c:1484 
> (libqpid-dispatch.so+0xe352f)
> 14: #10 main_process 
> /home/kgiusti/work/dispatch/qpid-dispatch/router/src/main.c:113 
> (qdrouterd+0x40287c)
> 14: #11 main /home/kgiusti/work/dispatch/qpid-dispatch/router/src/main.c:367 
> (qdrouterd+0x4024fc)
> 14: 
> 14: Previous write of size 8 at 0x7b440140 by thread T3:
> 14: #0 strcpy  (libtsan.so.0+0x45ac1)
> 14: #1 AMQP_opened_handler 
> /home/kgiusti/work/dispatch/qpid-dispatch/src/router_node.c:1241 
> (libqpid-dispatch.so+0xdad01)
> 14: #2 AMQP_outbound_opened_handler 
> /home/kgiusti/work/dispatch/qpid-dispatch/src/router_node.c:1402 
> (libqpid-dispatch.so+0xdba43)
> 14: #3 notify_opened 
> /home/kgiusti/work/dispatch/qpid-dispatch/src/container.c:273 
> (libqpid-dispatch.so+0x69fa3)
> 14: #4 policy_notify_opened 
> /home/kgiusti/work/dispatch/qpid-dispatch/src/container.c:284 
> (libqpid-dispatch.so+0x69fa3)
> 14: #5 qd_policy_amqp_open_connector 
> /home/kgiusti/work/dispatch/qpid-dispatch/src/policy.c:1371 
> (libqpid-dispatch.so+0x881fa)
> 14: #6 qd_container_handle_event 
> /home/kgiusti/work/dispatch/qpid-dispatch/src/container.c:511 
> (libqpid-dispatch.so+0x6c984)
> 14: #7 handle /home/kgiusti/work/dispatch/qpid-dispatch/src/server.c:1097 
> (libqpid-dispatch.so+0xe0211)
> 14: #8 thread_run /home/kgiusti/work/dispatch/qpid-dispatch/src/server.c:1122 
> (libqpid-dispatch.so+0xe2a34)
> 14: #9 _thread_init 
> /home/kgiusti/work/dispatch/qpid-dispatch/src/posix/threading.c:172 
> (libqpid-dispatch.so+0x8c5f2)
> 14: #10   (libtsan.so.0+0x2d33f)
> 14: 
> 14: Location is heap block of size 300 at 0x7b440140 allocated by main 
> thread:
> 14: #0 malloc  (libtsan.so.0+0x304d3)
> 14: #1 qd_server_connector 
> /home/kgiusti/work/dispatch/qpid-dispatch/src/server.c:1657 
> (libqpid-dispatch.so+0xe49d4)
> 14: #2 qd_dispatch_configure_connector 
> /home/kgiusti/work/dispatch/qpid-dispatch/src/connection_manager.c:878 
> (libqpid-dispatch.so+0x6856d)
> 14: #3 ffi_call_unix64  (libffi.so.6+0x6aef)
> 14: #4 main_process 
> /home/kgiusti/work/dispatch/qpid-dispatch/router/src/main.c:95 
> (qdrouterd+0x40281c)
> 14: #5 main /home/kgiusti/work/dispatch/qpid-dispatch/router/src/main.c:367 
> (qdrouterd+0x4024fc)
> 14: 
> 14: Mutex M13 (0x7b100340) created at:
> 14: #0 pthread_mutex_init  (libtsan.so.0+0x4a7c6)
> 14: #1 sys_mutex 
> /home/kgiusti/work/dispatch/qpid-dispatch/src/posix/threading.c:43 
> (libqpid-dispatch.so+0x8c64c)
> 14: #2 qd_python_initialize 
> /home/kgiusti/work/dispatch/qpid-dispatch/src/python_embedded.c:56 
> (libqpid-dispatch.so+0x8ebb3)
> 14: #3 qd_dispatch 
> /home/kgiusti/work/dispatch/qpid-dispatch/src/dispatch.c:108 
> (libqpid-dispatch.so+0x6e526)
> 14: #4 main_process 
> /home/kgiusti/work/dispatch/qpid-dispatch/router/src/main.c:90 
> (qdrouterd+0x4027b9)
> 14: #5 main /home/kgiusti/work/dispatch/qpid-dispatch/router/src/main.c:367 

[jira] [Updated] (DISPATCH-1917) Thread race accessing connector->conn_msg buffer (TSAN)

2021-04-06 Thread Jira


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

Jiri Daněk updated DISPATCH-1917:
-
Description: 
qd_connector_t holds a buffer for connection related mgmt messages 
(conn_msg[300]). 

One thread can read it buffer content while another thread can write it:

{noformat}
14: WARNING: ThreadSanitizer: data race (pid=63992)
14: Read of size 8 at 0x7b440140 by main thread (mutexes: write M13, write 
M312, write M9):
14: #0 strlen  (libtsan.so.0+0x32c4f)
14: #1 PyUnicode_FromString  (libpython3.8.so.1.0+0xf8a58)
14: #2 qd_entity_refresh_connector 
/home/kgiusti/work/dispatch/qpid-dispatch/src/connection_manager.c:868 
(libqpid-dispatch.so+0x68522)
14: #3 ffi_call_unix64  (libffi.so.6+0x6aef)
14: #4 qdr_forward_on_message 
/home/kgiusti/work/dispatch/qpid-dispatch/src/router_core/forwarder.c:336 
(libqpid-dispatch.so+0xb083c)
14: #5 qdr_general_handler 
/home/kgiusti/work/dispatch/qpid-dispatch/src/router_core/router_core.c:887 
(libqpid-dispatch.so+0xb9189)
14: #6 qd_timer_visit /home/kgiusti/work/dispatch/qpid-dispatch/src/timer.c:201 
(libqpid-dispatch.so+0xe60c7)
14: #7 handle /home/kgiusti/work/dispatch/qpid-dispatch/src/server.c:1008 
(libqpid-dispatch.so+0xe01ae)
14: #8 thread_run /home/kgiusti/work/dispatch/qpid-dispatch/src/server.c:1122 
(libqpid-dispatch.so+0xe2aa7)
14: #9 qd_server_run 
/home/kgiusti/work/dispatch/qpid-dispatch/src/server.c:1484 
(libqpid-dispatch.so+0xe352f)
14: #10 main_process 
/home/kgiusti/work/dispatch/qpid-dispatch/router/src/main.c:113 
(qdrouterd+0x40287c)
14: #11 main /home/kgiusti/work/dispatch/qpid-dispatch/router/src/main.c:367 
(qdrouterd+0x4024fc)
14: 
14: Previous write of size 8 at 0x7b440140 by thread T3:
14: #0 strcpy  (libtsan.so.0+0x45ac1)
14: #1 AMQP_opened_handler 
/home/kgiusti/work/dispatch/qpid-dispatch/src/router_node.c:1241 
(libqpid-dispatch.so+0xdad01)
14: #2 AMQP_outbound_opened_handler 
/home/kgiusti/work/dispatch/qpid-dispatch/src/router_node.c:1402 
(libqpid-dispatch.so+0xdba43)
14: #3 notify_opened 
/home/kgiusti/work/dispatch/qpid-dispatch/src/container.c:273 
(libqpid-dispatch.so+0x69fa3)
14: #4 policy_notify_opened 
/home/kgiusti/work/dispatch/qpid-dispatch/src/container.c:284 
(libqpid-dispatch.so+0x69fa3)
14: #5 qd_policy_amqp_open_connector 
/home/kgiusti/work/dispatch/qpid-dispatch/src/policy.c:1371 
(libqpid-dispatch.so+0x881fa)
14: #6 qd_container_handle_event 
/home/kgiusti/work/dispatch/qpid-dispatch/src/container.c:511 
(libqpid-dispatch.so+0x6c984)
14: #7 handle /home/kgiusti/work/dispatch/qpid-dispatch/src/server.c:1097 
(libqpid-dispatch.so+0xe0211)
14: #8 thread_run /home/kgiusti/work/dispatch/qpid-dispatch/src/server.c:1122 
(libqpid-dispatch.so+0xe2a34)
14: #9 _thread_init 
/home/kgiusti/work/dispatch/qpid-dispatch/src/posix/threading.c:172 
(libqpid-dispatch.so+0x8c5f2)
14: #10   (libtsan.so.0+0x2d33f)
14: 
14: Location is heap block of size 300 at 0x7b440140 allocated by main 
thread:
14: #0 malloc  (libtsan.so.0+0x304d3)
14: #1 qd_server_connector 
/home/kgiusti/work/dispatch/qpid-dispatch/src/server.c:1657 
(libqpid-dispatch.so+0xe49d4)
14: #2 qd_dispatch_configure_connector 
/home/kgiusti/work/dispatch/qpid-dispatch/src/connection_manager.c:878 
(libqpid-dispatch.so+0x6856d)
14: #3 ffi_call_unix64  (libffi.so.6+0x6aef)
14: #4 main_process 
/home/kgiusti/work/dispatch/qpid-dispatch/router/src/main.c:95 
(qdrouterd+0x40281c)
14: #5 main /home/kgiusti/work/dispatch/qpid-dispatch/router/src/main.c:367 
(qdrouterd+0x4024fc)
14: 
14: Mutex M13 (0x7b100340) created at:
14: #0 pthread_mutex_init  (libtsan.so.0+0x4a7c6)
14: #1 sys_mutex 
/home/kgiusti/work/dispatch/qpid-dispatch/src/posix/threading.c:43 
(libqpid-dispatch.so+0x8c64c)
14: #2 qd_python_initialize 
/home/kgiusti/work/dispatch/qpid-dispatch/src/python_embedded.c:56 
(libqpid-dispatch.so+0x8ebb3)
14: #3 qd_dispatch /home/kgiusti/work/dispatch/qpid-dispatch/src/dispatch.c:108 
(libqpid-dispatch.so+0x6e526)
14: #4 main_process 
/home/kgiusti/work/dispatch/qpid-dispatch/router/src/main.c:90 
(qdrouterd+0x4027b9)
14: #5 main /home/kgiusti/work/dispatch/qpid-dispatch/router/src/main.c:367 
(qdrouterd+0x4024fc)
14: 
14: Mutex M312 (0x7b103040) created at:
14: #0 pthread_mutex_init  (libtsan.so.0+0x4a7c6)
14: #1 sys_mutex 
/home/kgiusti/work/dispatch/qpid-dispatch/src/posix/threading.c:43 
(libqpid-dispatch.so+0x8c64c)
14: #2 qd_router 
/home/kgiusti/work/dispatch/qpid-dispatch/src/router_node.c:1484 
(libqpid-dispatch.so+0xdbdbf)
14: #3 qd_dispatch_prepare 
/home/kgiusti/work/dispatch/qpid-dispatch/src/dispatch.c:332 
(libqpid-dispatch.so+0x6e13f)
14: #4 ffi_call_unix64  (libffi.so.6+0x6aef)
14: #5 main_process 
/home/kgiusti/work/dispatch/qpid-dispatch/router/src/main.c:95 
(qdrouterd+0x40281c)
14: #6 main /home/kgiusti/work/dispatch/qpid-dispatch/router/src/main.c:367 
(qdrouterd+0x4024fc)
14: 
14: Mutex M9 (0x7b100240) created at:
14: 

[jira] [Updated] (DISPATCH-1917) Thread race accessing connector->conn_msg buffer (TSAN)

2021-01-21 Thread Ken Giusti (Jira)


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

Ken Giusti updated DISPATCH-1917:
-
Labels: race-condition  (was: )

> Thread race accessing connector->conn_msg buffer (TSAN)
> ---
>
> Key: DISPATCH-1917
> URL: https://issues.apache.org/jira/browse/DISPATCH-1917
> Project: Qpid Dispatch
>  Issue Type: Bug
>  Components: Router Node
>Affects Versions: 1.15.0
>Reporter: Ken Giusti
>Assignee: Ken Giusti
>Priority: Major
>  Labels: race-condition
> Fix For: 1.16.0
>
>
> qd_connector_t holds a buffer for connection related mgmt messages 
> (conn_msg[300]). 
> One thread can read it buffer content while another thread can write it:
>  
> 14: WARNING: ThreadSanitizer: data race (pid=63992)
> 14: Read of size 8 at 0x7b440140 by main thread (mutexes: write M13, 
> write M312, write M9):
> 14: #0 strlen  (libtsan.so.0+0x32c4f)
> 14: #1 PyUnicode_FromString  (libpython3.8.so.1.0+0xf8a58)
> 14: #2 qd_entity_refresh_connector 
> /home/kgiusti/work/dispatch/qpid-dispatch/src/connection_manager.c:868 
> (libqpid-dispatch.so+0x68522)
> 14: #3 ffi_call_unix64  (libffi.so.6+0x6aef)
> 14: #4 qdr_forward_on_message 
> /home/kgiusti/work/dispatch/qpid-dispatch/src/router_core/forwarder.c:336 
> (libqpid-dispatch.so+0xb083c)
> 14: #5 qdr_general_handler 
> /home/kgiusti/work/dispatch/qpid-dispatch/src/router_core/router_core.c:887 
> (libqpid-dispatch.so+0xb9189)
> 14: #6 qd_timer_visit 
> /home/kgiusti/work/dispatch/qpid-dispatch/src/timer.c:201 
> (libqpid-dispatch.so+0xe60c7)
> 14: #7 handle /home/kgiusti/work/dispatch/qpid-dispatch/src/server.c:1008 
> (libqpid-dispatch.so+0xe01ae)
> 14: #8 thread_run /home/kgiusti/work/dispatch/qpid-dispatch/src/server.c:1122 
> (libqpid-dispatch.so+0xe2aa7)
> 14: #9 qd_server_run 
> /home/kgiusti/work/dispatch/qpid-dispatch/src/server.c:1484 
> (libqpid-dispatch.so+0xe352f)
> 14: #10 main_process 
> /home/kgiusti/work/dispatch/qpid-dispatch/router/src/main.c:113 
> (qdrouterd+0x40287c)
> 14: #11 main /home/kgiusti/work/dispatch/qpid-dispatch/router/src/main.c:367 
> (qdrouterd+0x4024fc)
> 14: 
> 14: Previous write of size 8 at 0x7b440140 by thread T3:
> 14: #0 strcpy  (libtsan.so.0+0x45ac1)
> 14: #1 AMQP_opened_handler 
> /home/kgiusti/work/dispatch/qpid-dispatch/src/router_node.c:1241 
> (libqpid-dispatch.so+0xdad01)
> 14: #2 AMQP_outbound_opened_handler 
> /home/kgiusti/work/dispatch/qpid-dispatch/src/router_node.c:1402 
> (libqpid-dispatch.so+0xdba43)
> 14: #3 notify_opened 
> /home/kgiusti/work/dispatch/qpid-dispatch/src/container.c:273 
> (libqpid-dispatch.so+0x69fa3)
> 14: #4 policy_notify_opened 
> /home/kgiusti/work/dispatch/qpid-dispatch/src/container.c:284 
> (libqpid-dispatch.so+0x69fa3)
> 14: #5 qd_policy_amqp_open_connector 
> /home/kgiusti/work/dispatch/qpid-dispatch/src/policy.c:1371 
> (libqpid-dispatch.so+0x881fa)
> 14: #6 qd_container_handle_event 
> /home/kgiusti/work/dispatch/qpid-dispatch/src/container.c:511 
> (libqpid-dispatch.so+0x6c984)
> 14: #7 handle /home/kgiusti/work/dispatch/qpid-dispatch/src/server.c:1097 
> (libqpid-dispatch.so+0xe0211)
> 14: #8 thread_run /home/kgiusti/work/dispatch/qpid-dispatch/src/server.c:1122 
> (libqpid-dispatch.so+0xe2a34)
> 14: #9 _thread_init 
> /home/kgiusti/work/dispatch/qpid-dispatch/src/posix/threading.c:172 
> (libqpid-dispatch.so+0x8c5f2)
> 14: #10   (libtsan.so.0+0x2d33f)
> 14: 
> 14: Location is heap block of size 300 at 0x7b440140 allocated by main 
> thread:
> 14: #0 malloc  (libtsan.so.0+0x304d3)
> 14: #1 qd_server_connector 
> /home/kgiusti/work/dispatch/qpid-dispatch/src/server.c:1657 
> (libqpid-dispatch.so+0xe49d4)
> 14: #2 qd_dispatch_configure_connector 
> /home/kgiusti/work/dispatch/qpid-dispatch/src/connection_manager.c:878 
> (libqpid-dispatch.so+0x6856d)
> 14: #3 ffi_call_unix64  (libffi.so.6+0x6aef)
> 14: #4 main_process 
> /home/kgiusti/work/dispatch/qpid-dispatch/router/src/main.c:95 
> (qdrouterd+0x40281c)
> 14: #5 main /home/kgiusti/work/dispatch/qpid-dispatch/router/src/main.c:367 
> (qdrouterd+0x4024fc)
> 14: 
> 14: Mutex M13 (0x7b100340) created at:
> 14: #0 pthread_mutex_init  (libtsan.so.0+0x4a7c6)
> 14: #1 sys_mutex 
> /home/kgiusti/work/dispatch/qpid-dispatch/src/posix/threading.c:43 
> (libqpid-dispatch.so+0x8c64c)
> 14: #2 qd_python_initialize 
> /home/kgiusti/work/dispatch/qpid-dispatch/src/python_embedded.c:56 
> (libqpid-dispatch.so+0x8ebb3)
> 14: #3 qd_dispatch 
> /home/kgiusti/work/dispatch/qpid-dispatch/src/dispatch.c:108 
> (libqpid-dispatch.so+0x6e526)
> 14: #4 main_process 
> /home/kgiusti/work/dispatch/qpid-dispatch/router/src/main.c:90 
> (qdrouterd+0x4027b9)
> 14: #5 main /home/kgiusti/work/dispatch/qpid-dispatch/router/src/main.c:367 
> (qdrouterd+0x4024fc)
> 14: 
> 14: Mutex