summaryrefslogtreecommitdiffstats
path: root/tools/wine_valgrind/valgrind-suppressions
diff options
context:
space:
mode:
authorthestig@chromium.org <thestig@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-12-15 08:38:40 +0000
committerthestig@chromium.org <thestig@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-12-15 08:38:40 +0000
commitcc9d02709f82d0da8d846f1fc0886c562fd0c091 (patch)
treedf70791e6bd93c4385a1b9578c2e23fee084e5f0 /tools/wine_valgrind/valgrind-suppressions
parent26a645902ab659f2365e4cbd4a739e2ba8a9ce94 (diff)
downloadchromium_src-cc9d02709f82d0da8d846f1fc0886c562fd0c091.zip
chromium_src-cc9d02709f82d0da8d846f1fc0886c562fd0c091.tar.gz
chromium_src-cc9d02709f82d0da8d846f1fc0886c562fd0c091.tar.bz2
Valgrind: Add test script and suppression files for Valgrinding win32 executables in Wine on Linux.
These files are from winezeug.googlecode.com @ r884. TBR=dank BUG=none TEST=none Review URL: http://codereview.chromium.org/500012 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@34538 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'tools/wine_valgrind/valgrind-suppressions')
-rw-r--r--tools/wine_valgrind/valgrind-suppressions1076
1 files changed, 1076 insertions, 0 deletions
diff --git a/tools/wine_valgrind/valgrind-suppressions b/tools/wine_valgrind/valgrind-suppressions
new file mode 100644
index 0000000..078128d8
--- /dev/null
+++ b/tools/wine_valgrind/valgrind-suppressions
@@ -0,0 +1,1076 @@
+# These three happen if valgrind doesn't notice and handle speculative
+# implementations of strchr/strlen/strcat properly.
+{
+ visual_c_ignore_strchr
+ Memcheck:Cond
+ fun:strchr
+}
+{
+ visual_c_ignore_strlen
+ Memcheck:Cond
+ fun:strlen
+}
+{
+ visual_c_ignore_strcat
+ Memcheck:Cond
+ fun:strcat
+}
+# These two are because ioctl often involves structs with holes.
+# We need to either add one of these per ioctl, or
+# just make it apply for *any* call to NtFsControlFile.
+{
+ wine_struct_hole_FILE_PIPE_WAIT_FOR_BUFFER
+ Memcheck:Param
+ writev(vector[1])
+ obj:*
+ fun:wine_server_call
+ fun:server_ioctl_file
+ fun:NtFsControlFile
+ fun:WaitNamedPipeW
+}
+{
+ wine_struct_hole_FILE_PIPE_WAIT_FOR_BUFFER_NONOPTIMIZED
+ Memcheck:Param
+ writev(vector[1])
+ obj:*
+ fun:send_request
+ fun:wine_server_call
+ fun:server_ioctl_file
+ fun:NtFsControlFile
+ fun:WaitNamedPipeW
+}
+{
+ # See http://www.winehq.org/pipermail/wine-devel/2008-November/070539.html
+ # We might want to add an annotationto WriteConsoleInputW
+ # for the hole someday.
+ wine_struct_hole_WriteConsoleInput
+ Memcheck:Param
+ writev(vector[...])
+ fun:writev
+ fun:send_request
+ fun:wine_server_call
+ fun:wine_server_call_err
+ fun:WriteConsoleInputW
+}
+# We sure got a lot of these in the logs when I first started.
+# I suppressed them to avoid dispair.
+{
+ todo_wine_arrgh_wcstombs
+ Memcheck:Value4
+ fun:wine_cp_wcstombs
+}
+# Now on to system bugs that aren't Wine's fault.
+{
+ suppress_nss_leak
+ Memcheck:Leak
+ fun:malloc
+ obj:*
+ fun:__nss_database_lookup
+}
+{
+ bogus_addr4_ldso_27
+ Memcheck:Addr4
+ obj:/lib*/ld-2.7.so
+}
+{
+ bogus_addr4_ldso_261
+ Memcheck:Addr4
+ obj:/lib*/ld-2.6.1.so
+}
+{
+ bogus_addr4_ldso_25
+ Memcheck:Addr4
+ obj:/lib*/ld-2.5.so
+}
+{
+ bogus_addr4_ldso_236
+ Memcheck:Addr4
+ obj:/lib*/ld-2.3.6.so
+}
+{
+ bogus_cond_ldso_27
+ Memcheck:Cond
+ obj:/lib*/ld-2.7.so
+}
+{
+ bogus_cond_ldso_261
+ Memcheck:Cond
+ obj:/lib*/ld-2.6.1.so
+}
+{
+ bogus_cond_ldso_25
+ Memcheck:Cond
+ obj:/lib*/ld-2.5.so
+}
+{
+ bogus_cond_ldso_236
+ Memcheck:Cond
+ obj:/lib*/ld-2.3.6.so
+}
+{
+ bogus_cond_libglcore_16912
+ Memcheck:Cond
+ obj:/usr/lib*/libGLcore.so.169.12
+}
+{
+ bogus_value4_libglcore_16912
+ Memcheck:Value4
+ obj:/usr/lib*/libGLcore.so.169.12
+}
+{
+ bogus_addr2_libglcore_16912
+ Memcheck:Addr2
+ obj:/usr/lib*/libGLcore.so.169.12
+}
+{
+ suppress_ioctl_libglcore_18044
+ Memcheck:Param
+ ioctl(generic)
+ fun:ioctl
+ obj:/usr/lib32/libGLcore.so.180.44
+}
+{
+ suppress_cond_libglcore_18044
+ Memcheck:Cond
+ obj:/usr/lib32/libGLcore.so.180.44
+}
+{
+ bogus_addr4_libgl_109631
+ Memcheck:Addr4
+ obj:/usr/lib*/libGL.so.1.0.9631
+}
+{
+ bogus_addr4_libgl_109639
+ Memcheck:Addr4
+ obj:/usr/lib*/libGL.so.1.0.9639
+}
+{
+ suppress_leak_libgl_109631
+ Memcheck:Leak
+ fun:malloc
+ obj:/usr/lib*/libGL.so.1.0.9631
+}
+{
+ suppress_leak_libgl_18044
+ Memcheck:Leak
+ fun:malloc
+ obj:/usr/lib32/libGL.so.180.44
+}
+{
+ suppress_leak_wglGetProcAddress
+ Memcheck:Leak
+ fun:malloc
+ obj:/usr/lib/libGL*
+ ...
+ fun:glXChooseVisual
+ fun:has_opengl
+ fun:X11DRV_wglGetProcAddress
+ fun:wglGetProcAddress
+}
+{
+ bogus_X11_1
+ Memcheck:Param
+ write(buf)
+ obj:*
+ obj:/usr/lib*/libX11.so.6.2.0
+}
+{
+ bogus_X11_2
+ Memcheck:Param
+ write(buf)
+ obj:*
+ obj:*
+ obj:/usr/lib*/libX11.so.6.2.0
+}
+{
+ bogus_Xcursor
+ Memcheck:Cond
+ obj:/usr/lib*/libXcursor.so.1.0.2
+}
+{
+ suppress_i915_ioctl
+ Memcheck:Param
+ ioctl(generic)
+ obj:*
+ obj:/usr/lib*/dri/i915_dri.so
+}
+{
+ suppress_i915_cond
+ Memcheck:Cond
+ obj:/usr/lib*/dri/i915_dri.so
+}
+{
+ suppress_i915_value
+ Memcheck:Value4
+ obj:/usr/lib*/dri/i915_dri.so
+}
+{
+ suppress_i915_leak1
+ Memcheck:Leak
+ fun:malloc
+ obj:/usr/lib*/dri/i915_dri.so
+}
+{
+ suppress_i915_leak2
+ Memcheck:Leak
+ fun:memalign
+ fun:*
+ obj:/usr/lib*/dri/i915_dri.so
+}
+{
+ suppress_libasound_overlap
+ Memcheck:Overlap
+ fun:memcpy
+ obj:/usr/lib*/libasound.so.2.0.0
+}
+{
+ suppress_libasound_connect
+ Memcheck:Param
+ socketcall.connect(serv_addr..sun_path)
+ obj:*
+ obj:/usr/lib*/libasound.so.2.0.0
+}
+{
+ suppress_libasound_connect2
+ Memcheck:Cond
+ fun:snd_pcm_direct_client_connect
+ obj:/usr/lib*/libasound.so.2.0.0
+}
+{
+ suppress_libasound_bind
+ Memcheck:Param
+ socketcall.bind(my_addr..sun_path)
+ obj:*
+ obj:/usr/lib*/libasound.so.2.0.0
+}
+{
+ suppress_libasound_ioctl
+ Memcheck:Param
+ ioctl(arg)
+ obj:*
+ obj:/usr/lib*/libasound.so.2.0.0
+}
+{
+ suppress_libasound_ioctl2
+ Memcheck:Param
+ ioctl(arg)
+ obj:*
+ fun:ioctl
+ obj:/usr/lib*/libasound.so.2.0.0
+}
+{
+ suppress_libasound_semctl
+ Memcheck:Param
+ semctl(IPC_SET, arg.buf)
+ obj:*
+ obj:/usr/lib*/libasound.so.2.0.0
+}
+{
+ todo_suppress_libasound_leak
+ Memcheck:Leak
+ ...
+ obj:/usr/lib*/libasound.so.2.0.0
+}
+{
+ todo_suppress_libfontconfig_leak
+ Memcheck:Leak
+ fun:malloc
+ obj:/usr/lib*/libfontconfig.so.1.*
+}
+# thread_detach() should clean this up??
+{
+ todo_wine_dlls_winex11drv__x11drv_init_thread_data_main
+ Memcheck:Leak
+ ...
+ fun:RtlAllocateHeap
+ fun:x11drv_init_thread_data
+}
+# Supposedly there's a call back to X11DRV_DestroyIM at thread destruction time...?
+# and thread_detach() should also clean it up??
+{
+ todo_wine_dlls_winex11drv__x11drv_init_thread_data_xim
+ Memcheck:Leak
+ fun:malloc
+ fun:_XimOpenIM
+ fun:_XimRegisterIMInstantiateCallback
+ fun:XRegisterIMInstantiateCallback
+ fun:X11DRV_SetupXIM
+ fun:x11drv_init_thread_data
+ fun:x11drv_thread_data
+ fun:X11DRV_SetWindowPos
+}
+{
+ todo_wine_dlls_winex11drv__X11DRV_XRandR_Init
+ Memcheck:Leak
+ fun:*alloc
+ fun:XInitExtension
+ fun:XextAddDisplay
+ obj:*/libXrandr*
+ fun:XRRQueryExtension
+ fun:X11DRV_XRandR_Init
+}
+{
+ todo_wine_dlls_winex11drv__X11DRV_XRender_Init
+ Memcheck:Leak
+ fun:*alloc
+ fun:XInitExtension
+ fun:XRenderFindDisplay
+ fun:XRenderQueryExtension
+ fun:X11DRV_XRender_Init
+}
+{
+ todo_wine_dlls_winex11drv__xinerama_init
+ Memcheck:Leak
+ fun:*alloc
+ fun:XInitExtension
+ fun:XextAddDisplay
+ ...
+ fun:XPanoramiXQueryExtension
+ fun:XineramaQueryExtension
+ ...
+ fun:xinerama_init
+}
+{
+ todo_wine_dlls_winex11drv__XkbUseExtension
+ Memcheck:Leak
+ fun:*alloc
+ fun:XInitExtension
+ fun:XkbUseExtension
+ fun:XOpenDisplay
+}
+{
+ todo_wine_dlls_winex11drv__X11DRV_XComposite_Init
+ Memcheck:Leak
+ fun:*alloc
+ fun:XInitExtension
+ fun:XCompositeFindDisplay
+ fun:XCompositeQueryExtension
+}
+{
+ todo_wine_dlls_winex11drv__X11DRV_XF86VM_Init
+ Memcheck:Leak
+ fun:*alloc
+ fun:XInitExtension
+ fun:XextAddDisplay
+ fun:*
+ fun:XF86VidModeQueryExtension
+ fun:X11DRV_XF86VM_Init
+}
+{
+ todo_wine_dlls_winex11drv_XOpenDisplay
+ Memcheck:Leak
+ fun:malloc
+ ...
+ fun:xcb_connect
+ fun:_XConnectXCB
+ fun:XOpenDisplay
+}
+{
+ todo_wine_dlls_winex11drv_XOpenDisplay_2
+ Memcheck:Leak
+ fun:malloc
+ ...
+ fun:xcb_get_extension_data
+ fun:xcb_prefetch_maximum_request_length
+ fun:xcb_get_maximum_request_length
+ fun:XOpenDisplay
+ fun:DllMain
+}
+{
+ todo_suppress_alloc_module_leak
+ Memcheck:Leak
+ ...
+ fun:RtlAllocateHeap
+ fun:RtlCreateUnicodeString
+ fun:alloc_module
+}
+{
+ todo_suppress_dlopen_leak
+ Memcheck:Leak
+ fun:*alloc
+ ...
+ fun:dlopen
+}
+{
+ todo_suppress_dlopen_leak2
+ Memcheck:Leak
+ fun:*alloc
+ ...
+ fun:dl_open_worker
+ fun:_dl_catch_error
+ fun:_dl_open
+ fun:dlopen_doit
+ fun:_dl_catch_error
+}
+{
+ suppress_dlopen_addr4
+ Memcheck:Addr4
+ ...
+ fun:__libc_dlopen_mode
+}
+{
+ todo_suppress_load_library_leak
+ Memcheck:Leak
+ ...
+ fun:RtlAllocateHeap
+ fun:RtlAnsiStringToUnicodeString
+ fun:RtlCreateUnicodeStringFromAsciiz
+ fun:get_load_order
+}
+{
+ todo_suppress_wine_init_load_order_leak
+ Memcheck:Leak
+ ...
+ fun:RtlAllocateHeap
+ fun:RtlAnsiStringToUnicodeString
+ fun:RtlCreateUnicodeStringFromAsciiz
+ fun:init_load_order
+}
+# ntdll/loader.c explicitly avoids freeing when .exe's exit at the moment
+{
+ todo_suppress_wine_alloc_module_leak
+ Memcheck:Leak
+ ...
+ fun:RtlAllocateHeap
+ fun:RtlCreateUnicodeString
+ fun:alloc_module
+}
+{
+ todo_suppress_explorer_leak
+ Memcheck:Leak
+ ...
+ fun:RtlAllocateHeap
+ fun:load_driver
+ fun:loaderdrv_CreateDesktopWindow
+ fun:WIN_CreateWindowEx
+ fun:CreateWindowExW
+ fun:manage_desktop
+ fun:WinMain
+ fun:main
+}
+{
+ todo_suppress_exception_addr4
+ Memcheck:Addr4
+ fun:__wine_call_from_32_regs
+ obj:/home/dank/wine-git/dlls/ntdll/ntdll.dll.so
+ obj:/home/dank/wine-git/dlls/ntdll/ntdll.dll.so
+ fun:raise_exception
+}
+{
+ todo_ignore_bogus_writes_in_req_handler
+ Memcheck:Param
+ writev(vector[1])
+ obj:*
+ fun:call_req_handler
+}
+# See comment in dlls/kernel32/tests/thread.c at end of threadFunc1
+{
+ suppress_wine_verify_lstrlenA_deadbeef_zero
+ Memcheck:Addr1
+ fun:strlen
+ fun:lstrlenA
+ fun:threadFunc1
+ obj:/home/dank/wine-git/dlls/ntdll/ntdll.dll.so
+ fun:call_thread_func
+}
+# test_UnpackDDElParam intentionally passes a bad pointer
+{
+ suppress_wine_user32_dde_tests
+ Memcheck:Addr2
+ fun:GlobalLock
+ fun:UnpackDDElParam
+ fun:test_UnpackDDElParam
+ fun:func_dde
+ fun:run_test
+ fun:main
+}
+{
+ suppress_gmtime
+ Memcheck:Cond
+ obj:*
+ obj:*
+ fun:gmtime
+ fun:FileTimeToDosDateTime
+}
+{
+ suppress_gmtime_r
+ Memcheck:Cond
+ obj:*
+ obj:*
+ fun:gmtime_r
+ fun:FileTimeToDosDateTime
+}
+{
+ suppress_if_name2index_glibc_27
+ Memcheck:Param
+ ioctl(SIOCGIFINDEX)
+ obj:/lib*/ld-2.7.so
+ fun:getInterfaceIndexByName
+}
+{
+ suppress_if_nameindex_glibc_23
+ Memcheck:Param
+ socketcall.sendto(msg)
+ obj:/lib*/ld-2.3.*.so
+ fun:if_nameindex
+}
+{
+ # See also http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=553016
+ # and http://bbs.archlinux.org/viewtopic.php?pid=273718
+ suppress_glibc_dl_relocate_object
+ Memcheck:Cond
+ fun:_dl_relocate_object
+}
+{
+ # With ubuntu 9.04:
+ # Uninitialised value was created by a stack allocation
+ # at __libc_res_nsend (res_send.c:343)
+ glibc_bug_libc_res_nsend
+ Memcheck:Cond
+ fun:__libc_res_nsend
+}
+# Naming convention for Wine suppressions:
+# If we think it's solid:
+# suppress_wine_dirname__functionname[_moreifneeded]
+# If we aren't sure, change suppress to todo
+{
+ # intentionally frees an invalid pointer.
+ # It would be nice if that were in a different
+ # function, so we could suppress it specifically,
+ # and not other possible warnings in the heap tests.
+ suppress_wine_dlls_kernel32_tests__test_heap_invalid_free
+ Memcheck:Free
+ fun:notify_free
+ fun:RtlFreeHeap
+ fun:HeapFree
+ fun:GlobalFree
+ fun:test_heap
+ fun:func_heap
+ fun:run_test
+ fun:main
+}
+{
+ # Lots of little invalid things going on in this test
+ suppress_wine_dlls_kernel32_tests_test_heap
+ Memcheck:Addr2
+ ...
+ fun:test_heap
+ fun:func_heap
+ fun:run_test
+ fun:main
+}
+{
+ suppress_wine_dlls_kernel32_tests__CreateThread_basic_badaccess
+ Memcheck:Addr1
+ fun:strlen
+ fun:lstrlenA
+ fun:test_CreateThread_basic
+}
+{
+ suppress_wine_dlls_kernel32_IsBadReadPtr
+ Memcheck:Addr1
+ fun:IsBadReadPtr
+}
+{
+ suppress_wine_dlls_kernel32__IsBadWritePtr
+ Memcheck:Addr1
+ fun:IsBadWritePtr
+}
+{
+ suppress_wine_dlls_kernel32_tests__doCrash
+ Memcheck:Addr1
+ fun:doCrash
+}
+# This one is for a jump to zero done intentionally by the crypt32 tests
+# compiled with -O2, it looks like this?
+{
+ suppress_wine_dlls_crypt32_tests__test_data_msg_O2
+ Memcheck:Addr4
+ fun:__wine_call_from_32_regs
+ fun:CryptMsgUpdate
+ fun:test_data_msg
+}
+# compiled with -O0, it looks like this?
+{
+ suppress_wine_dlls_crypt32_tests__test_data_msg_O0
+ Memcheck:Jump
+ obj:*
+ fun:CryptMsgUpdate
+ fun:test_data_msg_update
+ fun:test_data_msg
+}
+# These two functions test error returned by file read/write with null buffers
+{
+ suppress_wine_kernel32_tests__test_read_write_nullwrite
+ Memcheck:Param
+ write(buf)
+ obj:/lib*/ld-*.so
+ fun:WriteFile
+ fun:test_read_write
+ fun:func_file
+ fun:run_test
+ fun:main
+}
+{
+ suppress_wine_kernel32_tests__test_read_write_nullread
+ Memcheck:Param
+ read(buf)
+ obj:/lib*/ld-*.so
+ fun:ReadFile
+ fun:test_read_write
+ fun:func_file
+ fun:run_test
+ fun:main
+}
+
+# test_SetThreadContext:
+# The code in question looks like this:
+#/* simulate a call to set_test_val(10) */
+#stack = (int *)ctx.Esp;
+#stack[-1] = 10;
+#stack[-2] = ctx.Eip;
+# So we actually are writing to the stack, just not using 'proper'
+# access to the stack.
+{
+ suppress_wine_kernel32_tests__test_SetThreadContext
+ Memcheck:Addr4
+ fun:test_SetThreadContext
+ fun:func_thread
+ fun:run_test
+ fun:main
+}
+{
+ ignore_rsaenh_test_expected_bad_access
+ Memcheck:Addr4
+ fun:CryptReleaseContext
+ fun:clean_up_base_environment
+}
+
+# Back to system suppressions that aren't wine's fault
+# gecko is #1 in the list of offending upstream libraries...
+{
+ todo_gecko_warnings_r_us
+ Memcheck:Addr4
+ obj:*wine_gecko*
+}
+{
+ todo_gecko_warnings_r_us2
+ Memcheck:Cond
+ obj:*wine_gecko*
+}
+# followed by openssl
+{
+ todo_openssl_warnings_r_us1a
+ Memcheck:Addr4
+ obj:/usr/lib*/libcrypto.so*
+}
+{
+ todo_openssl_warnings_r_us1b
+ Memcheck:Value4
+ obj:/usr/lib*/*libcrypto.so*
+}
+{
+ todo_openssl_warnings_r_us1c
+ Memcheck:Cond
+ obj:/usr/lib*/*libcrypto.so*
+}
+{
+ todo_openssl_warnings_r_us2a
+ Memcheck:Addr4
+ obj:*
+ obj:/usr/lib*/*libcrypto.so*
+}
+{
+ todo_openssl_warnings_r_us2b
+ Memcheck:Value4
+ obj:*
+ obj:/usr/lib*/*libcrypto.so*
+}
+{
+ todo_openssl_warnings_r_us2c
+ Memcheck:Cond
+ obj:*
+ obj:/usr/lib*/*libcrypto.so*
+}
+{
+ todo_openssl_warnings_r_us1d
+ Memcheck:Param
+ write(buf)
+ obj:*
+ obj:/usr/lib*/*libcrypto.so*
+}
+{
+ todo_openssl_warnings_r_us3a
+ Memcheck:Addr4
+ obj:/usr/lib*/*libssl.so*
+}
+{
+ todo_openssl_warnings_r_us3b
+ Memcheck:Value4
+ obj:/usr/lib*/*libssl.so*
+}
+{
+ todo_openssl_warnings_r_us3c
+ Memcheck:Cond
+ obj:/usr/lib*/*libssl.so*
+}
+{
+ # http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=532059
+ # http://rt.openssl.org/index.html?q=1642
+ todo_openssl_warnings_mod_inverse
+ Memcheck:Cond
+ fun:BN_mod_inverse
+}
+{
+ # http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=532059
+ # http://rt.openssl.org/index.html?q=1642
+ todo_openssl_warnings_div
+ Memcheck:Cond
+ fun:BN_div
+}
+# And sane
+{
+ todo_sane_warnings_r_us
+ Memcheck:Addr4
+ obj:*libsane*
+}
+{
+ todo_sane_warnings_r_us2
+ Memcheck:Cond
+ obj:*libsane*
+}
+# and visual C++ 6
+{
+ todo_visual_c_chkstk
+ Memcheck:Addr4
+ fun:$$$00001
+}
+{
+ todo_visual_c_chkstk_2
+ Memcheck:Addr4
+ fun:_chkstk
+}
+{
+ visual_c_ignore_bad_typeid
+ Memcheck:Cond
+ fun:??0bad_typeid@@QAE@ABV0@@Z
+}
+# and pulseaudio?? possible bad stack from valgrind?
+{
+ fixme_pulseaudio_leak_widOpen
+ Memcheck:Leak
+ fun:calloc
+ ...
+ fun:pa_cvolume_set
+}
+{
+ fixme_pulseaudio_leak_pa_mainloop_dispatch
+ Memcheck:Leak
+ fun:calloc
+ fun:pa_xmalloc0
+ obj:/usr/lib32/libpulse.so.0.7.1
+ obj:/usr/lib32/libpulse.so.0.7.1
+ obj:/usr/lib32/libpulse.so.0.7.1
+ obj:/usr/lib32/libpulse.so.0.7.1
+ obj:/usr/lib32/libpulse.so.0.7.1
+ obj:/usr/lib32/libpulse.so.0.7.1
+ obj:/usr/lib32/libpulse.so.0.7.1
+ obj:/usr/lib32/libpulse.so.0.7.1
+ fun:pa_mainloop_dispatch
+}
+# and msacm32? possible bad stack from valgrind?
+{
+ fixme_msacm32_leak
+ Memcheck:Leak
+ fun:calloc
+ obj:*
+ fun:acmDriverRemove
+ obj:*
+ fun:acmFilterTagDetailsW
+}
+{
+ fixme_msacm32_leak2
+ Memcheck:Leak
+ fun:calloc
+ fun:attr_copy_file
+ ...
+ fun:widReset
+}
+# Seen in chromium's EmfTest
+{
+ fixme_msacm32_leak3
+ Memcheck:Leak
+ fun:calloc
+ obj:*
+ fun:wodPrepare
+ obj:*
+ fun:wodMapperReconfigure
+}
+# aw, heck, sometimes the symbols aren't there?
+{
+ <insert_a_suppression_name_here>
+ Memcheck:Leak
+ fun:calloc
+ obj:*
+ obj:*msacm32.drv.so
+}
+
+# shell32 isn't freeing its imagelist cache on unload?
+{
+ wine_bug_20544
+ Memcheck:Leak
+ fun:malloc
+ fun:XInitExtension
+ fun:XextAddDisplay
+ fun:*
+ fun:XShmQueryVersion
+ fun:X11DRV_CreateDIBSection
+ fun:CreateDIBSection
+ fun:ImageList_CreateImage
+ fun:ImageList_Create
+ fun:SIC_Initialize
+ fun:DllMain
+}
+# winmm isn't freeing everything on unload?
+{
+ wine_bug_20545
+ Memcheck:Leak
+ ...
+ fun:Rtl*AllocateHeap
+ fun:MMDRV_InitPerType
+ fun:MMDRV_Install
+ fun:MMDRV_Init
+}
+{
+ # This one's probably benign?
+ user32_builtin_classes_leak
+ Memcheck:Leak
+ fun:calloc
+ fun:XAddExtension
+ fun:_XcursorGetDisplayInfo
+ fun:XcursorSupportsARGB
+ fun:XcursorNoticeCreateBitmap
+ fun:_XNoticeCreateBitmap
+ fun:XCreatePixmap
+ fun:X11DRV_BITMAP_Init
+ fun:device_init
+ fun:X11DRV_CreateDC
+ fun:CreateDCW
+ fun:CURSORICON_CreateIconFromBMI
+ fun:CreateIconFromResourceEx
+ fun:CURSORICON_Load
+ fun:LoadImageW
+ fun:LoadImageA
+ fun:LoadCursorA
+ fun:register_builtin
+ fun:CLASS_RegisterBuiltinClasses
+}
+# yet another leak on unload, seen on chromium's net http and ftp tests
+{
+ wine_bug_20549
+ Memcheck:Leak
+ fun:malloc
+ ...
+ fun:SECUR32_initSchannelSP
+}
+{
+ # yet another gnutls leak?
+ gnutls_leak_bug_2
+ Memcheck:Leak
+ fun:calloc
+ ...
+# fun:_gnutls_hash_init (commented out because sometimes this shows up without symbols)
+# fun:gnutls_handshake
+ fun:schan_InitializeSecurityContextW
+ fun:InitializeSecurityContextW
+}
+# leak on thread creation?
+{
+ wine_bug_20552
+ Memcheck:Leak
+ ...
+ fun:RtlAllocateHeap
+ fun:alloc_thread_tls
+ fun:MODULE_DllThreadAttach
+}
+{
+ wine_secur32_ignore_fork_helper_leak
+ Memcheck:Leak
+ ...
+ fun:RtlAllocateHeap
+ fun:fork_helper
+ fun:SECUR32_initNTLMSP
+ fun:SECUR32_initializeProviders
+}
+{
+ wine_bug_20548_ConnectNamedPipe
+ Memcheck:Leak
+ ...
+ fun:RtlAllocateHeap
+ fun:server_ioctl_file
+ fun:NtFsControlFile
+}
+{
+ wine_bug_20548_ReadFile
+ Memcheck:Leak
+ ...
+ fun:RtlAllocateHeap
+ fun:NtReadFile
+}
+{
+ wine_bug_20548_WriteFile
+ Memcheck:Leak
+ ...
+ fun:RtlAllocateHeap
+ fun:NtWriteFile
+}
+{
+ wine_bug_20548_WS_shutdown
+ Memcheck:Leak
+ ...
+ fun:RtlAllocateHeap
+ fun:WS2_register_async_shutdown
+ fun:WS_shutdown
+}
+{
+ todo_tls_leak_wine_bug_20552
+ Memcheck:Leak
+ ...
+ fun:RtlAllocateHeap
+ fun:alloc_thread_tls
+ fun:MODULE_DllThreadAttach
+ fun:start_thread
+}
+{
+ wine_bug_20654
+ Memcheck:Leak
+ ...
+ fun:RtlAllocateHeap
+ fun:get_full_path_helper
+ fun:RtlGetFullPathName_U
+}
+{
+ # This leak is expected - wine doesn't have a reliable way to free the default provider on exit.
+ wine_bug_20679
+ Memcheck:Leak
+ ...
+ fun:CRYPT_GetDefaultProvider
+}
+{
+ # Benign window title leak?
+ wine_bug_20692_wontfix
+ Memcheck:Leak
+ ...
+ fun:DEFWND_SetText*
+ ...
+ fun:CreateWindow*
+}
+{
+ expected_double_free_wintrust_tests_crypt
+ Memcheck:Addr4
+ fun:CryptCATAdminReleaseContext
+ fun:test_context
+ fun:func_crypt
+ fun:run_test
+ fun:main
+}
+{
+ expected_bad_pointer_wininet_tests_http
+ Memcheck:Addr1
+ fun:HttpOpenRequestA
+ fun:test_bogus_accept_types_array
+ fun:func_http
+ fun:run_test
+ fun:main
+}
+{
+ expected_use_after_free_user32_tests_dialog
+ Memcheck:Addr4
+ fun:DIALOG_CreateIndirect
+ fun:DialogBoxParamA
+ fun:test_DialogBoxParamA
+ fun:func_dialog
+ fun:run_test
+ fun:main
+}
+{
+ expected_12345678_ptr_user32_tests_class
+ Memcheck:Addr2
+ fun:RtlImageNtHeader
+ fun:RtlImageDirectoryEntryToData
+ fun:find_entry
+ fun:LdrFindResource_U
+ fun:find_resourceA
+ fun:FindResourceExA
+ fun:FindResourceA
+ fun:LoadMenuA
+ fun:WIN_CreateWindowEx
+ fun:CreateWindowExA
+ fun:check_instance_
+ fun:test_instances
+ fun:func_class
+ fun:run_test
+ fun:main
+}
+{
+ expected_advapi32_tests_crypt_badparams
+ Memcheck:Addr4
+ ...
+ fun:test_incorrect_api_usage
+ fun:func_crypt
+ fun:run_test
+ fun:main
+}
+{
+ # These aren't even in wine, but in a helper app wine runs
+ ntlm_auth_leaks
+ Memcheck:Leak
+ ...
+ obj:/usr/bin/ntlm_auth
+}
+{
+ ntlm_auth_leaks
+ Memcheck:Leak
+ ...
+ fun:poptGetNextOpt
+ fun:main
+}
+{
+ expected_wininet_tests_http_test_bogus_accept_types_array
+ Memcheck:Addr1
+ fun:HttpOpenRequestA
+ fun:test_bogus_accept_types_array
+ fun:func_http
+ fun:run_test
+ fun:main
+}
+{
+ expected_advapi32_tests_crypt_see_wine_bug_20918
+ Memcheck:Addr4
+ fun:*
+ fun:test_incorrect_api_usage
+ fun:func_crypt
+ fun:run_test
+ fun:main
+}
+{
+ expected_crypt32_tests_crypt_see_wine_bug_20984
+ Memcheck:Leak
+ fun:notify_alloc
+ fun:RtlAllocateHeap
+ fun:new_object
+ fun:new_key
+ fun:import_public_key
+ fun:import_key
+ fun:RSAENH_CPImportKey
+ fun:CryptImportKey
+ fun:CRYPT_ImportRsaPublicKeyInfoEx
+ fun:CryptImportPublicKeyInfoEx
+ fun:CryptImportPublicKeyInfo
+ fun:CDecodeSignedMsg_VerifySignatureWithKey
+ fun:CDecodeSignedMsg_VerifySignature
+ fun:CDecodeMsg_Control
+ fun:CryptMsgControl
+ fun:CryptVerifyDetachedMessageSignature
+ fun:test_verify_detached_message_signature
+}