diff --git a/SDL_perl.supp b/SDL_perl.supp new file mode 100644 index 00000000..a62037da --- /dev/null +++ b/SDL_perl.supp @@ -0,0 +1,2243 @@ +# 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 debian.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/*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-* +} + +# +# 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 +# } + +# +# 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_tcb + drd:ConflictingAccess + ... + fun:__free_tcb +} +{ + drd-libpthread-pthread_detach + drd:ConflictingAccess + fun:pthread_detach + fun:pthread_detach +} +{ + drd-libpthread-_Unwind_ForcedUnwind + drd:ConflictingAccess + ... + fun:_Unwind_ForcedUnwind +} +{ + drd-libpthread-_Unwind_Resume + drd:ConflictingAccess + ... + fun:_Unwind_Resume +} +{ + 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 + fun:_ZN11QThreadData5derefEv + 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 +} + +# +# Suppression patterns for libboost. +# + +# Suppress the races on boost::once_flag::epoch and on +# boost::detail::once_global_epoch. See also the source file +# boost/thread/pthread/once.hpp in the Boost source tree. +{ + drd-libboost-boost::call_once(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 +} +{ + drd-libboost-boost::detail::get_current_thread_data() + drd:ConflictingAccess + ... + 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_WRK + 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.11.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.11*.so* + obj:/lib*/ld-2.11*.so* + obj:/lib*/ld-2.11*.so* +} +{ + dl-hack3-cond-2 + Memcheck:Cond + obj:/lib*/ld-2.11*.so* + obj:/lib*/ld-2.11*.so* + obj:/lib*/libc-2.11*.so* +} +{ + dl-hack3-cond-3 + Memcheck:Cond + obj:/lib*/ld-2.11*.so* + obj:/lib*/libc-2.11*.so* + obj:/lib*/libc-2.11*.so* +} +{ + dl-hack3-cond-4 + Memcheck:Cond + obj:/lib*/ld-2.11*.so* + obj:/lib*/ld-2.11*.so* + obj:/lib*/libdl-2.11*.so* +} + +{ + dl-hack4-64bit-addr-1 + Memcheck:Addr8 + obj:/lib*/ld-2.11*.so* + obj:/lib*/ld-2.11*.so* + obj:/lib*/ld-2.11*.so* +} +{ + dl-hack4-64bit-addr-2 + Memcheck:Addr8 + obj:/lib*/ld-2.11*.so* + obj:/lib*/ld-2.11*.so* + obj:/lib*/libc-2.11*.so* +} +{ + dl-hack4-64bit-addr-3 + Memcheck:Addr8 + obj:/lib*/ld-2.11*.so* + obj:/lib*/ld-2.11*.so* + obj:/lib*/libdl-2.11*.so* +} + +{ + dl-hack5-32bit-addr-1 + Memcheck:Addr4 + obj:/lib*/ld-2.11*.so + obj:/lib*/ld-2.11*.so + obj:/lib*/ld-2.11*.so +} +{ + dl-hack5-32bit-addr-3 + Memcheck:Addr4 + obj:/lib*/ld-2.11*.so + obj:/lib*/ld-2.11*.so + obj:/lib*/libdl-2.11*.so* +} +{ + dl-hack5-32bit-addr-4 + Memcheck:Addr4 + obj:/lib*/ld-2.11*.so + obj:/lib*/libdl-2.11*.so* + obj:/lib*/ld-2.11*.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.11.*.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.11.*.so +} +{ + glibc-2.3.5-on-SuSE-10.1-(PPC)-3 + Memcheck:Addr4 + fun:*wordcopy_fwd_dest_aligned* + fun:mem*cpy + obj:*lib*2.11.*.so +} + +{ + glibc-2.11-on-SUSE-10.3-(x86) + Memcheck:Addr4 + obj:/lib/ld-2.11*.so + obj:/lib/ld-2.11*.so + obj:/lib/ld-2.11*.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.11.so + obj:/*libc-2.11.so + obj:/*libc-2.11.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.11.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.11.so + obj:/*libc-2.11.so + obj:/*libc-2.11.so +} +{ + X11-64bit-padding-4b + Memcheck:Param + socketcall.send(msg) + fun:send + obj:/*libc-2.11.so + obj:/*libc-2.11.so + obj:/*libc-2.11.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 +} + +##----------------------------------------------------------------------## + +# 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* +} +## +## Debian-specific suppressions +## + +{ + Debian libc6 (2.3.x) stripped dynamic linker + Memcheck:Cond + obj:/lib/ld-2.3.*.so + obj:/lib/ld-2.3.*.so + obj:/lib/ld-2.3.*.so + obj:/lib/ld-2.3.*.so + obj:/lib/ld-2.3.*.so +} + +{ + Debian libc6 (2.4.x) stripped dynamic linker + Memcheck:Cond + obj:/lib/ld-2.4.so + obj:/lib/ld-2.4.so + obj:/lib/ld-2.4.so + obj:/lib/ld-2.4.so + obj:/lib/ld-2.4.so +} + +{ + Debian libc6 (2.5.x) stripped dynamic linker + Memcheck:Cond + obj:/lib/ld-2.5.so + obj:/lib/ld-2.5.so + obj:/lib/ld-2.5.so + obj:/lib/ld-2.5.so + obj:/lib/ld-2.5.so +} + +{ + strchr/libc-2.3.2.so/_dl_catch_error(Cond) + Memcheck:Cond + fun:strchr + obj:*libc-2.3.2.so + fun:_dl_catch_error + obj:*libc-2.3.2.so +} + +{ + "Xlib does not zero out unused bytes in the protocol stream"; see http://keithp.com/~keithp/talks/usenix2003/html/net.html + Memcheck:Param + writev(vector[...]) + fun:vgAllRoadsLeadToRome_writev + fun:__writev + obj:/usr/X11R6/lib/libX11.so.6.2 + fun:_X11TransWritev +} + +{ + Debian_dlopen + Memcheck:Cond + fun:_dl_relocate_object + fun:dl_open_worker + fun:_dl_catch_error + fun:__GI__dl_open +} + +{ + Debian_dlopen2 + Memcheck:Addr1 + obj:/lib/ld-2.3.2.so + fun:_dl_map_object + fun:dl_open_worker + fun:_dl_catch_error +} + +{ + Debian_dlopen3 + Memcheck:Addr1 + obj:/lib/ld-2.3.2.so + fun:_dl_map_object + obj:/lib/ld-2.3.2.so + fun:_dl_catch_error +} +{ + Debian_dlopen4 + Memcheck:Addr1 + obj:/lib/ld-2.3.2.so + fun:_dl_check_map_versions + fun:dl_open_worker + fun:_dl_catch_error +} +{ + Debian_gcc_supp + Memcheck:Addr4 + obj:/lib/libgcc_s.so.1 + fun:__dl_iterate_phdr + fun:_Unwind_Find_FDE + obj:/lib/libgcc_s.so.1 +} + +{ + Debian zlib1g suppression + Memcheck:Cond + obj:/usr/lib/libz.so.1.2.2 + obj:/usr/lib/libz.so.1.2.2 + fun:deflate + fun:main +} + +# Glib stores pointers in an integral type. Bug#231989 +{ + glib type registry + Memcheck:Leak + fun:calloc + fun:g_malloc0 + fun:type_node_any_new_W +} + +{ + Debian rpmatch (malloc) static allocations + Memcheck:Leak + fun:malloc + obj:/lib/tls/libc-2.3.6.so + obj:/lib/tls/libc-2.3.6.so + obj:/lib/tls/libc-2.3.6.so + obj:/lib/tls/libc-2.3.6.so + fun:regcomp + fun:rpmatch + fun:main +} +{ + Debian rpmatch (malloc) static allocations + Memcheck:Leak + fun:malloc + obj:/lib/tls/libc-2.3.6.so + obj:/lib/tls/libc-2.3.6.so + obj:/lib/tls/libc-2.3.6.so + fun:regcomp + fun:rpmatch + fun:main +} +{ + Debian rpmatch (malloc) static allocations + Memcheck:Leak + fun:malloc + obj:/lib/tls/libc-2.3.6.so + obj:/lib/tls/libc-2.3.6.so + fun:regcomp + fun:rpmatch + fun:main +} +{ + Debian rpmatch (malloc) static allocations + Memcheck:Leak + fun:malloc + obj:/lib/tls/libc-2.3.6.so + fun:regcomp + fun:rpmatch + fun:main +} + +{ + Debian rpmatch (calloc) static allocations + Memcheck:Leak + fun:calloc + obj:/lib/tls/libc-2.3.6.so + obj:/lib/tls/libc-2.3.6.so + obj:/lib/tls/libc-2.3.6.so + obj:/lib/tls/libc-2.3.6.so + obj:/lib/tls/libc-2.3.6.so + fun:regcomp + fun:rpmatch + fun:main +} +{ + Debian rpmatch (malloc) static allocations + Memcheck:Leak + fun:malloc + obj:/lib/tls/libc-2.3.6.so + fun:regcomp + fun:rpmatch + fun:main +} +{ + Debian rpmatch (malloc) static allocations + Memcheck:Leak + fun:malloc + obj:/lib/tls/libc-2.3.6.so + fun:regcomp + fun:rpmatch + fun:main +} +{ + Debian rpmatch (calloc) static allocations + Memcheck:Leak + fun:calloc + obj:/lib/tls/libc-2.3.6.so + fun:regcomp + fun:rpmatch + fun:main +} +{ + Debian rpmatch (calloc) static allocations + Memcheck:Leak + fun:calloc + obj:/lib/tls/libc-2.3.6.so + obj:/lib/tls/libc-2.3.6.so + fun:regcomp + fun:rpmatch + fun:main +} +{ + Debian rpmatch (malloc - realloc) static allocations + Memcheck:Leak + fun:malloc + fun:realloc + obj:/lib/tls/libc-2.3.6.so + fun:regcomp + fun:rpmatch + fun:main +} +{ + Debian rpmatch (malloc) static allocations + Memcheck:Leak + fun:malloc + fun:regcomp + fun:rpmatch + fun:main +} + +# +# This is a valgrind suppression file that should be used when using python +# +# You must edit Objects/obmalloc.c and uncomment Py_USING_MEMORY_DEBUGGER +# to use the preferred suppressions with Py_ADDRESS_IN_RANGE. +# +# If you do not want to recompile Python, you can uncomment +# suppressions for PyObject_Free and PyObject_Realloc. +# +# See Misc/README.valgrind in the python source for more information. + +# all tool names: Addrcheck,Memcheck,cachegrind,helgrind,massif +{ + ADDRESS_IN_RANGE/Invalid read of size 4 + Memcheck:Addr4 + fun:Py_ADDRESS_IN_RANGE +} + +{ + ADDRESS_IN_RANGE/Invalid read of size 4 + Memcheck:Value4 + fun:Py_ADDRESS_IN_RANGE +} + +{ + ADDRESS_IN_RANGE/Conditional jump or move depends on uninitialised value + Memcheck:Cond + fun:Py_ADDRESS_IN_RANGE +} + +###{ +### ADDRESS_IN_RANGE/Invalid read of size 4 +### Memcheck:Addr4 +### fun:PyObject_Free +###} +### +###{ +### ADDRESS_IN_RANGE/Invalid read of size 4 +### Memcheck:Value4 +### fun:PyObject_Free +###} +### +###{ +### ADDRESS_IN_RANGE/Conditional jump or move depends on uninitialised value +### Memcheck:Cond +### fun:PyObject_Free +###} + +###{ +### ADDRESS_IN_RANGE/Invalid read of size 4 +### Memcheck:Addr4 +### fun:PyObject_Realloc +###} +### +###{ +### ADDRESS_IN_RANGE/Invalid read of size 4 +### Memcheck:Value4 +### fun:PyObject_Realloc +###} +### +###{ +### ADDRESS_IN_RANGE/Conditional jump or move depends on uninitialised value +### Memcheck:Cond +### fun:PyObject_Realloc +###} + +### +### All the suppressions below are for errors that occur within libraries +### that Python uses. The problems to not appear to be related to Python's +### use of the libraries. +### +{ + GDBM problems, see test_gdbm + Memcheck:Param + write(buf) + fun:write + fun:gdbm_open + +} + +### +### These occur from somewhere within the SSL, when running +### test_socket_sll. They are too general to leave on by default. +### +###{ +### somewhere in SSL stuff +### Memcheck:Cond +### fun:memset +###} +###{ +### somewhere in SSL stuff +### Memcheck:Value4 +### fun:memset +###} +### +###{ +### somewhere in SSL stuff +### Memcheck:Cond +### fun:MD5_Update +###} +### +###{ +### somewhere in SSL stuff +### Memcheck:Value4 +### fun:MD5_Update +###} + +# +# All of these problems come from using test_socket_ssl +# +{ + from test_socket_ssl + Memcheck:Cond + fun:BN_bin2bn +} + +{ + from test_socket_ssl + Memcheck:Cond + fun:BN_num_bits_word +} + +{ + from test_socket_ssl + Memcheck:Value4 + fun:BN_num_bits_word +} + +{ + from test_socket_ssl + Memcheck:Cond + fun:BN_mod_exp_mont_word +} + +{ + from test_socket_ssl + Memcheck:Cond + fun:BN_mod_exp_mont +} + +{ + from test_socket_ssl + Memcheck:Param + write(buf) + fun:write + obj:/usr/lib/libcrypto.so.0.9.7 +} + +{ + from test_socket_ssl + Memcheck:Cond + fun:RSA_verify +} + +{ + from test_socket_ssl + Memcheck:Value4 + fun:RSA_verify +} + +{ + from test_socket_ssl + Memcheck:Value4 + fun:DES_set_key_unchecked +} + +{ + from test_socket_ssl + Memcheck:Value4 + fun:DES_encrypt2 +} + +{ + from test_socket_ssl + Memcheck:Cond + obj:/usr/lib/libssl.so.0.9.7 +} + +{ + from test_socket_ssl + Memcheck:Value4 + obj:/usr/lib/libssl.so.0.9.7 +} + +{ + from test_socket_ssl + Memcheck:Cond + fun:BUF_MEM_grow_clean +} + +{ + from test_socket_ssl + Memcheck:Cond + fun:memcpy + fun:ssl3_read_bytes +} + +{ + from test_socket_ssl + Memcheck:Cond + fun:SHA1_Update +} + +{ + from test_socket_ssl + Memcheck:Value4 + fun:SHA1_Update +} + +{ + Debian libc6 (2.9.x) stripped dynamic linker + Memcheck:Cond + obj:/lib/ld-2.9.so + obj:/lib/ld-2.9.so + obj:/lib/ld-2.9.so + obj:/lib/ld-2.9.so + obj:/lib/ld-2.9.so + +} +{ + Debian libc6 (2.10.x) stripped dynamic linker + Memcheck:Cond + fun:index + fun:expand_dynamic_string_token + fun:_dl_map_object + fun:map_doit + fun:_dl_catch_error + fun:do_preload + fun:dl_main + fun:_dl_sysdep_start + fun:_dl_start + obj:/lib/ld-2.10.1.so +} +{ + Debian libc6 (2.10.x) stripped dynamic linker + Memcheck:Cond + fun:_dl_relocate_object + fun:dl_main + fun:_dl_sysdep_start + fun:_dl_start + obj:/lib/ld-2.10.1.so +} + + +##Perl supress +# +{ + Perl library + Memcheck:Cond + obj:*/perl5.12.0 +}