# This is a generated file, composed of the following suppression rules: # exp-ptrcheck.supp xfree-3.supp xfree-4.supp glibc-2.X-drd.supp glibc-2.34567-NPTL-helgrind.supp glibc-2.X.supp { lib-X11-used-old-pointer-after-realloc-1 exp-ptrcheck:Heap fun:strlen obj:/usr/lib*/libX11.so* obj:/usr/lib*/libX11.so* } { lib-X11-used-old-pointer-after-realloc-2 exp-ptrcheck:Heap obj:/usr/lib*/libX11.so* obj:/usr/lib*/libX11.so* } { ld-2.X-invalid-Add32/64-who-knows exp-ptrcheck:Arith obj:/*lib*/ld-2.*so* obj:/*lib*/ld-2.*so* } { ld-2.X possibly applying relocations exp-ptrcheck: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-ptrcheck:SorG fun:realpath fun:* } { If I had to guess, inlined or nameless strlen etc in ld.so exp-ptrcheck:Heap obj:/*lib*/ld-2.*so* obj:/*lib*/ld-2.*so* } { I think this is glibc's ultra optimised getenv doing 2 byte reads exp-ptrcheck:SorG fun:getenv } { Occurs on Fedora 7--9? exp-ptrcheck:Heap fun:_dl_fini fun:exit fun:(below main) } ##----------------------------------------------------------------------## # 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/X11R6/lib*/libX11.so.6.2 fun:*X11TransWrite } { libX11.so.6.2/libX11.so.6.2/libX11.so.6.2(Cond) Memcheck:Cond obj:/usr/X11R6/lib*/libX11.so.6.2 obj:/usr/X11R6/lib*/libX11.so.6.2 obj:/usr/X11R6/lib*/libX11.so.6.2 } { libXt.so.6.2/libXt.so.6.2/libXt.so.6.2(Cond) Memcheck:Cond obj:/usr/X11R6/lib*/libXt.so.6.0 obj:/usr/X11R6/lib*/libXt.so.6.0 obj:/usr/X11R6/lib*/libXt.so.6.0 } { libXaw.so.7.0/libXaw.so.7.0/libXaw.so.7.0(Cond) Memcheck:Cond obj:/usr/X11R6/lib*/libXaw.so.7.0 obj:/usr/X11R6/lib*/libXaw.so.7.0 obj:/usr/X11R6/lib*/libXaw.so.7.0 } { libXmu.so.6.2/libXmu.so.6.2/libXmu.so.6.2(Cond) Memcheck:Cond obj:/usr/X11R6/lib*/libXmu.so.6.2 obj:/usr/X11R6/lib*/libXmu.so.6.2 obj:/usr/X11R6/lib*/libXmu.so.6.2 } { libXt.so.6.0/libXt.so.6.0/libXaw.so.7.0(Cond) Memcheck:Cond obj:/usr/X11R6/lib*/libXt.so.6.0 obj:/usr/X11R6/lib*/libXt.so.6.0 obj:/usr/X11R6/lib*/libXaw.so.7.0 } { libXaw.so.7.0/libXaw.so.7.0/libXt.so.6.0(Value4) Memcheck:Value4 obj:/usr/X11R6/lib*/libXaw.so.7.0 obj:/usr/X11R6/lib*/libXaw.so.7.0 obj:/usr/X11R6/lib*/libXt.so.6.0 } { libXaw.so.7.0/libXaw.so.7.0/libXt.so.6.0(Cond) Memcheck:Cond obj:/usr/X11R6/lib*/libXaw.so.7.0 obj:/usr/X11R6/lib*/libXaw.so.7.0 obj:/usr/X11R6/lib*/libXt.so.6.0 } { libX11.so.6.2/libX11.so.6.2/libXaw.so.7.0(Cond) Memcheck:Cond obj:/usr/X11R6/lib*/libX11.so.6.2 obj:/usr/X11R6/lib*/libX11.so.6.2 obj:/usr/X11R6/lib*/libXaw.so.7.0 } { libX11.so.6.2/libX11.so.6.2/libXaw.so.7.0(Addr4) Memcheck:Addr4 obj:/usr/X11R6/lib*/libX11.so.6.2 obj:/usr/X11R6/lib*/libX11.so.6.2 obj:/usr/X11R6/lib*/libXaw.so.7.0 } { libX11.so.6.2/libXaw.so.7.0/libXaw.so.7.0(Cond) Memcheck:Cond obj:/usr/X11R6/lib*/libX11.so.6.2 obj:/usr/X11R6/lib*/libXaw.so.7.0 obj:/usr/X11R6/lib*/libXaw.so.7.0 } { libXpm.so.4.11/libXpm.so.4.11/libXpm.so.4.11 Memcheck:Cond obj:/usr/X11R6/lib*/libXpm.so.4.11 obj:/usr/X11R6/lib*/libXpm.so.4.11 obj:/usr/X11R6/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/X11R6/lib*/libX11.so.6.2 } { Xorg 6.8.1 uninit write padding Memcheck:Param write(buf) fun:write fun:_X11TransWrite obj:/usr/X11R6/lib*/libX11.so.6.2 } { 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/X11R6/lib*/libX11.so.6.2 fun:_X11TransWritev fun:_XSend } { Xorg 6.9.0 writev uninit padding Memcheck:Param writev(vector[...]) fun:do_writev fun:writev obj:/usr/X11R6/lib*/libX11.so.6.2 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* } ##----------------------------------------------------------------------## # 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* } { dl drd:ConflictingAccess fun:_dl_fixup fun:_dl_runtime_resolve } { dl drd:ConflictingAccess fun:_dl_fini fun:exit } { dl-2.6.* drd:ConflictingAccess obj:/lib*/ld-*.so fun:exit } { dl-2.6.* drd:ConflictingAccess obj:/lib*/ld-*.so obj:/lib*/ld-*.so } { dl-dlsym-1 drd:ConflictingAccess ... fun:_dl_sym } { dl-dlsym-2 drd:ConflictingAccess ... fun:dlsym } { dl-dlsym-3 drd:ConflictingAccess ... fun:__libc_dlsym } { dl-backtrace_symbols drd:ConflictingAccess fun:_dl_addr fun:backtrace_symbols } { libc-stdio drd:ConflictingAccess obj:/lib*/libc-* } { libc drd:ConflictingAccess fun:__libc_enable_asynccancel obj:/lib*/libc-* } { libc drd:ConflictingAccess fun:__libc_disable_asynccancel obj:/lib*/libc-* } { libc-exit-io-cleanup drd:ConflictingAccess ... fun:exit } { libc-random_r drd:ConflictingAccess fun:random_r } { libc:stdio drd:ConflictingAccess ... fun:_IO_file_xsputn* fun:vfprintf } { libc:stdio drd:ConflictingAccess ... fun:fflush } { librt drd:ConflictingAccess fun:__librt_enable_asynccancel } { librt drd:ConflictingAccess fun:__librt_disable_asynccancel } { libstdc++ drd:ConflictingAccess fun:_ZN9__gnu_cxx12__atomic_addEPVii } { libstdc++ std::string::string() drd:ConflictingAccess fun:_ZNSsC1ERKSs } { libstdc++ drd:ConflictingAccess fun:_ZN9__gnu_cxx18__exchange_and_addEPVii } { pthread drd:ConflictingAccess fun:start_thread fun:clone } { pthread drd:ConflictingAccess obj:/lib*/libpthread-*.so fun:start_thread fun:clone } { pthread drd:ConflictingAccess ... fun:pthread_create* } { pthread drd:ConflictingAccess ... fun:__libc_thread_freeres fun:start_thread fun:clone } { pthread drd:ConflictingAccess fun:__nptl_deallocate_tsd fun:start_thread fun:clone } { pthread drd:ConflictingAccess fun:pthread_mutex_lock fun:pthread_mutex_lock } { pthread drd:ConflictingAccess fun:__pthread_mutex_cond_lock fun:pthread_cond_wait@@GLIBC_* } { pthread drd:ConflictingAccess fun:pthread_join fun:pthread_join } { pthread drd:ConflictingAccess ... fun:__deallocate_stack } { pthread drd:ConflictingAccess fun:__free_tcb } { pthread drd:ConflictingAccess fun:__pthread_enable_asynccancel } { pthread drd:ConflictingAccess fun:__pthread_disable_asynccancel } { pthread drd:ConflictingAccess fun:pthread_cancel } { pthread drd:ConflictingAccess ... fun:pthread_cancel_init } { pthread drd:ConflictingAccess fun:sigcancel_handler obj:/lib*/libpthread-* } { pthread drd:ConflictingAccess fun:pthread_detach fun:pthread_detach } { pthread drd:ConflictingAccess fun:pthread_getspecific } { pthread drd:ConflictingAccess fun:pthread_setspecific } { pthread drd:ConflictingAccess fun:pthread_key_delete } { pthread drd:ConflictingAccess fun:_pthread_cleanup_push_defer } { pthread-unwind drd:ConflictingAccess ... fun:__pthread_unwind } { pthread-unwind drd:ConflictingAccess ... fun:_Unwind_Resume } { pthread-unwind drd:ConflictingAccess fun:_Unwind_GetCFA fun:unwind_stop } { pthread-unwind drd:ConflictingAccess fun:uw_update_context fun:_Unwind_ForcedUnwind_Phase2 } { pthread-unwind drd:ConflictingAccess fun:uw_frame_state_for fun:_Unwind_ForcedUnwind_Phase2 } { gomp drd:ConflictingAccess obj:/usr/lib*/libgomp.so* obj:/usr/lib*/libgomp.so* } { libX11-XCreateFontSet drd:CondErr fun:pthread_cond_init* fun:_XReply fun:XListFontsWithInfo obj:/usr/lib*/libX11.so* fun:XCreateOC fun:XCreateFontSet } { libxcb-xcb_wait_for_reply drd:CondErr fun:pthread_cond_destroy* fun:xcb_wait_for_reply } { libglib-access-g_threads_got_initialized drd:ConflictingAccess ... fun:g_slice_alloc fun:g_ptr_array_sized_new } { 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.* } { libglib-access-g_mem_initialized drd:ConflictingAccess fun:g_malloc0 } { libglib-g_private_get_posix_impl drd:ConflictingAccess fun:g_private_get_posix_impl } { libglib-g_private_set_posix_impl drd:ConflictingAccess fun:g_private_set_posix_impl } { libglib-g_get_language_names drd:ConflictingAccess fun:g_slice_free_chain_with_offset } { libQtCore-deref-that-calls-QThreadData-destructor drd:ConflictingAccess fun:_ZN11QThreadDataD1Ev fun:_ZN11QThreadData5derefEv obj:/usr/lib*/libQtCore.so.4.* } { libQtCore-4.0/4.1-Q_GLOBAL_STATIC-connectionList drd:ConflictingAccess obj:/usr/lib*/libQtCore.so.4.* fun:_ZN11QMetaObject8activateEP7QObjectiiPPv fun:_ZN11QMetaObject8activateEP7QObjectPKS_iPPv } { libQtCore-QObjectPrivate::clearGuards(QObject*) drd:ConflictingAccess fun:_ZN14QReadWriteLock12lockForWriteEv fun:_ZN14QObjectPrivate11clearGuardsEP7QObject fun:_ZN7QObjectD2Ev } { libQtCore-QObjectPrivate::clearGuards(QObject*) drd:ConflictingAccess fun:_ZN14QReadWriteLock12lockForWriteEv fun:_ZN12QWriteLocker6relockEv fun:_ZN12QWriteLockerC1EP14QReadWriteLock fun:_ZN14QObjectPrivate11clearGuardsEP7QObject fun:_ZN7QObjectD2Ev fun:_ZN24QAbstractEventDispatcherD2Ev fun:_ZN20QEventDispatcherGlibD0Ev } { libboost_thread_1 drd:ConflictingAccess ... fun:_ZN5boost9call_onceIPFvvEEEvRNS_9once_flagET_ fun:_ZN5boost6detail23get_current_thread_dataEv } # 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-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-112 Helgrind:Race fun:pthread_create@* } { 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.8.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.8*.so* obj:/lib*/ld-2.8*.so* obj:/lib*/ld-2.8*.so* } { dl-hack3-cond-2 Memcheck:Cond obj:/lib*/ld-2.8*.so* obj:/lib*/ld-2.8*.so* obj:/lib*/libc-2.8*.so* } { dl-hack3-cond-3 Memcheck:Cond obj:/lib*/ld-2.8*.so* obj:/lib*/libc-2.8*.so* obj:/lib*/libc-2.8*.so* } { dl-hack3-cond-4 Memcheck:Cond obj:/lib*/ld-2.8*.so* obj:/lib*/ld-2.8*.so* obj:/lib*/libdl-2.8*.so* } { dl-hack4-64bit-addr-1 Memcheck:Addr8 obj:/lib*/ld-2.8*.so* obj:/lib*/ld-2.8*.so* obj:/lib*/ld-2.8*.so* } { dl-hack4-64bit-addr-2 Memcheck:Addr8 obj:/lib*/ld-2.8*.so* obj:/lib*/ld-2.8*.so* obj:/lib*/libc-2.8*.so* } { dl-hack4-64bit-addr-3 Memcheck:Addr8 obj:/lib*/ld-2.8*.so* obj:/lib*/ld-2.8*.so* obj:/lib*/libdl-2.8*.so* } { dl-hack5-32bit-addr-1 Memcheck:Addr4 obj:/lib*/ld-2.8*.so obj:/lib*/ld-2.8*.so obj:/lib*/ld-2.8*.so } { dl-hack5-32bit-addr-3 Memcheck:Addr4 obj:/lib*/ld-2.8*.so obj:/lib*/ld-2.8*.so obj:/lib*/libdl-2.8*.so* } { dl-hack5-32bit-addr-4 Memcheck:Addr4 obj:/lib*/ld-2.8*.so obj:/lib*/libdl-2.8*.so* obj:/lib*/ld-2.8*.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.8.*.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.8.*.so } { glibc-2.3.5-on-SuSE-10.1-(PPC)-3 Memcheck:Addr4 fun:*wordcopy_fwd_dest_aligned* fun:mem*cpy obj:*lib*2.8.*.so } { glibc-2.8-on-SUSE-10.3-(x86) Memcheck:Addr4 obj:/lib/ld-2.8*.so obj:/lib/ld-2.8*.so obj:/lib/ld-2.8*.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.8.so obj:/*libc-2.8.so obj:/*libc-2.8.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.8.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.8.so obj:/*libc-2.8.so obj:/*libc-2.8.so } { X11-64bit-padding-4b Memcheck:Param socketcall.send(msg) fun:send obj:/*libc-2.8.so obj:/*libc-2.8.so obj:/*libc-2.8.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 }