Skip to content

Commit ac8b1ce

Browse files
committed
DISPATCH-2146: TSAN suppression file cleanup
Remove stale suppressions. Open tracking JIRAs for each remaining error. This closes #1228
1 parent 81e4be8 commit ac8b1ce

File tree

2 files changed

+78
-32
lines changed

2 files changed

+78
-32
lines changed

src/router_core/connections.c

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -569,6 +569,15 @@ static void qdr_link_setup_histogram(qdr_connection_t *conn, qd_direction_t dir,
569569
}
570570

571571

572+
// used by the TSAN suppression file to mask the read/write races
573+
// caused by modifying the deliveries' conn_id and link_id while in flight
574+
void tsan_reset_delivery_ids(qdr_delivery_t *dlv, uint64_t conn_id, uint64_t link_id)
575+
{
576+
dlv->conn_id = conn_id;
577+
dlv->link_id = link_id;
578+
}
579+
580+
572581
qdr_link_t *qdr_link_first_attach(qdr_connection_t *conn,
573582
qd_direction_t dir,
574583
qdr_terminus_t *source,
@@ -618,8 +627,7 @@ qdr_link_t *qdr_link_first_attach(qdr_connection_t *conn,
618627
//
619628

620629
if (initial_delivery) {
621-
initial_delivery->conn_id = link->conn->identity;
622-
initial_delivery->link_id = link->identity;
630+
tsan_reset_delivery_ids(initial_delivery, link->conn->identity, link->identity);
623631
}
624632

625633
if (qdr_terminus_has_capability(local_terminus, QD_CAPABILITY_ROUTER_CONTROL))

tests/tsan.supp

Lines changed: 68 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,89 @@
11
# ThreadSanitizer (tsan) suppression file
22
#
3-
race:libqpid-proton-proactor
4-
deadlock:libpython
3+
# NOTE WELL: When adding a new suppression to this file,
4+
# please create a JIRA for tracking purposes and include
5+
# the JIRA key in a comment. This should be done
6+
# regardless of whether or not the error turns out to be
7+
# a false-positive: having a JIRA, even if closed/not-a-bug,
8+
# provides a record of the analysis of the error.
9+
#
10+
11+
# DISPATCH-1956
12+
deadlock:push_event
513

14+
# DISPATCH-2070,
615
race:qd_vlog_impl
7-
deadlock:qd_vlog_impl
8-
race:qd_log_entity
916

10-
race:qdr_core_free
17+
# DISPATCH-2122
18+
race:qd_alloc_init
1119

12-
race:qd_alloc
20+
# DISPATCH-2123
1321
race:qd_entity_refresh_allocator
1422

15-
mutex:qd_router_timer_handler
16-
race:qdr_process_tick_CT
17-
deadlock:qd_timer_schedule
18-
deadlock:qd_timer_visit
19-
20-
race:qdr_connection_process
21-
23+
# DISPATCH-2124
2224
race:qdr_link_flow
23-
race:qdr_link_flow_CT
24-
race:qdr_link_process_deliveries
25+
26+
# DISPATCH-2125
2527
race:qdr_link_stalled_outbound
26-
race:qdr_link_first_attach
2728

28-
race:qdr_delivery_link_peers_CT
29-
race:qdr_delivery_push_CT
30-
race:qdr_delivery_disposition
29+
# DISPATCH-2126
30+
race:qdr_delivery_mcast_inbound_update_CT
3131
race:qdr_delivery_anycast_update_CT
3232

33-
race:qdr_connection_set_context
34-
race:qdr_connection_get_context
33+
# DISPATCH-2127
34+
race:qd_message_receive
35+
36+
# DISPATCH-2128
37+
race:process_link_CT
38+
39+
# DISPATCH-2129: shutdown race
40+
race:qdr_core_free
41+
42+
# DISPATCH-2130
43+
deadlock:qd_policy_socket_close
44+
45+
# DISPATCH-2131
46+
race:qdr_record_link_credit
3547

48+
# DISPATCH-2132
49+
race:qdr_process_tick_CT
50+
51+
# DISPATCH-2133 (harmless)
52+
race:qd_log_enabled
53+
54+
# DISPATCH-2134
55+
race:qdr_link_process_initial_delivery_CT
56+
race:tsan_reset_delivery_ids
57+
58+
# DISPATCH-2135
59+
race:qd_message_Q2_holdoff_disable
60+
61+
# DISPATCH-2136
62+
race:qd_message_set_aborted
63+
64+
# DISPATCH-2137
65+
race:remote_sasl_process_init
66+
race:remote_sasl_prepare
3667
race:notify_downstream
37-
race:notify_upstream
3868

39-
race:qdr_delivery_mcast_inbound_update_CT
40-
race:qdr_delivery_mcast_outbound_update_CT
41-
race:qdr_delivery_mcast_outbound_settled_CT
69+
# DISPATCH-2138
70+
race:qdr_link_inbound_detach_CT
71+
72+
# DISPATCH-2140
73+
race:qdr_connection_set_context
74+
75+
# DISPATCH-2141
76+
race:qdr_delivery_move_delivery_state_CT
77+
78+
# DISPATCH-2143
4279
race:qdr_delivery_mcast_outbound_disposition_CT
4380

44-
race:qd_message_receive
45-
race:qd_message_receive_complete
81+
#
82+
# External libraries
83+
#
4684

47-
mutex:qdr_forward_on_message
85+
# proton false positive?
86+
# TBD: discuss with proton devs, JIRA if necessary
87+
deadlock:pni_timer_set
4888

49-
mutex:qd_policy_amqp_open
50-
mutex:qd_policy_amqp_open_connector
5189

0 commit comments

Comments
 (0)