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
--
Matthias Kupfer phone +49 (0) 371 236 46 52
Wilhelm-Firl-Straße 21 mobile +49 (0) 160 859 43 54
09122 Chemnitz