Hi all,
booting bootcd leads to a stackfault of VMWare, build server experiences similar problems.
we figured out the problem appeared with revision 37825: If you apply the following change trunk is working again:
Index: ntoskrnl/ke/i386/kiinit.c =================================================================== --- ntoskrnl/ke/i386/kiinit.c (Revision 37839) +++ ntoskrnl/ke/i386/kiinit.c (Arbeitskopie) @@ -611,7 +611,7 @@ IN PKIPCR *Pcr, IN PKTSS *Tss) { - KDESCRIPTOR GdtDescriptor = { 0, 0, 0 }, IdtDescriptor = { 0, 0, 0 }; + KDESCRIPTOR GdtDescriptor = { 0 }, IdtDescriptor = { 0 }; KGDTENTRY TssSelector, PcrSelector; USHORT Tr = 0, Fs;
Trunk is locked with write access available to Dmitry Gorbachev to fix the issue, and to anyone by request who has the fix.
My personal remarks:
- I can't see any reason, why the original change break trunk. - I figured out, it doesn't depend on number spezifiers e.g. "0UL" or something like this - In general I think it's not a good idea to fill more then one field of a struct during one assembler statement (in this case sgdt/sldt), because we have no information about alignment, and so it may lead to unexpected results.
Regards
Matthias