diff options
author | thestig@chromium.org <thestig@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-12-15 08:38:40 +0000 |
---|---|---|
committer | thestig@chromium.org <thestig@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-12-15 08:38:40 +0000 |
commit | cc9d02709f82d0da8d846f1fc0886c562fd0c091 (patch) | |
tree | df70791e6bd93c4385a1b9578c2e23fee084e5f0 | |
parent | 26a645902ab659f2365e4cbd4a739e2ba8a9ce94 (diff) | |
download | chromium_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
-rwxr-xr-x | tools/wine_valgrind/chrome_tests.sh | 414 | ||||
-rw-r--r-- | tools/wine_valgrind/chromium-valgrind-suppressions | 92 | ||||
-rw-r--r-- | tools/wine_valgrind/valgrind-suppressions | 1076 |
3 files changed, 1582 insertions, 0 deletions
diff --git a/tools/wine_valgrind/chrome_tests.sh b/tools/wine_valgrind/chrome_tests.sh new file mode 100755 index 0000000..5b6f330 --- /dev/null +++ b/tools/wine_valgrind/chrome_tests.sh @@ -0,0 +1,414 @@ +#!/bin/sh +# chromium-runtests.sh [testsuite] +# Script to run a respectable subset of Chromium's test suite +# (excepting parts that run the browser itself, and excepting layout tests). +# Run from parent of src directory. +# By default, runs all test suites. If you specify one testsuite +# (e.g. base_unittests), it only runs that one. +# +# Chromium's test suite uses gtest, so each executable obeys the options +# documented in the wiki at http://code.google.com/p/googletest +# In particular, you can run a single test with --gtest_filter=Foo.Bar, +# and get a full list of tests in each exe with --gtest_list_tests. +# +# Before running the tests, regardless of operating system: +# 1) Make sure your system has at least one printer installed, +# or printing_unittests and unit_tests' PrintJobTest.SimplePrint +# will fail. A fake printer is fine, nothing will be printed. +# 2) Install the test cert as described at +# http://bugs.winehq.org/show_bug.cgi?id=20370 +# or net_unittests' HTTPSRequestTest.*, SSLClientSocketTest.* +# and others may fail. +# +# Chrome doesn't start without the --no-sandbox +# option in wine, so skip test suites that invoke it directly until I +# figure out how to jam that in there. + +usage() { + cat <<_EOF_ +Usage: sh chromium-runtests.sh [--options] [suite ...] +Runs chromium tests on Windows or Wine. +Options: + --individual - run tests individually + --groups - run tests grouped by their major gtest name + --gtest_filter X - only run the tests matching X + --target X - test with Debug or Release binaries, default to Debug + --just-crashes - run only tests epected to crash + --just-fails - run only tests epected to fail + --just-flaky - run only tests epected to fail sometimes + --just-hangs - run only tests epected to hang + --list-failures - show list of expected failures + --logfiles - log to one file per test, in logs subdir, rather than stdout + --loops N - run tests N times + -n - dry run, only show what will be done + --suppression_dir - directory containing the suppression files + --timeout N - let each executable run for N seconds (default varies) + --used-suppressions - extract histogram of used valgrind suppressions from current contents of logs directory + --valgrind - run the tests under valgrind + --vnc N - run the tests inside a vnc server running on display N + --winedebug chan - e.g. --windebug +relay,+seh +Currently supported suites: +app_unittests base_unittests courgette_unittests googleurl_unittests +ipc_tests media_unittests net_unittests printing_unittests sbox_unittests +sbox_validation_tests setup_unittests tcmalloc_unittests unit_tests +Default is to run all suites. It takes about five minutes to run them all +together, 22 minutes to run them all individually. +_EOF_ + exit 1 +} + +# Tests, grouped by how long they take to run +# Skip ones that require chrome itself for the moment +SUITES_1="googleurl_unittests printing_unittests sbox_validation_tests setup_unittests" +#SUITES_10="app_unittests courgette_unittests ipc_tests reliability_tests sbox_integration_tests sbox_unittests tab_switching_test tcmalloc_unittests url_fetch_test" +SUITES_10="app_unittests courgette_unittests ipc_tests sbox_unittests tcmalloc_unittests" +#SUITES_100="automated_ui_tests installer_util_unittests media_unittests nacl_ui_tests net_perftests net_unittests plugin_tests sync_unit_tests" +SUITES_100="media_unittests net_unittests" +#SUITES_1000="base_unittests interactive_ui_tests memory_test page_cycler_tests perf_tests test_shell_tests unit_tests" +SUITES_1000="base_unittests unit_tests" +#SUITES_10000="ui_tests startup_tests" + +THE_VALGRIND_CMD="/usr/local/valgrind-10903/bin/valgrind \ +--gen-suppressions=all \ +--leak-check=full \ +--num-callers=25 \ +--show-possible=no \ +--smc-check=all \ +--trace-children=yes \ +--track-origins=yes \ +-v \ +--workaround-gcc296-bugs=yes \ +" + +reduce_verbosity() { + # Filter out valgrind's extra -v output except for the 'used_suppression' lines + # Also remove extra carriage returns + awk '!/^--/ || /^--.*used_suppression:/' | tr -d '\015' +} + +# Filter out known failures +# Avoid tests that hung, failed, or crashed on windows in Dan's reference run, +# or which fail in a way we don't care about on Wine, +# or which hang or crash on wine in a way that keeps other tests from running. +# Also lists url of bug report, if any. +# Format with +# sh chromium-runtests.sh --list-failures | sort | awk '{printf("%-21s %-20s %-52s %s\n", $1, $2, $3, $4);}' + +list_known_failures() { +cat <<_EOF_ +app_unittests crash-valgrind IconUtilTest.TestCreateSkBitmapFromHICON http://bugs.winehq.org/show_bug.cgi?id=20634, not a bug, need to figure out how to handle DIB faults +base_unittests hang EtwTraceControllerTest.EnableDisable http://bugs.winehq.org/show_bug.cgi?id=20946, advapi32.ControlTrace() not yet implemented +base_unittests crash EtwTraceConsumer*Test.* http://bugs.winehq.org/show_bug.cgi?id=20946, advapi32.OpenTrace() unimplemented +base_unittests crash EtwTraceProvider*Test.* http://bugs.winehq.org/show_bug.cgi?id=20946, advapi32.RegisterTraceGuids() unimplemented +base_unittests dontcare BaseWinUtilTest.FormatMessageW +base_unittests dontcare FileUtilTest.CountFilesCreatedAfter +base_unittests dontcare FileUtilTest.GetFileCreationLocalTime +base_unittests dontcare PEImageTest.EnumeratesPE Alexandre triaged +base_unittests dontcare-winfail TimeTicks.HighResNow fails if run individually on windows +base_unittests dontcare WMIUtilTest.* +base_unittests fail HMACTest.HMACObjectReuse http://bugs.winehq.org/show_bug.cgi?id=20340 +base_unittests fail HMACTest.HmacSafeBrowsingResponseTest http://bugs.winehq.org/show_bug.cgi?id=20340 +base_unittests fail HMACTest.RFC2202TestCases http://bugs.winehq.org/show_bug.cgi?id=20340 +base_unittests fail_wine_vmware RSAPrivateKeyUnitTest.ShortIntegers +base_unittests flaky-dontcare StatsTableTest.MultipleProcesses http://bugs.winehq.org/show_bug.cgi?id=20606 +base_unittests hang-dontcare DirectoryWatcherTest.* +base_unittests hang-valgrind JSONReaderTest.Reading # not really a hang, takes 400 seconds +base_unittests hang-valgrind RSAPrivateKeyUnitTest.InitRandomTest # not really a hang, takes 300 seconds +base_unittests hang-valgrind TimerTest.RepeatingTimer* +base_unittests hang-valgrind TimeTicks.WinRollover # not really a hang, takes 1000 seconds +ipc_tests flaky IPCChannelTest.ChannelTest http://bugs.winehq.org/show_bug.cgi?id=20628 +ipc_tests flaky IPCChannelTest.SendMessageInChannelConnected http://bugs.winehq.org/show_bug.cgi?id=20628 +ipc_tests hang IPCSyncChannelTest.* http://bugs.winehq.org/show_bug.cgi?id=20390 +media_unittests crash FFmpegGlueTest.OpenClose +media_unittests crash FFmpegGlueTest.Read +media_unittests crash FFmpegGlueTest.Seek +media_unittests crash FFmpegGlueTest.Write +media_unittests fail_wine_vmware WinAudioTest.PCMWaveStreamTripleBuffer +media_unittests hang-valgrind WinAudioTest.PCMWaveSlowSource +net_unittests fail SSLClientSocketTest.Read_Interrupted http://bugs.winehq.org/show_bug.cgi?id=20748 +sbox_unittests fail JobTest.ProcessInJob +sbox_unittests fail JobTest.TestCreation +sbox_unittests fail JobTest.TestDetach +sbox_unittests fail JobTest.TestExceptions +sbox_unittests fail RestrictedTokenTest.AddAllSidToRestrictingSids +sbox_unittests fail RestrictedTokenTest.AddMultipleRestrictingSids +sbox_unittests fail RestrictedTokenTest.AddRestrictingSid +sbox_unittests fail RestrictedTokenTest.AddRestrictingSidCurrentUser +sbox_unittests fail RestrictedTokenTest.AddRestrictingSidLogonSession +sbox_unittests fail RestrictedTokenTest.DefaultDacl +sbox_unittests fail RestrictedTokenTest.DeleteAllPrivileges +sbox_unittests fail RestrictedTokenTest.DeleteAllPrivilegesException +sbox_unittests fail RestrictedTokenTest.DeletePrivilege +sbox_unittests fail RestrictedTokenTest.DenyOwnerSid +sbox_unittests fail RestrictedTokenTest.DenySid +sbox_unittests fail RestrictedTokenTest.DenySids +sbox_unittests fail RestrictedTokenTest.DenySidsException +sbox_unittests fail RestrictedTokenTest.ResultToken +sbox_unittests fail ServiceResolverTest.PatchesServices +sbox_unittests flaky IPCTest.ClientFastServer +sbox_validation_tests fail ValidationSuite.* +unit_tests crash BlacklistManagerTest.* http://crbug.com/27726 +unit_tests crash SafeBrowsingProtocolParsingTest.TestGetHashWithMac http://bugs.winehq.org/show_bug.cgi?id=20340 +unit_tests crash-valgrind DnsMasterTest.MassiveConcurrentLookupTest +unit_tests crash-valgrind NullModelTableViewTest.* http://bugs.winehq.org/show_bug.cgi?id=20553 +unit_tests crash-valgrind RenderViewTest.OnPrintPageAsBitmap http://bugs.winehq.org/show_bug.cgi?id=20657 (for wine oom) +unit_tests crash-valgrind TableViewTest.* http://bugs.winehq.org/show_bug.cgi?id=20553 +unit_tests dontcare-hangwin UtilityProcessHostTest.ExtensionUnpacker +unit_tests dontcare SpellCheckTest.SpellCheckText +unit_tests fail EncryptorTest.EncryptionDecryption http://bugs.winehq.org/show_bug.cgi?id=20495 +unit_tests fail EncryptorTest.String16EncryptionDecryption http://bugs.winehq.org/show_bug.cgi?id=20495 +unit_tests hang-valgrind ExtensionAPIClientTest.* Not really a hang, just takes 30 minutes +unit_tests fail ImporterTest.IEImporter http://bugs.winehq.org/show_bug.cgi?id=20625 +unit_tests fail RenderViewTest.InsertCharacters http://bugs.winehq.org/show_bug.cgi?id=20624 +unit_tests fail SafeBrowsingProtocolParsingTest.TestVerifyChunkMac http://bugs.winehq.org/show_bug.cgi?id=20340 +unit_tests fail SafeBrowsingProtocolParsingTest.TestVerifyUpdateMac http://bugs.winehq.org/show_bug.cgi?id=20340 +unit_tests fail_wine_vmware RenderProcessTest.TestTransportDIBAllocation +_EOF_ +} + +# Times are in seconds, and are twice as high as slowest observed runtime so far in valgrind, +# rounded to the nearest power of two multiple of 100 seconds. +# TODO: make the returned value lower if --valgrind is not given +get_expected_runtime() { + case "$timeout_manual" in + [0-9]*) echo $timeout_manual; return;; + esac + + case $1 in + app_unittests) echo 200;; + base_unittests) echo 1000;; + courgette_unittests) echo 1000;; + googleurl_unittests) echo 200;; + ipc_tests) echo 400;; + media_unittests) echo 400;; + net_unittests) echo 2000;; + printing_unittests) echo 100;; + sbox_unittests) echo 100;; + sbox_validation_tests) echo 100;; + setup_unittests) echo 100;; + tcmalloc_unittests) echo 1000;; + unit_tests) echo 4000;; + *) echo "unknown test $1" >&2 ; exec false;; + esac +} + +# Run $2... but kill it if it takes longer than $1 seconds +alarm() { time perl -e 'alarm shift; exec @ARGV' "$@"; } + +init_runtime() { + CHROME_ALLOCATOR=winheap + export CHROME_ALLOCATOR + + if test "$WINDIR" = "" + then + WINE=${WINE:-$HOME/wine-git/wine} + export WINE + WINESERVER=${WINESERVER:-$HOME/wine-git/server/wineserver} + WINEPREFIX=${WINEPREFIX:-$HOME/.wine-chromium-tests} + export WINEPREFIX + WINE_HEAP_REDZONE=16 + export WINE_HEAP_REDZONE + + if netstat -tlnp | grep :1337 + then + echo Please kill the server listening on port 1337, or reboot. The net tests need this port. + exit 1 + fi + if test ! -f /usr/share/ca-certificates/root_ca_cert.crt + then + echo "You need to do" + echo "sudo cp src/net/data/ssl/certificates/root_ca_cert.crt /usr/share/ca-certificates/" + echo "sudo vi /etc/ca-certificates.conf (and add the line root_ca_cert.crt)" + echo "sudo update-ca-certificates" + echo "else ssl tests will fail." + echo "(Alternately, modify this script to run Juan's importer, http://bugs.winehq.org/show_bug.cgi?id=20370#c4 )" + exit 1 + fi + + if test -n "$VNC" + then + export DISPLAY=":$VNC" + vncserver -kill "$DISPLAY" || true + vncserver "$DISPLAY" -ac -depth 24 -geometry 1024x768 + fi + $dry_run rm -rf $WINEPREFIX + $dry_run test -f winetricks || wget http://kegel.com/wine/winetricks + $dry_run sh winetricks nocrashdialog corefonts gecko > /dev/null + $dry_run sleep 1 + $dry_run $WINE winemine & + fi +} + +shutdown_runtime() { + if test "$WINDIR" = "" + then + $dry_run $WINESERVER -k + if test -n "$VNC" + then + vncserver -kill "$DISPLAY" + fi + fi +} + +# Looks up tests from our list of known bad tests. If $2 is not '.', picks tests expected to fail in a particular way. +get_test_filter() +{ + mysuite=$1 + myfilter=$2 + list_known_failures | tee tmp.1 | + awk '$1 == "'$mysuite'" && /'$myfilter'/ {print $3}' |tee tmp.2 | + tr '\012' : |tee tmp.3 | + sed 's/:$/\n/' +} + +# Output the logical and of the two gtest filters $1 and $2. +# Handle the case where $1 is empty. +and_gtest_filters() +{ + # FIXME: handle more complex cases + case "$1" in + "") ;; + *) echo -n "$1": ;; + esac + echo $2 +} + +# Expands a gtest filter spec to a plain old list of tests separated by whitespace +expand_test_list() +{ + mysuite=$1 # e.g. base_unittests + myfilter=$2 # existing gtest_filter specification with wildcard + # List just the tests matching $myfilter, separated by colons + $WINE ./$mysuite.exe --gtest_filter=$myfilter --gtest_list_tests | + tr -d '\015' | + grep -v FLAKY | + perl -e 'while (<STDIN>) { chomp; if (/^[A-Z]/) { $testname=$_; } elsif (/./) { s/\s*//; print "$testname$_\n"} }' +} + +# Parse arguments + +announce=true +do_individual=no +dry_run= +extra_gtest_filter= +fail_filter="." +loops=1 +logfiles= +SUITES= +suppression_dirs= +TARGET=Debug +timeout_manual= +VALGRIND_CMD= +VNC= +want_fails=no +winedebug= + +while test "$1" != "" +do + case $1 in + --individual) do_individual=yes;; + --groups) do_individual=groups;; + --gtest_filter) extra_gtest_filter=$2; shift;; + --just-crashes) fail_filter="crash"; want_fails=yes;; + --just-fails) fail_filter="fail"; want_fails=yes;; + --just-flaky) fail_filter="flaky"; want_fails=yes;; + --just-hangs) fail_filter="hang"; want_fails=yes;; + --list-failures) list_known_failures; exit 0;; + --list-failures-html) list_known_failures | sed 's,http://\(.*\),<a href="http://\1">\1</a>,;s/$/<br>/' ; exit 0;; + --loops) loops=$2; shift;; + -n) dry_run=true; announce=echo ;; + --suppression_dir) suppression_dirs="$suppression_dirs $2"; shift;; + --target) TARGET=$2; shift;; + --timeout) timeout_manual=$2; shift;; + --used-suppressions) cd logs; grep used_suppression *.log | sed 's/-1.*--[0-9]*-- used_suppression//'; exit 0;; + --valgrind) VALGRIND_CMD="$THE_VALGRIND_CMD";; + --vnc) VNC=$2; shift;; + --winedebug) winedebug=$2; shift;; + --logfiles) logfiles=yes;; + -*) usage; exit 1;; + *) SUITES="$SUITES $1" ;; + esac + shift +done + +if test "$SUITES" = "" +then + SUITES="$SUITES_1 $SUITES_10 $SUITES_100 $SUITES_1000" +fi + +if test "$VALGRIND_CMD" != "" +then + if test "$suppression_dirs" = "" + then + # Default value for winezeug. + suppression_dirs="../../../ ../../../../../valgrind" + # Also try the script dir. + suppression_dirs="$suppression_dirs $(dirname $0)" + fi + # Check suppression_dirs for suppression files to create suppression_options + suppression_options= + for dir in $suppression_dirs + do + for f in valgrind-suppressions chromium-valgrind-suppressions + do + if test -f "$dir/$f" + then + suppression_options="$suppression_options --suppressions=$dir/$f" + fi + done + done + VALGRIND_CMD="$VALGRIND_CMD $suppression_options" +fi + +set -e + +trap shutdown_runtime 0 +init_runtime +export WINEDEBUG=$winedebug + +set -x + +mkdir -p logs +cd "src/chrome/$TARGET" + +i=1 +while test $i -le $loops +do + for suite in $SUITES + do + expected_to_fail="`get_test_filter $suite $fail_filter`" + case $want_fails in + no) filterspec=`and_gtest_filters "${extra_gtest_filter}" -${expected_to_fail}` ;; + yes) filterspec=`and_gtest_filters "${extra_gtest_filter}" ${expected_to_fail}` ;; + esac + LOGCMD= + + case $do_individual in + no) + $announce $VALGRIND_CMD $WINE ./$suite.exe --gtest_filter=$filterspec + test "$logfiles" = yes && LOGCMD="> ../../../logs/$suite-$i.log" + $dry_run alarm `get_expected_runtime $suite` \ + $VALGRIND_CMD $WINE ./$suite.exe --gtest_filter=$filterspec 2>&1 | eval reduce_verbosity $LOGCMD || true + ;; + yes) + for test in `expand_test_list $suite $filterspec` + do + $announce $VALGRIND_CMD $WINE ./$suite.exe --gtest_filter="$test" + test "$logfiles" = yes && LOGCMD="> ../../../logs/$suite-$test-$i.log" + $dry_run alarm `get_expected_runtime $suite` \ + $VALGRIND_CMD $WINE ./$suite.exe --gtest_filter="$test" 2>&1 | eval reduce_verbosity $LOGCMD || true + done + ;; + groups) + for test in `expand_test_list $suite $filterspec | sed 's/\..*//' | sort -u` + do + $announce $VALGRIND_CMD $WINE ./$suite.exe --gtest_filter="$test.*-${expected_to_fail}" + test "$logfiles" = yes && LOGCMD="> ../../../logs/$suite-$test-$i.log" + $dry_run alarm `get_expected_runtime $suite` \ + $VALGRIND_CMD $WINE ./$suite.exe --gtest_filter="$test.*-${expected_to_fail}" 2>&1 | eval reduce_verbosity $LOGCMD || true + done + ;; + esac + done + i=`expr $i + 1` +done diff --git a/tools/wine_valgrind/chromium-valgrind-suppressions b/tools/wine_valgrind/chromium-valgrind-suppressions new file mode 100644 index 0000000..ed60b83 --- /dev/null +++ b/tools/wine_valgrind/chromium-valgrind-suppressions @@ -0,0 +1,92 @@ +# Chromium-specific suppressions +{ + dont_valgrind_python_1 + Memcheck:Cond + ... + obj:*python* +} +{ + dont_valgrind_python_2 + Memcheck:Value4 + ... + obj:*python* +} +{ + dont_valgrind_python_3 + Memcheck:Addr4 + ... + obj:*python* +} +{ + wine_bug_20551_as_seen_by_chromium + Memcheck:Leak + ... + fun:RtlAllocateHeap + ... + fun:GlobalAlloc + ... + fun:Clipboard::WriteObjects +} +{ + suppress_chromium_crasher + Memcheck:Addr1 + ... + fun:*Test_Crasher* +} +{ + ignore_mozilla_errors + Memcheck:Cond + obj:*/ImporterTest/profile/mozcrt19.dll +} +{ + wine_bug_20692_a + Memcheck:Leak + ... + fun:CryptImportKey + fun:CRYPT_ImportRsaPublicKeyInfoEx + fun:CryptImportPublicKeyInfoEx + fun:CryptImportPublicKeyInfo + fun:base::SignatureVerifier::VerifyInit +} +{ + wine_bug_20692_b + Memcheck:Leak + ... + fun:CryptGenKey + fun:base::RSAPrivateKey::Create +} +{ + # Boy, oh, boy do we need a better way to deal with this. + # See https://bugs.kde.org/show_bug.cgi?id=190660 + valgrind_bug_190660 + Memcheck:Addr4 + fun:strlen +} +{ + # Boy, oh, boy do we need a better way to deal with this. + # See https://bugs.kde.org/show_bug.cgi?id=190660 + valgrind_bug_190660 + Memcheck:Addr4 + fun:strcmp +} +{ + # Boy, oh, boy do we need a better way to deal with this. + # See https://bugs.kde.org/show_bug.cgi?id=190660 + valgrind_bug_190660 + Memcheck:Addr4 + fun:strchr +} +{ + # Boy, oh, boy do we need a better way to deal with this. + # See https://bugs.kde.org/show_bug.cgi?id=190660 + valgrind_bug_190660 + Memcheck:Addr4 + fun:strcat +} +{ + # Boy, oh, boy do we need a better way to deal with this. + # See https://bugs.kde.org/show_bug.cgi?id=190660 + valgrind_bug_190660 + Memcheck:Addr4 + fun:strncpy +} 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 +} |