Julian kindly pointed out that --vex-iropt-precise-memory-exns=yes is needed to avoid false positives in tricky signal handlers like the one involved in GetBitmapBits(). Adding that didn't slow things down much if any, and got rid of lots of valgrind-specific GetBitmapBits() crashes.
Also, I applied what seems like an obvious fix for the subheap_notify_free_all false positives (see http://bugs.winehq.org/show_bug.cgi?id=21553 ), and it got rid of them.
I've updated http://wiki.winehq.org/Wine_and_Valgrind correspondingly (and made it a bunch clearer, too).
Current results at http://kegel.com/wine/valgrind/logs/2010-01-31-09.46/
Current stats: http://kegel.com/wine/valgrind/logs/2010-01-31-09.46.errs.txt 1 Invalid free/ delete / delete[] 2 Source and destination overlap in memcpy 2 Syscall param writev 3 Use of uninitialised value of size 4 6 Invalid write of size 4 7 Invalid read of size 2 12 Invalid write of size 1 22 Invalid read of size 4 48 Conditional jump or move depends on uninitialised value 78 Invalid read of size 1 283 XXX bytes in XXX blocks are definitely lost total: 464
*All* of the "Invalid read of size 1" errors are in the heap tests, so I'll suppress them for the next run.
So we're at 386 warnings currently, a bit better than last time I reported figures, http://www.winehq.org/pipermail/wine-devel/2010-January/080989.html