mirror of
https://github.com/ioacademy-jikim/debugging
synced 2025-06-07 16:06:09 +00:00
313 lines
6.6 KiB
Plaintext
313 lines
6.6 KiB
Plaintext
#
|
|
# Suppression patterns for ld, the dynamic loader.
|
|
#
|
|
|
|
# Suppress all data races triggered by ld.
|
|
{
|
|
drd-ld
|
|
drd:ConflictingAccess
|
|
obj:*/lib*/ld-*.so
|
|
}
|
|
|
|
#
|
|
# Suppression patterns for libc.
|
|
#
|
|
|
|
# Suppress all data races where the topmost frame is inside libc.so. Although
|
|
# this could hide some real data races, unfortunately this is the only way to
|
|
# not report any false positives on stdio functions. The glibc functions
|
|
# manipulating FILE objects use locking primitives that cannot be intercepted
|
|
# easily. See also the definitions of _IO_lock_lock() etc. in the file
|
|
# nptl/sysdeps/pthread/bits/stdio-lock.h in the glibc source tree.
|
|
{
|
|
drd-libc-stdio
|
|
drd:ConflictingAccess
|
|
obj:*/lib*/libc-*
|
|
}
|
|
{
|
|
drd-libc-thread-cancellation-test
|
|
drd:ConflictingAccess
|
|
fun:write
|
|
}
|
|
{
|
|
drd-libc-random
|
|
drd:ConflictingAccess
|
|
fun:random_r
|
|
fun:random
|
|
}
|
|
|
|
#
|
|
# Suppression patterns for libstdc++, the implementation of the standard C++
|
|
# library included with the gcc compiler.
|
|
#
|
|
# Note: several versions of the libstdc++ library (4.2.2, 4.3.2, 4.4.0, 4.5.0
|
|
# and their predecessors) contain an implementation of the std::string class
|
|
# that triggers conflicting memory accesses. See also
|
|
# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40518
|
|
#
|
|
|
|
# {
|
|
# drd-libstdc++-std::string::string()
|
|
# drd:ConflictingAccess
|
|
# fun:_ZNSsC1ERKSs
|
|
# }
|
|
|
|
{
|
|
drd-libstdc++-cxa_guard_release
|
|
drd:CondErr
|
|
fun:pthread_cond_broadcast@*
|
|
fun:__cxa_guard_release
|
|
}
|
|
|
|
|
|
#
|
|
# Suppression patterns for libpthread.
|
|
#
|
|
|
|
{
|
|
drd-libpthread-pthread_create
|
|
drd:ConflictingAccess
|
|
...
|
|
fun:pthread_create*
|
|
}
|
|
{
|
|
drd-libpthread-pthread_join
|
|
drd:ConflictingAccess
|
|
fun:pthread_join
|
|
fun:pthread_join
|
|
}
|
|
{
|
|
drd-libpthread-__deallocate_stack
|
|
drd:ConflictingAccess
|
|
...
|
|
fun:__deallocate_stack
|
|
}
|
|
{
|
|
drd-libpthread-__free_stacks
|
|
drd:ConflictingAccess
|
|
fun:__free_stacks
|
|
}
|
|
{
|
|
drd-libpthread-__free_tcb
|
|
drd:ConflictingAccess
|
|
...
|
|
fun:__free_tcb
|
|
}
|
|
{
|
|
drd-libpthread-__nptl_deallocate_tsd
|
|
drd:ConflictingAccess
|
|
fun:__nptl_deallocate_tsd
|
|
}
|
|
{
|
|
drd-libpthread-pthread_detach
|
|
drd:ConflictingAccess
|
|
fun:pthread_detach
|
|
fun:pthread_detach
|
|
}
|
|
{
|
|
drd-libpthread-pthread_once
|
|
drd:ConflictingAccess
|
|
fun:pthread_once
|
|
}
|
|
{
|
|
drd-libpthread-pthread_cancel_init
|
|
drd:ConflictingAccess
|
|
fun:pthread_cancel_init
|
|
}
|
|
{
|
|
drd-libpthread-_Unwind_ForcedUnwind
|
|
drd:ConflictingAccess
|
|
...
|
|
fun:_Unwind_ForcedUnwind
|
|
}
|
|
{
|
|
drd-libpthread-_Unwind_GetCFA
|
|
drd:ConflictingAccess
|
|
fun:_Unwind_GetCFA
|
|
}
|
|
{
|
|
drd-libpthread-_Unwind_Resume
|
|
drd:ConflictingAccess
|
|
...
|
|
fun:_Unwind_Resume
|
|
}
|
|
{
|
|
drd-libpthread-?
|
|
drd:ConflictingAccess
|
|
obj:*/lib/libgcc_s.so.1
|
|
}
|
|
{
|
|
drd-libpthread-nanosleep
|
|
drd:ConflictingAccess
|
|
fun:nanosleep
|
|
}
|
|
|
|
#
|
|
# Suppression patterns for libgomp.
|
|
#
|
|
|
|
# Unfortunately many statements in libgomp trigger conflicting accesses. It is
|
|
# not clear to me which of these are safe and which ones not. See also
|
|
# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40362
|
|
{
|
|
drd-libgomp
|
|
drd:ConflictingAccess
|
|
obj:/usr/lib*/libgomp.so*
|
|
}
|
|
|
|
#
|
|
# Suppression patterns for libX11.
|
|
#
|
|
|
|
{
|
|
drd-libX11-XCreateFontSet
|
|
drd:CondErr
|
|
fun:pthread_cond_init*
|
|
fun:_XReply
|
|
fun:XListFontsWithInfo
|
|
obj:/usr/lib*/libX11.so*
|
|
fun:XCreateOC
|
|
fun:XCreateFontSet
|
|
}
|
|
|
|
#
|
|
# Suppression patterns for libxcb.
|
|
#
|
|
|
|
{
|
|
drd-libxcb-xcb_wait_for_reply
|
|
drd:CondErr
|
|
...
|
|
fun:pthread_cond_destroy*
|
|
fun:xcb_wait_for_reply
|
|
}
|
|
|
|
#
|
|
# Suppression patterns for libglib.
|
|
#
|
|
|
|
{
|
|
drd-libglib-access-g_threads_got_initialized
|
|
drd:ConflictingAccess
|
|
...
|
|
fun:g_slice_alloc
|
|
fun:g_ptr_array_sized_new
|
|
}
|
|
{
|
|
drd-libglib-access-g_threads_got_initialized
|
|
drd:ConflictingAccess
|
|
...
|
|
fun:_ZN27QEventDispatcherGlibPrivateC1EP13_GMainContext
|
|
fun:_ZN20QEventDispatcherGlibC1EP7QObject
|
|
obj:/usr/lib*/libQtCore.so.4.*
|
|
obj:/usr/lib*/libQtCore.so.4.*
|
|
}
|
|
{
|
|
drd-libglib-access-g_mem_initialized
|
|
drd:ConflictingAccess
|
|
fun:g_malloc0
|
|
}
|
|
{
|
|
drd-libglib-g_private_get_posix_impl
|
|
drd:ConflictingAccess
|
|
fun:g_private_get_posix_impl
|
|
}
|
|
{
|
|
drd-libglib-g_private_set_posix_impl
|
|
drd:ConflictingAccess
|
|
fun:g_private_set_posix_impl
|
|
}
|
|
{
|
|
drd-libglib-g_get_language_names
|
|
drd:ConflictingAccess
|
|
fun:g_slice_free_chain_with_offset
|
|
}
|
|
{
|
|
drd-libglib-g_main_context_new
|
|
drd:ConflictingAccess
|
|
fun:fcntl
|
|
obj:/usr/lib*/libglib-*.so*
|
|
fun:g_main_context_new
|
|
}
|
|
|
|
#
|
|
# Suppression patterns for libQtCore.
|
|
#
|
|
|
|
{
|
|
drd-libQtCore-deref-that-calls-QThreadData-destructor
|
|
drd:ConflictingAccess
|
|
fun:_ZN11QThreadDataD1Ev
|
|
obj:/usr/lib*/libQtCore.so.4.*
|
|
}
|
|
{
|
|
drd-libQtCore-4.0/4.1-Q_GLOBAL_STATIC-connectionList
|
|
drd:ConflictingAccess
|
|
obj:/usr/lib*/libQtCore.so.4.*
|
|
fun:_ZN11QMetaObject8activateEP7QObjectiiPPv
|
|
fun:_ZN11QMetaObject8activateEP7QObjectPKS_iPPv
|
|
}
|
|
{
|
|
drd-libQtCore-QObjectPrivate::clearGuards(QObject*)
|
|
drd:ConflictingAccess
|
|
fun:_ZN14QReadWriteLock12lockForWriteEv
|
|
fun:_ZN14QObjectPrivate11clearGuardsEP7QObject
|
|
fun:_ZN7QObjectD2Ev
|
|
}
|
|
{
|
|
drd-libQtCore-QObjectPrivate::clearGuards(QObject*)
|
|
drd:ConflictingAccess
|
|
fun:_ZN14QReadWriteLock12lockForWriteEv
|
|
fun:_ZN12QWriteLocker6relockEv
|
|
fun:_ZN12QWriteLockerC1EP14QReadWriteLock
|
|
fun:_ZN14QObjectPrivate11clearGuardsEP7QObject
|
|
fun:_ZN7QObjectD2Ev
|
|
fun:_ZN24QAbstractEventDispatcherD2Ev
|
|
fun:_ZN20QEventDispatcherGlibD0Ev
|
|
}
|
|
{
|
|
drd-libQtCore-QMutexPool::get(void const*)
|
|
drd:ConflictingAccess
|
|
fun:_ZN10QMutexPool3getEPKv
|
|
}
|
|
{
|
|
drd-libQtCore-qt_gettime_is_monotonic()
|
|
drd:ConflictingAccess
|
|
fun:_Z23qt_gettime_is_monotonicv
|
|
}
|
|
|
|
#
|
|
# Suppression patterns for libboost.
|
|
#
|
|
|
|
# Suppress the races on boost::once_flag::epoch and on
|
|
# boost::detail::this_thread_epoch. See also the source file
|
|
# boost/thread/pthread/once.hpp in the Boost source tree
|
|
# (https://svn.boost.org/trac/boost/browser/trunk/boost/thread/pthread/once.hpp).
|
|
{
|
|
drd-libboost-boost::call_once<void (*)()>(boost::once_flag&, void (*)())
|
|
drd:ConflictingAccess
|
|
...
|
|
fun:_ZN5boost9call_onceIPFvvEEEvRNS_9once_flagET_
|
|
}
|
|
{
|
|
drd-libboost-boost::detail::get_once_per_thread_epoch()
|
|
drd:ConflictingAccess
|
|
fun:_ZN5boost6detail25get_once_per_thread_epochEv
|
|
}
|
|
# Suppress the race reports on boost::detail::current_thread_tls_key. See also
|
|
# https://svn.boost.org/trac/boost/ticket/3526 for more information about why
|
|
# the access pattern of current_thread_tls_key is safe.
|
|
{
|
|
drd-libboost-boost::detail::get_current_thread_data()
|
|
drd:ConflictingAccess
|
|
...
|
|
fun:_ZN5boost6detail23get_current_thread_dataEv
|
|
}
|
|
{
|
|
drd-libboost-boost::detail::set_current_thread_data(boost::detail::thread_data_base*)
|
|
drd:ConflictingAccess
|
|
...
|
|
fun:_ZN5boost6detail23set_current_thread_dataEPNS0_16thread_data_baseE
|
|
}
|