What if heap errors caused 'make test' to fail?

Dan Kegel dank at kegel.com
Thu Oct 25 19:04:52 CDT 2007


Let's just say, for grins, that we applied a patch that made
heap corruption fatal under WINEDEBUG=warn+heap, e.g.

--- a/dlls/ntdll/heap.c
+++ b/dlls/ntdll/heap.c
@@ -909,6 +909,7 @@ static BOOL HEAP_ValidateInUseArena( con
             WARN( "Heap %p: unaligned arena pointer %p\n",
subheap->heap, pArena );
             if ( TRACE_ON(heap) )
                 HEAP_Dump( subheap->heap );
+            assert( FALSE );
         }
         return FALSE;
     }
@@ -924,6 +925,7 @@ static BOOL HEAP_ValidateInUseArena( con
             WARN("Heap %p: invalid in-use arena magic for %p\n",
subheap->heap, pArena );
             if (TRACE_ON(heap))
                HEAP_Dump( subheap->heap );
+            assert( FALSE );
         }
         return FALSE;
     }


How many tests would that break?  Any guesses?  Scroll down for the answer:












25!  Here's the output of WINEDEBUG=warn+heap make -k test
piped through grep make.*Error:

make[2]: *** [alloc.ok] Error 134
make[2]: *** [pipe.ok] Error 1
make[2]: *** [systray.ok] Error 6
make[2]: *** [thread.ok] Error 9
make[2]: *** [security.ok] Error 1
make[1]: *** [advapi32/tests/__test__] Error 2
make[2]: *** [info.ok] Error 134
make[1]: *** [ntdll/tests/__test__] Error 2
make[2]: *** [heap.ok] Error 134
make[2]: *** [change.ok] Error 2
make[2]: *** [heap.ok] Error 5
make[2]: *** [util.ok] Error 134
make[1]: *** [msvcrt/tests/__test__] Error 2
make[1]: *** [snmpapi/tests/__test__] Error 2
make[2]: *** [apibuf.ok] Error 134
make[1]: *** [netapi32/tests/__test__] Error 2
make[2]: *** [device.ok] Error 4
make[1]: *** [d3d9/tests/__test__] Error 2
make[2]: *** [moniker.ok] Error 134
make[2]: *** [toolhelp.ok] Error 8
make[2]: *** [webbrowser.ok] Error 134
make[1]: *** [shdocvw/tests/__test__] Error 2
make[2]: *** [input.ok] Error 64
make[2]: *** [editor.ok] Error 5
make[1]: *** [riched20/tests/__test__] Error 2
make[2]: *** [mixer.ok] Error 10
make[2]: *** [msg.ok] Error 18
make[2]: *** [shellpath.ok] Error 3
make[2]: *** [class.ok] Error 2
make[2]: *** [comm.ok] Error 3
make[2]: *** [vartype.ok] Error 134
make[1]: *** [oleaut32/tests/__test__] Error 2
make[2]: *** [parser.ok] Error 134
make[1]: *** [setupapi/tests/__test__] Error 2
make[2]: *** [win.ok] Error 8
make[2]: *** [capture.ok] Error 134
make[1]: *** [dsound/tests/__test__] Error 2
make[2]: *** [htmldoc.ok] Error 134
make[2]: *** [timer.ok] Error 1
make[2]: *** [mci.ok] Error 134
make[1]: *** [mshtml/tests/__test__] Error 2
make[2]: *** [font.ok] Error 26
make[1]: *** [gdi32/tests/__test__] Error 2
make[1]: *** [kernel32/tests/__test__] Error 2
make[2]: *** [wave.ok] Error 8
make[1]: *** [winmm/tests/__test__] Error 2
make[2]: *** [server.ok] Error 4
make[1]: *** [rpcrt4/tests/__test__] Error 2
make[2]: *** [dde.ok] Error 5
make[1]: *** [user32/tests/__test__] Error 2
make[2]: *** [shlexec.ok] Error 35
make[1]: *** [shell32/tests/__test__] Error 2
make[1]: *** [ole32/tests/__test__] Error 2

I wonder if some of these tests are themselves buggy such that
they pass on Wine by accident (without this patch) but fail on Windows?
- Dan



More information about the wine-devel mailing list