????
Current Path : /proc/326615/root/usr/lib64/valgrind/ |
Current File : //proc/326615/root/usr/lib64/valgrind/default.supp |
# This is a generated file, composed of the following suppression rules: # exp-sgcheck.supp xfree-3.supp xfree-4.supp glibc-2.X-drd.supp glibc-2.34567-NPTL-helgrind.supp glibc-2.X.supp { ld-2.X possibly applying relocations exp-sgcheck:SorG obj:*/*lib*/ld-2.*so* obj:*/*lib*/ld-2.*so* } # I'm pretty sure this is a false positive caused by the sg_ stuff { glibc realpath false positive exp-sgcheck:SorG fun:realpath fun:* } { I think this is glibc's ultra optimised getenv doing 2 byte reads exp-sgcheck:SorG fun:getenv } ##----------------------------------------------------------------------## # Errors to suppress by default with XFree86 3.3.6) # Format of this file is: # { # name_of_suppression # tool_name:supp_kind # (optional extra info for some suppression types) # caller0 name, or /name/of/so/file.so # caller1 name, or ditto # (optionally: caller2 name) # (optionally: caller3 name) # } # # For Memcheck, the supp_kinds are: # # Param Value1 Value2 Value4 Value8 Value16 Jump # Free Addr1 Addr2 Addr4 Addr8 Addr16 # Cond (previously known as Value0) # # and the optional extra info is: # if Param: name of system call param ##----------------------------------------------------------------------## { X11-Cond-0 Memcheck:Cond obj:*libXt.so.6.0 obj:*libXt.so.6.0 obj:*libXt.so.6.0 } { X11-Cond-1 Memcheck:Cond fun:__rawmemchr obj:*libXt.so.6.0 obj:*libXt.so.6.0 } # Suppressions for XFree86-3.3.X { X11-Addr4-1 Memcheck:Addr4 obj:/usr/X11R6/lib/libX11.so.6.1 obj:/usr/X11R6/lib/libX11.so.6.1 obj:/usr/X11R6/lib/libX11.so.6.1 } { X11-Addr4-2 Memcheck:Addr4 obj:/usr/X11R6/lib/libX11.so.6.1 obj:/usr/X11R6/lib/libX11.so.6.1 obj:/usr/X11R6/lib/libXt.so.6.0 } { X11-Addr4-3 Memcheck:Addr4 obj:/usr/X11R6/lib/libXt.so.6.0 obj:/usr/X11R6/lib/libXt.so.6.0 obj:/usr/X11R6/lib/libXt.so.6.0 } { X11-Addr4-4 Memcheck:Addr4 obj:/usr/X11R6/lib/libX11.so.6.1 obj:/usr/X11R6/lib/libXt.so.6.0 obj:/usr/X11R6/lib/libXt.so.6.0 } { X11-Addr4-5 Memcheck:Addr4 fun:__rawmemchr obj:/usr/X11R6/lib/libXt.so.6.0 obj:/usr/X11R6/lib/libXt.so.6.0 } { X11-Addr4-6 Memcheck:Addr4 obj:/usr/X11R6/lib/libXmu.so.6.0 obj:/usr/X11R6/lib/libXmu.so.6.0 obj:/usr/X11R6/lib/libXt.so.6.0 } { X11-Addr4-7 Memcheck:Addr4 obj:/usr/X11R6/lib/libXt.so.6.0 obj:/usr/X11R6/lib/libXt.so.6.0 obj:/usr/X11R6/lib/libXawXpm_posing_as_Xaw.so.6.1 } { X11-Param-1 Memcheck:Param write(buf) fun:__libc_write obj:/usr/X11R6/lib/libX11.so.6.1 obj:/usr/X11R6/lib/libX11.so.6.1 } { X11-Addr4-8 Memcheck:Addr4 obj:/usr/X11R6/lib/libX11.so.6.1 obj:/usr/X11R6/lib/libXpm.so.4.11 obj:/usr/X11R6/lib/libXpm.so.4.11 } { X11-Addr4-8 Memcheck:Addr4 obj:/usr/X11R6/lib/libXt.so.6.0 obj:/usr/X11R6/lib/libXawXpm_posing_as_Xaw.so.6.1 obj:/usr/X11R6/lib/libXt.so.6.0 } { X11-Addr4-9 Memcheck:Addr4 obj:/usr/X11R6/lib/libXaw.so.6.1 obj:/usr/X11R6/lib/libXt.so.6.0 obj:/usr/X11R6/lib/libXt.so.6.0 } { X11-Addr4-10 Memcheck:Addr4 obj:/usr/X11R6/lib/libXaw.so.6.1 obj:/usr/X11R6/lib/libXaw.so.6.1 obj:/usr/X11R6/lib/libXt.so.6.0 } { X11-Addr4-11 Memcheck:Addr4 obj:/usr/X11R6/lib/libXt.so.6.0 obj:/usr/X11R6/lib/libXt.so.6.0 obj:/usr/X11R6/lib/libXaw.so.6.1 } ##----------------------------------------------------------------------## ##----------------------------------------------------------------------## # Errors to suppress by default with XFree86 4.1.0) # *** And a bunch of other stuff which is completely unrelated # to X. The default suppressions are a bit of a mess and could do # with a good tidying up. # Format of this file is: # { # name_of_suppression # tool_name:supp_kind # (optional extra info for some suppression types) # caller0 name, or /name/of/so/file.so # caller1 name, or ditto # (optionally: caller2 name) # (optionally: caller3 name) # } # # For Memcheck, the supp_kinds are: # # Param Value1 Value2 Value4 Value8 Value16 Jump # Free Addr1 Addr2 Addr4 Addr8 Addr16 # Cond (previously known as Value0) # # and the optional extra info is: # if Param: name of system call param # Resulting from R H 8.0 { *libc_write/libX11.so.6.2/*X11TransWrite(Param) Memcheck:Param write(buf) fun:*libc_write obj:/usr/*lib*/libX11.so* fun:*X11TransWrite } { libX11.so.6.2/libX11.so.6.2/libX11.so.6.2(Cond) Memcheck:Cond obj:/usr/*lib*/libX11.so* obj:/usr/*lib*/libX11.so* obj:/usr/*lib*/libX11.so* } { libXt.so.6.2/libXt.so.6.2/libXt.so.6.2(Cond) Memcheck:Cond obj:/usr/*lib*/libXt.so* obj:/usr/*lib*/libXt.so* obj:/usr/*lib*/libXt.so* } { libXaw.so.7.0/libXaw.so.7.0/libXaw.so.7.0(Cond) Memcheck:Cond obj:/usr/*lib*/libXaw.so* obj:/usr/*lib*/libXaw.so* obj:/usr/*lib*/libXaw.so* } { libXmu.so.6.2/libXmu.so.6.2/libXmu.so.6.2(Cond) Memcheck:Cond obj:/usr/*lib*/libXmu.so* obj:/usr/*lib*/libXmu.so* obj:/usr/*lib*/libXmu.so* } { libXt.so.6.0/libXt.so.6.0/libXaw.so.7.0(Cond) Memcheck:Cond obj:/usr/*lib*/libXt.so* obj:/usr/*lib*/libXt.so* obj:/usr/*lib*/libXaw.so* } { libXaw.so.7.0/libXaw.so.7.0/libXt.so.6.0(Value4) Memcheck:Value4 obj:/usr/*lib*/libXaw.so* obj:/usr/*lib*/libXaw.so* obj:/usr/*lib*/libXt.so* } { libXaw.so.7.0/libXaw.so.7.0/libXt.so.6.0(Cond) Memcheck:Cond obj:/usr/*lib*/libXaw.so* obj:/usr/*lib*/libXaw.so* obj:/usr/*lib*/libXt.so* } { libX11.so.6.2/libX11.so.6.2/libXaw.so.7.0(Cond) Memcheck:Cond obj:/usr/*lib*/libX11.so* obj:/usr/*lib*/libX11.so* obj:/usr/*lib*/libXaw.so* } { libX11.so.6.2/libX11.so.6.2/libXaw.so.7.0(Addr4) Memcheck:Addr4 obj:/usr/*lib*/libX11.so* obj:/usr/*lib*/libX11.so* obj:/usr/*lib*/libXaw.so* } { libX11.so.6.2/libXaw.so.7.0/libXaw.so.7.0(Cond) Memcheck:Cond obj:/usr/*lib*/libX11.so* obj:/usr/*lib*/libXaw.so* obj:/usr/*lib*/libXaw.so* } { libXpm.so.4.11/libXpm.so.4.11/libXpm.so.4.11 Memcheck:Cond obj:/usr/*lib*/libXpm.so.4.11 obj:/usr/*lib*/libXpm.so.4.11 obj:/usr/*lib*/libXpm.so.4.11 } { struct with uninitialized paddings Memcheck:Param writev(vector[...]) fun:*_writev fun:_X11TransSocketWritev fun:_X11TransWritev fun:* } { struct with uninitialized paddings - libxcb Memcheck:Param writev(vector[...]) obj:/lib*/*.so obj:/usr/lib*/libxcb.so.1.0.0 obj:/usr/lib*/libxcb.so.1.0.0 fun:xcb_send_request fun:_X* } { struct with uninitialized paddings - libxcb Memcheck:Param writev(vector[...]) obj:/lib*/*.so obj:/usr/lib*/libxcb.so.1.0.0 obj:/usr/lib*/libxcb.so.1.0.0 obj:/usr/lib*/libxcb.so.1.0.0 fun:xcb_* fun:_X* } { another struct with uninitialized paddings Memcheck:Param write(buf) obj:* fun:_IceTransSocketWrite fun:_IceTransWrite fun:_IceWrite } { Xorg 6.8.1 uninit _write* padding Memcheck:Param write(buf) fun:* fun:_X11TransWrite obj:/usr/*lib*/libX11.so* } { Xorg 6.8.1 uninit write padding Memcheck:Param write(buf) fun:write fun:_X11TransWrite obj:/usr/*lib*/libX11.so* } { Xorg 6.8.1 ICE uninit __write* padding Memcheck:Param write(buf) obj:* fun:_IceTransWrite fun:_IceWrite fun:IceFlush } { Xorg 6.8.1 writev uninit padding Memcheck:Param writev(vector[...]) fun:writev obj:/usr/*lib*/libX11.so* fun:_X11TransWritev fun:_XSend } { Xorg 6.9.0 writev uninit padding Memcheck:Param writev(vector[...]) fun:do_writev fun:writev obj:/usr/*lib*/libX11.so* fun:_X11TransWritev fun:_XSend } { X on SUSE11 writev uninit padding Memcheck:Param writev(vector[...]) fun:writev obj:/usr/lib*/libxcb.so* obj:/usr/lib*/libxcb.so* } { X on SUSE11 writev uninit padding 2 Memcheck:Param writev(vector[...]) obj:/lib*/ld-2.*.so* obj:/usr/lib*/libxcb.so* obj:/usr/lib*/libxcb.so* } { X on SUSE11 writev uninit padding 3 Memcheck:Param writev(vector[...]) obj:/lib*/ld-2.*.so* obj:/usr/lib*/libORBit*.so* obj:/usr/lib*/libORBit*.so* } { X on SUSE11 writev uninit padding 4 Memcheck:Param writev(vector[...]) obj:/lib*/libc-2.*.so* obj:/usr/lib*/libORBit*.so* obj:/usr/lib*/libORBit*.so* } # There's something strange about a % 127 in XftFontOpenInfo # (hashing) which gcc turns into a multiply by 33818641 and # some other guff instead. I don't understand it enough to # know if libXft is broken or if memcheck's value tracking is # inadequate here. Anyway, for the moment, suppress it. # # Use of uninitialised value of size 8 # at 0x71A59F8: XftFontOpenInfo (in /usr/X11R6/lib64/libXft.so.2.1.2) # by 0x71A5F0D: XftFontOpenPattern (in /usr/X11R6/lib64/libXft.so.2.1.2) # by 0x65F166E: loadFontConfigFont(QFontPrivate const*, QFontDef const&, # QFont::Script) (qfontdatabase_x11.cpp:1942) # by 0x65F5DE4: QFontDatabase::findFont(QFont::Script, QFontPrivate const*, # QFontDef const&, int) (qfontdatabase.cpp:996) { XftFontOpenInfo-umod-127-strangeness Memcheck:Value8 obj:/usr/X11*/lib*/libXft.so* obj:/usr/X11*/lib*/libXft.so* } { XftFontOpenInfo-umod-127-strangeness-a-la-xorg Memcheck:Value8 obj:/usr/lib*/libXft.so* obj:/usr/lib*/libXft.so* } { More X padding stuff Memcheck:Param writev(vector[...]) fun:*writev* obj:/usr/X11*/lib*/libX11.so* obj:/usr/X11*/lib*/libX11.so* } # Inlined strlen in libX11 on Ubuntu 9.10 amd64, unfortunately. # Invalid read of size 4 # at 0x9B5CCE6: ??? (in /usr/lib/libX11.so.6.2.0) # by 0x9B5D011: XGetAtomName (in /usr/lib/libX11.so.6.2.0) # by 0x86407C3: gdk_x11_xatom_to_atom_for_display # (in /usr/lib/libgdk-x11-2.0.so.0.1800.3) # by 0x8636817: ??? (in /usr/lib/libgdk-x11-2.0.so.0.1800.3) # Address 0x1a558e1c is 28 bytes inside a block of size 30 alloc'd # at 0x4C2552D: malloc (vg_replace_malloc.c:236) # by 0x9B642C0: _XUpdateAtomCache (in /usr/lib/libX11.so.6.2.0) # by 0x9B647F1: ??? (in /usr/lib/libX11.so.6.2.0) # by 0x9B81818: ??? (in /usr/lib/libX11.so.6.2.0) { libX11.so.6.2.0/libX11.so.6.2.0(Addr4) Memcheck:Addr4 obj:/usr/*lib*/libX11.so* obj:/usr/*lib*/libX11.so* } ##----------------------------------------------------------------------## # Completely inappropriate place, but ... { ifort-9.X-on-i686-1 Memcheck:Addr4 fun:unaligned_bigint fun:hash fun:for__add_to_lf_table } { ifort-9.X-on-amd64-1 Memcheck:Addr8 fun:unaligned_bigint fun:hash fun:for__add_to_lf_table } # zlib-1.2.x uses uninitialised memory in some tricky way which # apparently is harmless (it must amount to a vectorised while-loop, # nothing else makes sense). Fools Memcheck though. See the mentioned # URL for details. { zlib-1.2.x trickyness (1a): See http://www.zlib.net/zlib_faq.html#faq36 Memcheck:Cond obj:/*lib*/libz.so.1.2.* ... obj:/*lib*/libz.so.1.2.* fun:deflate } { zlib-1.2.x trickyness (1b): See http://www.zlib.net/zlib_faq.html#faq36 Memcheck:Cond obj:/*lib*/libz.so.1.2.* fun:deflate } { zlib-1.2.x trickyness (2a): See http://www.zlib.net/zlib_faq.html#faq36 Memcheck:Value8 obj:/*lib*/libz.so.1.2.* ... obj:/*lib*/libz.so.1.2.* fun:deflate } { zlib-1.2.x trickyness (2b): See http://www.zlib.net/zlib_faq.html#faq36 Memcheck:Value8 obj:/*lib*/libz.so.1.2.* fun:deflate } { zlib-1.2.x trickyness (3a): See http://www.zlib.net/zlib_faq.html#faq36 Memcheck:Value4 obj:/*lib*/libz.so.1.2.* ... obj:/*lib*/libz.so.1.2.* fun:deflate } { zlib-1.2.x trickyness (3b): See http://www.zlib.net/zlib_faq.html#faq36 Memcheck:Value4 obj:/*lib*/libz.so.1.2.* fun:deflate } ##----------------------------------------------------------------------## ## More general versions of some of the old X suppressions above { Ubuntu804 libXaw.so.7.0/libXaw.so.7.0/libXaw.so.7.0(Cond) Memcheck:Cond obj:/usr/*lib*/libXaw*so* obj:/usr/*lib*/libXaw*so* obj:/usr/*lib*/libXaw*so* } { Ubuntu804 libXaw.so.7.0/libXaw.so.7.0/libXt(Cond) Memcheck:Cond obj:/usr/*lib*/libXaw*so* obj:/usr/*lib*/libXaw*so* obj:/usr/*lib*/libXt*so* } { Ubuntu804-hack-1 Memcheck:Overlap fun:mempcpy fun:_IO_default_xsputn obj:/lib*/libc-2.*so* } # # 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 } # FIXME 22 Jan 09: helgrind-glibc2X-005 overlaps with a lot of # other stuff. They should be removed. ##----------------------------------------------------------------------## # Suppressions for the Helgrind tool when using # a glibc-2.{3,4,5,6,7,8,9} system #################################################### # glibc-2.X specific # These are generic cover-alls which catch a lot of stuff # in various combinations of ld, libc and libpthread # # Note this is heavyhanded and not very clever: # # - suppress anything that has its top frame in ld.so # That's fine, since it's mostly dynamic linking stuff, # which has various deliberate (harmless) races # # - suppress anything that has its top frame in libc.so. # This really isn't clever, since it could hide some # legitimate races. But the problem is, if we don't do # this, then loads of errors to do with stdio are reported, because # H fails to see glibc's internal locking/unlocking of FILE*s # as required by POSIX. A better solution is needed. #{ # helgrind-glibc2X-001 # Helgrind:Race # obj:*/lib*/ld-2.*so* #} # helgrind-glibc2X-002 was merged into helgrind-glibc2X-001 # helgrind-glibc2X-003 was merged into helgrind-glibc2X-001 { helgrind-glibc2X-004 Helgrind:Race obj:*/lib*/libc-2.*so* } { helgrind-glibc2X-005 Helgrind:Race obj:*/lib*/libpthread-2.*so* } # helgrind-glibc2X-006 was merged into helgrind-glibc2X-005 # helgrind-glibc2X-007 was merged into helgrind-glibc2X-001 # helgrind-glibc2X-008 was merged into helgrind-glibc2X-004 # helgrind-glibc2X-009 was merged into helgrind-glibc2X-004 # helgrind-glibc2X-010 was merged into helgrind-glibc2X-001 # helgrind-glibc2X-011 was merged into helgrind-glibc2X-004 # helgrind-glibc2X-012 was merged into helgrind-glibc2X-001 # helgrind-glibc2X-013 was merged into helgrind-glibc2X-001 # helgrind-glibc2X-014 was merged into helgrind-glibc2X-001 # helgrind-glibc2X-015 was merged into helgrind-glibc2X-004 # helgrind-glibc2X-016 was merged into helgrind-glibc2X-004 # These are very ugly. They are needed to suppress errors inside (eg) # NPTL's pthread_cond_signal. Why only one stack frame -- at least we # should see the wrapper calling the real functions, right? # Unfortunately, no: the real functions are handwritten assembly (in # the glibc-2.5 sources) and does not create a proper stack frame. # Therefore it's only one level of unwinding before we're back out in # user code rather than the 2 levels you'd expect. { helgrind-glibc2X-101 Helgrind:Race obj:*/lib*/libpthread-2.*so* fun:pthread_* } { helgrind-glibc2X-102 Helgrind:Race fun:mythread_wrapper obj:*/lib*/libpthread-2.*so* } { helgrind-glibc2X-102a Helgrind:Race fun:mythread_wrapper obj:*vgpreload_helgrind*.so } { helgrind-glibc2X-103 Helgrind:Race fun:pthread_cond_*@@GLIBC_2.* } { helgrind-glibc2X-104 Helgrind:Race fun:__lll_mutex_* } { helgrind-glibc2X-105 Helgrind:Race fun:pthread_rwlock_*lock* } { helgrind-glibc2X-106 Helgrind:Race fun:__lll_lock_wait } { helgrind-glibc2X-107 Helgrind:Race obj:*/lib*/libpthread-2.*so* fun:sem_* } { helgrind-glibc2X-108 Helgrind:Race fun:clone } { helgrind-glibc2X-109 Helgrind:Race fun:start_thread } { helgrind-glibc2X-110 Helgrind:Race obj:*/lib*/libc-2.*so* fun:pthread_* } { helgrind-glibc2X-111 Helgrind:Race fun:__lll_*lock_* } { helgrind-glibc2X-113 Helgrind:Race fun:pthread_barrier_wait* } #################################################### # qt4 specific (GNU mangling) # { helgrind-qt4---QMutex::lock()-QMutex::lock() Helgrind:Race ... fun:_ZN6QMutex4lockEv fun:_ZN6QMutex4lockEv } { helgrind-qt4---QMutex::unlock()-QMutex::unlock() Helgrind:Race ... fun:_ZN6QMutex6unlockEv fun:_ZN6QMutex6unlockEv } { helgrind-qt4---pthread_setspecific-QThreadPrivate::start(void*) Helgrind:Race fun:pthread_setspecific fun:_ZN14QThreadPrivate5startEPv } #################################################### # Other stuff. # # pthread_exit apparently calls some kind of unwind # mechanism - maybe to remove some number of frames # from the thread's stack, so as to get back to the # outermost frame for the thread? Anyway.. { helgrind---*Unwind*-...-pthread_exit Helgrind:Race fun:*Unwind* ... fun:pthread_exit } { helgrind---...-*Unwind*-*pthread_unwind* Helgrind:Race ... fun:*Unwind* fun:*pthread_unwind* } { helgrind---...-*Unwind*-*pthread_unwind* Helgrind:Race ... fun:_Unwind* ... fun:_Unwind_Backtrace } #################################################### # To do with thread stack allocation and deallocation? # { helgrind---free_stacks-__deallocate_stack Helgrind:Race fun:free_stacks fun:__deallocate_stack } { helgrind---__deallocate_stack-start_thread-clone Helgrind:Race fun:__deallocate_stack fun:start_thread fun:clone } #################################################### # To do with pthread_{set,get}specific # { helgrind---pthread_setspecific Helgrind:Race fun:pthread_setspecific } { helgrind---pthread_getspecific Helgrind:Race fun:pthread_getspecific } #################################################### # To do with dynamic linking # # helgrind---ld.so-...-dlsym was merged into helgrind-glibc2X-001 #################################################### # To do with GNU libgomp # { helgrind---libgomp43-1 Helgrind:Race fun:gomp_ordered_sync } { helgrind---libgomp43-1 Helgrind:Race fun:gomp_ordered_next } { helgrind---libgomp43-1 Helgrind:Race fun:gomp_ordered_last } ##----------------------------------------------------------------------## # Errors to suppress by default with glibc 2.12.x # IMPORTANT: DO NOT EDIT glibc-2.X.supp, as it is as a generated # file. Instead edit glibc-2.X.supp.in. # Format of this file is: # { # name_of_suppression # tool_name:supp_kind # (optional extra info for some suppression types) # caller0 name, or /name/of/so/file.so # caller1 name, or ditto # (optionally: caller2 name) # (optionally: caller3 name) # } # # For Memcheck, the supp_kinds are: # # Param Value1 Value2 Value4 Value8 Value16 Jump # Free Addr1 Addr2 Addr4 Addr8 Addr16 # Cond (previously known as Value0) # # and the optional extra info is: # if Param: name of system call param ##----------------------------------------------------------------------## ##--- generic suppressions ---## ##----------------------------------------------------------------------## { dl-hack3-cond-0 Memcheck:Cond fun:_dl_start fun:_start } { dl-hack3-cond-1 Memcheck:Cond obj:*/lib*/ld-2.12*.so* obj:*/lib*/ld-2.12*.so* obj:*/lib*/ld-2.12*.so* } { dl-hack3-cond-2 Memcheck:Cond obj:*/lib*/ld-2.12*.so* obj:*/lib*/ld-2.12*.so* obj:*/lib*/libc-2.12*.so* } { dl-hack3-cond-3 Memcheck:Cond obj:*/lib*/ld-2.12*.so* obj:*/lib*/libc-2.12*.so* obj:*/lib*/libc-2.12*.so* } { dl-hack3-cond-4 Memcheck:Cond obj:*/lib*/ld-2.12*.so* obj:*/lib*/ld-2.12*.so* obj:*/lib*/libdl-2.12*.so* } { dl-hack4-64bit-addr-1 Memcheck:Addr8 obj:*/lib*/ld-2.12*.so* obj:*/lib*/ld-2.12*.so* obj:*/lib*/ld-2.12*.so* } { dl-hack4-64bit-addr-2 Memcheck:Addr8 obj:*/lib*/ld-2.12*.so* obj:*/lib*/ld-2.12*.so* obj:*/lib*/libc-2.12*.so* } { dl-hack4-64bit-addr-3 Memcheck:Addr8 obj:*/lib*/ld-2.12*.so* obj:*/lib*/ld-2.12*.so* obj:*/lib*/libdl-2.12*.so* } { dl-hack5-32bit-addr-1 Memcheck:Addr4 obj:*/lib*/ld-2.12*.so obj:*/lib*/ld-2.12*.so obj:*/lib*/ld-2.12*.so } { dl-hack5-32bit-addr-3 Memcheck:Addr4 obj:*/lib*/ld-2.12*.so obj:*/lib*/ld-2.12*.so obj:*/lib*/libdl-2.12*.so* } { dl-hack5-32bit-addr-4 Memcheck:Addr4 obj:*/lib*/ld-2.12*.so obj:*/lib*/libdl-2.12*.so* obj:*/lib*/ld-2.12*.so } ##----------------------------------------------------------------------## ##--- Misc ad-hoc hacks ---## ##----------------------------------------------------------------------## { glibc-2.5.x-on-SUSE-10.2-(PPC)-1 Memcheck:Cond fun:_dl_start_final fun:_dl_start fun:_start } { glibc-2.5.x-on-SUSE-10.2-(PPC)-2a Memcheck:Cond fun:index obj:*ld-2.12*.so } { glibc-2.5.x-on-SuSE-10.2-(PPC)-2b Memcheck:Addr4 fun:index fun:expand_dynamic_string_token } { glibc-2.5.5-on-SuSE-10.2-(PPC)-2c Memcheck:Addr4 fun:index obj:*ld-2.12*.so } { glibc-2.3.5-on-SuSE-10.1-(PPC)-3 Memcheck:Addr4 fun:*wordcopy_fwd_dest_aligned* fun:mem*cpy obj:*lib*2.12*.so } { glibc-2.12-on-SUSE-10.3-(x86) Memcheck:Addr4 obj:*/lib/ld-2.12*.so obj:*/lib/ld-2.12*.so obj:*/lib/ld-2.12*.so } { glibc24-64bit-padding-1a Memcheck:Param socketcall.sendto(msg) fun:send fun:get_mapping fun:__nscd_get_map_ref fun:nscd* } { glibc24-64bit-padding-1b Memcheck:Param socketcall.sendto(msg) fun:__sendto_nocancel obj:/*libc-2.12*.so obj:/*libc-2.12*.so obj:/*libc-2.12*.so } { glibc24-64bit-padding-1c Memcheck:Param socketcall.send(msg) fun:send fun:__nscd_get_map_ref fun:nscd_get*_r fun:*nscd* obj:/*libc-2.12*.so } { X11-64bit-padding-3a Memcheck:Param write(buf) obj:/*libpthread-2.4.so* obj:/usr/lib*/libX11.so* obj:/usr/lib*/libX11.so* obj:/usr/lib*/libX11.so* } { X11-64bit-padding-4a Memcheck:Param socketcall.sendto(msg) fun:send obj:/*libc-2.12*.so obj:/*libc-2.12*.so obj:/*libc-2.12*.so } { X11-64bit-padding-4b Memcheck:Param socketcall.send(msg) fun:send obj:/*libc-2.12*.so obj:/*libc-2.12*.so obj:/*libc-2.12*.so } ##----------------------------------------------------------------------## # MontaVista Linux 4.0.1 on ppc32 { MVL-401-linuxthreads-pthread_create Memcheck:Param write(buf) fun:pthread_create } { MVL-401-linuxthreads-pthread_create Memcheck:Param write(buf) obj:*/lib/libpthread-0.10.so fun:pthread_create } ##----------------------------------------------------------------------## # Ubuntu 10.04 on ARM (Thumb). Not sure why this is necessary. { U1004-ARM-_dl_relocate_object Memcheck:Cond fun:_dl_relocate_object }