From: "Charles Sandmann" Newsgroups: comp.os.msdos.djgpp Subject: Re: Problem with DOS and DPMI Date: Mon, 1 Nov 1999 16:40:54 Organization: Aspen Technology, Inc. Lines: 27 Message-ID: <381dc296.sandmann@clio.rice.edu> References: NNTP-Posting-Host: dcloan.aco.aspentech.com X-NewsEditor: ED-1.5.8 To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com > On Sun, 31 Oct 1999, Damian Yerrick wrote: > > > > Page Fault cr2=10000000 at eip=e75; flags=6 > > > eax=00000030 ebx=00000000 ecx=0000000c edx=00000000 > > > esi=0001a44a edi=00000000 ebp=00000000 esp=00002672 > > > cs=18 ds=38 es=af fs=0 gs=0 ss=20 error=0002 > > > ================================================ > > > > Page Fault in Sandmann's CWSDPMI not in Micro$oft's DPMW32 > > > > This means you are accessing an address below 0x00001000. > > Not in this case. This message comes from CWSDPMI, not from the > application (the latter never prints cr2 and flags, and the segment > registers are printed differently). Section 12.2 of the FAQ describes > the application crash message when dereferencing NULL pointers; you > will see that the format is different. You are both right. The message is from CWSDPMI, and it is referencing a null pointer. the 0x10000000 address is the base of the DPMI space, so would be where the null pointer lives. What's different here is the fault is happening inside the DPMI provider, which means that it bailed (nested exceptions) or hardware interrupt handler. This means that either someone sent a bad argument to CWSDPMI, or data structures are badly trashed. You could look at the map of CWSDPMI.EXE to see which module IP=0x0e75 lives, or use debug to disassemble around it to see what's going on.