[PATCH 0/2] MR2213: Draft: Debug GitLab's kernel32:heap failures in test_GlobalMemoryStatus()
From: Francois Gouget <fgouget(a)codeweavers.com> Also repeat the test to increase the chance of a failure. --- dlls/kernel32/tests/heap.c | 32 +++++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/dlls/kernel32/tests/heap.c b/dlls/kernel32/tests/heap.c index a81cb1b7a15..1c291b9a2a7 100644 --- a/dlls/kernel32/tests/heap.c +++ b/dlls/kernel32/tests/heap.c @@ -3549,6 +3549,7 @@ static void test_GlobalMemoryStatus(void) VM_COUNTERS_EX vmc; NTSTATUS status; BOOL ret; + static BOOL first = 1; SetLastError( 0xdeadbeef ); ret = GlobalMemoryStatusEx( &memex ); @@ -3590,13 +3591,21 @@ static void test_GlobalMemoryStatus(void) /* allow some variability, info sources are not always in sync */ #define IS_WITHIN_RANGE(a, b) (((a) - (b) + (256 * basic_info.PageSize)) <= (512 * basic_info.PageSize)) + if (first) + printf("PageSize = %ld -> %ld - %ld\n", basic_info.PageSize, 256 * basic_info.PageSize, 512 * basic_info.PageSize); + printf("memex-expect: Phys: %#I64d - %#I64d = %#I64d / %#I64d - %#I64d = %#I64d PageFile %#I64d - %#I64d = %#I64d / %#I64d - %#I64d = %#I64d\n", + memex.ullAvailPhys, expect.ullAvailPhys, memex.ullAvailPhys - expect.ullAvailPhys, + memex.ullTotalPhys, expect.ullTotalPhys, memex.ullTotalPhys - expect.ullTotalPhys, + memex.ullAvailPageFile, expect.ullAvailPageFile, memex.ullAvailPageFile - expect.ullAvailPageFile, + memex.ullTotalPageFile, expect.ullTotalPageFile, memex.ullTotalPageFile - expect.ullTotalPageFile ); + ok( memex.dwMemoryLoad == expect.dwMemoryLoad, "got dwMemoryLoad %lu\n", memex.dwMemoryLoad ); - ok( memex.ullTotalPhys == expect.ullTotalPhys, "got ullTotalPhys %#I64x\n", memex.ullTotalPhys ); - ok( IS_WITHIN_RANGE( memex.ullAvailPhys, expect.ullAvailPhys ), "got ullAvailPhys %#I64x\n", memex.ullAvailPhys ); - ok( memex.ullTotalPageFile == expect.ullTotalPageFile, "got ullTotalPageFile %#I64x\n", memex.ullTotalPageFile ); - ok( IS_WITHIN_RANGE( memex.ullAvailPageFile, expect.ullAvailPageFile ), "got ullAvailPageFile %#I64x\n", memex.ullAvailPageFile ); - ok( memex.ullTotalVirtual == expect.ullTotalVirtual, "got ullTotalVirtual %#I64x\n", memex.ullTotalVirtual ); - ok( memex.ullAvailVirtual <= expect.ullAvailVirtual, "got ullAvailVirtual %#I64x\n", memex.ullAvailVirtual ); + ok( memex.ullTotalPhys == expect.ullTotalPhys, "got ullTotalPhys %#I64x, expected %#I64x\n", memex.ullTotalPhys, expect.ullTotalPhys ); + ok( IS_WITHIN_RANGE( memex.ullAvailPhys, expect.ullAvailPhys ), "got ullAvailPhys %#I64x, expected %#I64x\n", memex.ullAvailPhys, expect.ullAvailPhys ); + ok( memex.ullTotalPageFile == expect.ullTotalPageFile, "got ullTotalPageFile %#I64x, expected %#I64x\n", memex.ullTotalPageFile, expect.ullTotalPageFile ); + ok( IS_WITHIN_RANGE( memex.ullAvailPageFile, expect.ullAvailPageFile ), "got ullAvailPageFile %#I64x, expected %#I64x\n", memex.ullAvailPageFile, expect.ullAvailPageFile ); + ok( memex.ullTotalVirtual == expect.ullTotalVirtual, "got ullTotalVirtual %#I64x, expected %#I64x\n", memex.ullTotalVirtual, expect.ullTotalVirtual ); + ok( memex.ullAvailVirtual <= expect.ullAvailVirtual, "got ullAvailVirtual %#I64x, expected %#I64x\n", memex.ullAvailVirtual, expect.ullAvailVirtual ); ok( memex.ullAvailExtendedVirtual == 0, "got ullAvailExtendedVirtual %#I64x\n", memex.ullAvailExtendedVirtual ); ok( mem.dwMemoryLoad == memex.dwMemoryLoad, "got dwMemoryLoad %lu\n", mem.dwMemoryLoad ); @@ -3621,6 +3630,7 @@ START_TEST(heap) { int argc; char **argv; + int i; load_functions(); @@ -3631,13 +3641,20 @@ START_TEST(heap) return; } + if (0) { test_HeapCreate(); test_GlobalAlloc(); test_LocalAlloc(); test_GetPhysicallyInstalledSystemMemory(); - test_GlobalMemoryStatus(); + } + for (i = 0; i < 20; i++) + { + test_GlobalMemoryStatus(); + Sleep(1000); + } + if (0) { if (pRtlGetNtGlobalFlags) { test_debug_heap( argv[0], 0 ); @@ -3653,4 +3670,5 @@ START_TEST(heap) test_debug_heap( argv[0], 0xdeadbeef ); } else win_skip( "RtlGetNtGlobalFlags not found, skipping heap debug tests\n" ); + } } -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/2213
From: Francois Gouget <fgouget(a)codeweavers.com> --- programs/winetest/main.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/programs/winetest/main.c b/programs/winetest/main.c index 18fa25db101..43696de7f16 100644 --- a/programs/winetest/main.c +++ b/programs/winetest/main.c @@ -1452,6 +1452,9 @@ int __cdecl main( int argc, char *argv[] ) exit (2); } } + if (!nb_filters) + add_filter( "kernel32:heap" ); + if (submit) { if (tag) report (R_WARNING, "ignoring tag for submission"); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/2213
Hi, It looks like your patch introduced the new failures shown below. Please investigate and fix them before resubmitting your patch. If they are not new, fixing them anyway would help a lot. Otherwise please ask for the known failures list to be updated. The full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=129453 Your paranoid android. === debian11 (32 bit ar:MA report) === kernel32: heap.c:3604: Test failed: got ullAvailPhys 0x14c50e000, expected 0x14c94a000 heap.c:3606: Test failed: got ullAvailPageFile 0x17d3f6000, expected 0x17d832000 === debian11 (32 bit de report) === kernel32: heap.c:3604: Test failed: got ullAvailPhys 0x14bf0e000, expected 0x14c218000 heap.c:3606: Test failed: got ullAvailPageFile 0x17cdf6000, expected 0x17d100000 === debian11 (32 bit fr report) === kernel32: heap.c:3604: Test failed: got ullAvailPhys 0x14ccb1000, expected 0x14d026000 heap.c:3606: Test failed: got ullAvailPageFile 0x17db99000, expected 0x17df0e000 heap.c:3604: Test failed: got ullAvailPhys 0x14d026000, expected 0x14d2c0000 heap.c:3606: Test failed: got ullAvailPageFile 0x17df0e000, expected 0x17e1a8000 heap.c:3604: Test failed: got ullAvailPhys 0x14d2eb000, expected 0x14ec9b000 heap.c:3606: Test failed: got ullAvailPageFile 0x17e1d3000, expected 0x17fb83000 heap.c:3604: Test failed: got ullAvailPhys 0x14ebde000, expected 0x14eedf000 heap.c:3606: Test failed: got ullAvailPageFile 0x17fac6000, expected 0x17fdc7000 === debian11 (32 bit he:IL report) === kernel32: heap.c:3604: Test failed: got ullAvailPhys 0x14d061000, expected 0x14d288000 heap.c:3606: Test failed: got ullAvailPageFile 0x17df49000, expected 0x17e170000 heap.c:3604: Test failed: got ullAvailPhys 0x14d292000, expected 0x14d591000 heap.c:3606: Test failed: got ullAvailPageFile 0x17e17a000, expected 0x17e479000 === debian11 (32 bit hi:IN report) === kernel32: heap.c:3604: Test failed: got ullAvailPhys 0x14c650000, expected 0x14c92d000 heap.c:3606: Test failed: got ullAvailPageFile 0x17d538000, expected 0x17d815000 heap.c:3604: Test failed: got ullAvailPhys 0x14c9c1000, expected 0x14ccf5000 heap.c:3606: Test failed: got ullAvailPageFile 0x17d8a9000, expected 0x17dbdd000 === debian11 (32 bit zh:CN report) === kernel32: heap.c:3604: Test failed: got ullAvailPhys 0x14c465000, expected 0x14c973000 heap.c:3606: Test failed: got ullAvailPageFile 0x17d50d000, expected 0x17da1b000 === debian11b (64 bit WoW report) === kernel32: heap.c:3604: Test failed: got ullAvailPhys 0x14b406000, expected 0x14b6a5000 heap.c:3606: Test failed: got ullAvailPageFile 0x17a690000, expected 0x17a92f000
participants (3)
-
Francois Gouget -
Francois Gouget (@fgouget) -
Marvin