mirror of
https://github.com/FairRootGroup/FairMQ.git
synced 2026-06-15 08:17:05 +00:00
test: drop thread-sanitizer suppressions
- every entry stood in for a library tsan could not see into; with libzmq, libsodium and libstdc++ now tsan-instrumented in the tsan CI job, the happens-before edges they establish are visible and nothing is left to suppress - suppressions were blunt (a race: entry matches any frame in the stack), so they could also mask real races passing through those frames
This commit is contained in:
committed by
Dennis Klein
parent
1fb5ad8c33
commit
7e63d4ae9a
2
.github/workflows/ci.yml
vendored
2
.github/workflows/ci.yml
vendored
@@ -68,8 +68,6 @@ jobs:
|
||||
if: github.repository == 'FairRootGroup/FairMQ'
|
||||
name: ${{ matrix.sanitizer.name }}
|
||||
runs-on: ubuntu-24.04
|
||||
env:
|
||||
TSAN_OPTIONS: suppressions=${{ github.workspace }}/test/thread_sanitizer_suppressions.txt
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
# ThreadSanitizer suppressions for FairMQ.
|
||||
#
|
||||
# libzmq is not built with -fsanitize=thread, so tsan cannot observe the
|
||||
# happens-before that its inproc/socket queues establish between the user
|
||||
# threads and libzmq's I/O threads. This produces false-positive data races
|
||||
# on message buffers handed across that boundary. The proper fix is to build
|
||||
# libzmq with tsan as well; until then these races are suppressed.
|
||||
|
||||
# Racy access made directly from libzmq (encoder/decoder memcpy,
|
||||
# signaler/epoll, recv).
|
||||
called_from_lib:libzmq.so
|
||||
|
||||
# Zero-copy message deleters that libzmq runs from msg_t::close once it is
|
||||
# done with a buffer; the happens-before with the buffer's producer runs
|
||||
# through libzmq's queue.
|
||||
race:zmq::msg_t::close
|
||||
race:fair::mq::TransportFactory::SimpleMsgCleanup
|
||||
|
||||
# shmem message metadata read on the user side after delivery through libzmq
|
||||
# (the shmem transport ships its metadata over a zeromq channel).
|
||||
race:fair::mq::shmem::Message::Message
|
||||
race:fair::mq::shmem::Socket::Receive
|
||||
race:fair::mq::shmem::ShmHeader
|
||||
|
||||
# Multipart message buffers written by the sending thread and read back by the
|
||||
# receiving thread after delivery through libzmq's inproc queue; the
|
||||
# happens-before runs through that non-instrumented queue.
|
||||
race:RunMultiThreadedMultipart
|
||||
|
||||
# std::regex / std::locale facet lazy-init races inside libstdc++.
|
||||
race:fair::mq::Channel::Validate
|
||||
race:fair::mq::tools::ToString
|
||||
Reference in New Issue
Block a user