# 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