diff --git a/dlls/kernel32/tests/heap.c b/dlls/kernel32/tests/heap.c
index 90c311b5683..952e43c7690 100644
--- a/dlls/kernel32/tests/heap.c
+++ b/dlls/kernel32/tests/heap.c
@@ -670,12 +670,32 @@ static void test_HeapCreate(void)
     ptr1 = HeapAlloc( heap, HEAP_ZERO_MEMORY, 5 * alloc_size );
     ok( !!ptr1, "HeapAlloc failed, error %lu\n", GetLastError() );
 
+    for (i = 0; i < 8; ++i)
+    {
+        unsigned int j;
+
+        for (j = 0; j < 17; ++j)
+        {
+            ptr1 = HeapAlloc( heap, HEAP_ZERO_MEMORY, 0xe000 );
+            ok( !!ptr1, "HeapAlloc failed, error %lu\n", GetLastError() );
+        }
+
+        ptr1 = HeapAlloc( heap, HEAP_ZERO_MEMORY, 0xdf00 );
+        ok( !!ptr1, "HeapAlloc failed, error %lu\n", GetLastError() );
+
+        winetest_mute_threshold = 0x7fffffff;
+    }
+
     count = 0;
     memset( &rtl_entries, 0, sizeof(rtl_entries) );
     memset( &rtl_entry, 0xcd, sizeof(rtl_entry) );
     rtl_entry.lpData = NULL;
     SetLastError( 0xdeadbeef );
-    while (!RtlWalkHeap( heap, &rtl_entry )) rtl_entries[count++] = rtl_entry;
+    while (!RtlWalkHeap( heap, &rtl_entry ))
+    {
+        trace("[%u] %p\n", count, rtl_entry.lpData);
+        rtl_entries[count++] = rtl_entry;
+    }
     ok( count == 5, "got count %lu\n", count );
 
     memmove( entries + 16, entries, 4 * sizeof(entry) );
@@ -696,15 +716,26 @@ static void test_HeapCreate(void)
         ok( rtl_entries[i].cbOverhead == entries[i].cbOverhead, "got cbOverhead %#x\n", rtl_entries[i].cbOverhead );
         ok( rtl_entries[i].iRegionIndex == entries[i].iRegionIndex, "got iRegionIndex %#x\n", rtl_entries[i].iRegionIndex );
         if (!entries[i].wFlags)
+        {
+            trace( "flagless range, ptr %p, size %#Ix\n", rtl_entries[i].lpData, rtl_entries[i].cbData );
             ok( rtl_entries[i].wFlags == 0, "got wFlags %#x\n", rtl_entries[i].wFlags );
+        }
         else if (entries[i].wFlags & PROCESS_HEAP_ENTRY_BUSY)
-            ok( rtl_entries[i].wFlags == (RTL_HEAP_ENTRY_COMMITTED|RTL_HEAP_ENTRY_BLOCK|RTL_HEAP_ENTRY_BUSY) || broken(rtl_entries[i].wFlags == 0x411) /* win7 */,
+        {
+            trace( "committed range, ptr %p, size %#Ix\n", rtl_entries[i].lpData, rtl_entries[i].cbData );
+            if (0) ok( rtl_entries[i].wFlags == (RTL_HEAP_ENTRY_COMMITTED|RTL_HEAP_ENTRY_BLOCK|RTL_HEAP_ENTRY_BUSY) || broken(rtl_entries[i].wFlags == 0x411) /* win7 */,
                 "got wFlags %#x\n", rtl_entries[i].wFlags );
+        }
         else if (entries[i].wFlags & PROCESS_HEAP_UNCOMMITTED_RANGE)
+        {
+            trace( "uncommitted range, ptr %p, size %#Ix, overhead %#Ix\n",
+                    rtl_entries[i].lpData, rtl_entries[i].cbData, rtl_entries[i].cbOverhead );
             ok( rtl_entries[i].wFlags == RTL_HEAP_ENTRY_UNCOMMITTED || broken(rtl_entries[i].wFlags == 0x100) /* win7 */,
                 "got wFlags %#x\n", rtl_entries[i].wFlags );
+        }
         else if (entries[i].wFlags & PROCESS_HEAP_REGION)
         {
+            trace( "region, ptr %p, first %p, last %p\n", rtl_entries[i].lpData, rtl_entries[i].Region.lpFirstBlock, rtl_entries[i].Region.lpLastBlock );
             ok( rtl_entries[i].wFlags == RTL_HEAP_ENTRY_REGION, "got wFlags %#x\n", rtl_entries[i].wFlags );
             ok( rtl_entries[i].Region.dwCommittedSize == entries[i].Region.dwCommittedSize,
                 "got Region.dwCommittedSize %#lx\n", rtl_entries[i].Region.dwCommittedSize );
