Win2K SP1: ACPI!InitHeap 175 times!



Yes, you read that right, in Win2K SP1, the startup process calls
ACPI!InitHeap 175 times on the same address. How I discovered this was that
I wanted to BA on a specific address, as I am trying to find out why
something that appears to be an out of bounds error is happening. Anyway, I
used WinDBG’s initial BP, then set BA r4 0x87654321, then hit F5. Got a BP
hit right away. ACPI!InitHeap. and it was really zeroing the memory, as
EIP pointed to:

rep stosd

with 0 in EAX. OK, that makes sense, since the initial breakpoint happens
pretty early. So I hit F5 again, and it broke immediately, and InitHeap is
the offender again. So I hit F5 again, and again, and again, and after
about 10 of them, I said “Enough”, and disabled the breakpoint to allow it
to finish booting in this century. Then I rebooted, and this time did a BA
r4 0x87654321 “.lastevent; g”, so it would output that it had hit the BP,
then continue. I got 175 of the following:

Last event: Hit breakpoint 0

Haven’t you at Microsoft heard of:

static bool isInit = false;
if(!isInit)
{
// Init the heap
isInit = true;
}

???

No wonder Windows 2000 takes so long to boot.

We now return you to your regularly scheduled programming.

Phil

* Philip D. Barila | (503) 264-8386
* Intel Corp. | M/S JF2-53 Office JF2-2-G6
* Storage Architecture and Performance
* Internet Systems Lab


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com