GLib's GMutex is a raw futex, so ThreadSanitizer cannot see the happens-before edge g_main_context_invoke_full provides and fails the thread lane on plane_render_executor_test. Publish the completion payload through an explicit release/acquire pair, and suppress the remaining reports that originate wholly inside libglib's own source bookkeeping. Races on repository memory still fail the run; verified 0/100 failing TSan runs in an ubuntu:24.04 container (20/20 before).
13 lines
681 B
Plaintext
13 lines
681 B
Plaintext
# ThreadSanitizer suppressions for the focused mpv reliability tests.
|
|
#
|
|
# GLib's GMutex is a raw futex, not a pthread mutex, so TSan cannot observe
|
|
# the happens-before edges GMainContext provides. Any cross-thread handoff
|
|
# through g_main_context_invoke_full then reports races inside GLib's own
|
|
# source/queue bookkeeping (g_malloc vs free of idle sources, etc.).
|
|
#
|
|
# This only hides reports whose racing access originates inside libglib;
|
|
# races on this repository's memory still fail the run. The executor's own
|
|
# completion handoff carries an explicit release/acquire pair (see
|
|
# plane_render_executor.cc) precisely so it stays visible to TSan.
|
|
called_from_lib:libglib-2.0.so
|