Index: ntoskrnl/mm/ARM3/expool.c =================================================================== --- ntoskrnl/mm/ARM3/expool.c (revision 56937) +++ ntoskrnl/mm/ARM3/expool.c (working copy) @@ -1583,6 +1583,7 @@ // i = (USHORT)((NumberOfBytes + sizeof(POOL_HEADER) + (POOL_BLOCK_SIZE - 1)) / POOL_BLOCK_SIZE); + ASSERT(i < POOL_LISTS_PER_PAGE); // // Handle lookaside list optimization for both paged and nonpaged pool @@ -1664,7 +1665,8 @@ // Try again! // ExUnlockPool(PoolDesc, OldIrql); - ListHead++; + DPRINT1("ExAllocatePoolWithTag race condition, i=%u, now %lu\n", + i, (ULONG)(ListHead - &PoolDesc->ListHeads[i])); continue; } @@ -1682,7 +1684,7 @@ ASSERT(Entry->PoolType == 0); // - // Check if this block is larger that what we need. The block could + // Check if this block is larger than what we need. The block could // not possibly be smaller, due to the reason explained above (and // we would've asserted on a checked build if this was the case). //