Alexandre Julliard : ntdll: More compatible exception information for protection faults.

Saulius Krasuckas saulius2 at ar.fi.lt
Fri Dec 23 14:16:16 CST 2005


* On Tue, 20 Dec 2005, Alexandre Julliard wrote:
> * Paul Vriens <Paul.Vriens at xs4all.nl> writes:
> > 
> > this latest addition to the tests throws an exception on win98. 
> > Screenshot attached.
> > Probably Alexandre's area, as he wrote the test.
> 
> Yes, but I don't have win98 here. Could you please try to find out which 
> of the various exception tests causes that?

I am sorry for ignoring this conversation and sending separate question 
about the same issue.

If that's of some interest, here is the patch that I got rid of BSoDs on 
WinME with:


--- dlls/ntdll/tests/exception.c	2005-12-17 11:38:41.000000000 +0000
+++ /mnt/vcd2/wine/dlls/ntdll/tests/exception.c	2005-12-23 09:45:56.000000000 +0000
@@ -51,16 +51,41 @@ static const struct exception
 } exceptions[] =
 {
     /* test some privileged instructions */
+#if 0 // following two elements makes test stall on WinME
     { { 0x6c, 0xc3 },  /* insb (%dx); ret */
       0, 1, STATUS_PRIVILEGED_INSTRUCTION, 0 },
     { { 0x6d, 0xc3 },  /* insl (%dx); ret */
       0, 1, STATUS_PRIVILEGED_INSTRUCTION, 0 },
+#endif
+#if 0 // following two elements gives MSVCRTD dialog box saying:
+    /*
+    Debug Error!
+
+    Program:
+    ...\WIN32_WINE_HEADERS\NTDLL_TEST.EXE
+    Modue:
+    File: i386\chkesp.c
+    Line: 42
+
+    The value of ESP was not properly saved across a function call.  This is usually a result of 
+    calling a function with one calling convention with a function pointer declared 
+    with a different calling convention.
+
+    (Press Retry to debug the application)
+
+    Abort	Retry	Ignore
+    */
     { { 0x6e, 0xc3 },  /* outsb (%dx); ret */
       0, 1, STATUS_PRIVILEGED_INSTRUCTION, 0 },
     { { 0x6f, 0xc3 },  /* outsl (%dx); ret */
       0, 1, STATUS_PRIVILEGED_INSTRUCTION, 0 },
+#endif
+#if 0 // BSoD: 
+      // Windows protection error.  You need to restart your computer.
+      // System halted.
     { { 0xe4, 0x11, 0xc3 },  /* inb $0x11,%al; ret */
       0, 2, STATUS_PRIVILEGED_INSTRUCTION, 0 },
+#endif
     { { 0xe5, 0x11, 0xc3 },  /* inl $0x11,%eax; ret */
       0, 2, STATUS_PRIVILEGED_INSTRUCTION, 0 },
     { { 0xe6, 0x11, 0xc3 },  /* outb %al,$0x11; ret */
@@ -109,8 +134,10 @@ static const struct exception
       0, 15, STATUS_PRIVILEGED_INSTRUCTION, 0 },
 
     /* test invalid interrupt */
+#if 0 // BSoD: exception 0D in VMM
     { { 0xcd, 0xff, 0xc3 },   /* int $0xff; ret */
       0, 2, STATUS_ACCESS_VIOLATION, 2, { 0, 0xffffffff } },
+#endif
 
     /* test moves to/from Crx */
     { { 0x0f, 0x20, 0xc0, 0xc3 },  /* movl %cr0,%eax; ret */



More information about the wine-devel mailing list