Mail Archives: djgpp/2000/10/13/07:58:30
> From: Corelli Marco <mcorelli AT gtwparc DOT padova DOT ccr DOT it>
> Newsgroups: comp.os.msdos.djgpp
> Date: Fri, 13 Oct 2000 10:03:55 +0200
>
> this messagge appear:
There are several strange things about this crash message (see below).
Is it possible that you've typed the message by hand, instead of
saving it to a file, or copy/paste it from the DOS box? If so, please
post here the *exact* message text, because any typos can totally
change its meaning.
> -----------------------------
> Exiting due to signal SIGSEV
> Page fault at eip=00003cda, error=0004
> eax=000000c7 ebx=00010000 exc=00000000 edx=00000000 esi=00000054
^^^
This should have been ECX, not EXC. Also, the EDI regiser is
missing.
> edp=00091ba8 esp=00091ba8 program=xxxx
^^^
This should have been EBP, not EDP. In addition, usually EBP and ESP
have different values, but perhaps that, too, is a typo.
> cs : sel=00a7 base=10000000 limit=0009ffff
> ds : sel=00a7 base=10000000 limit=0009ffff
This shows that DS and CS are loaded with the same selector! This
simply cannot happen, because protected mode doesn't allow to use a
data segment for code and vice versa. Another typo?
> es : sel=00c7 base=10000000 limit=0009ffff
The value of ES should usually be the same as DS and SS. Are you sure
you really saw 00c7? (That's not even a valid selector for a data
segment.)
> fs : sel=00a7 base=ffff0000 limit=0000ffff
This is the strangest thing of all: FS is loaded with the same value
as DS/CS. Since you told that the program crashes inside the call to
_farpeekb, FS should be loaded with the selector created by
selector_physical_address, which should normally be different from DS.
Are you sure the above line is accurate?
If the FS line is accurate, it means that somehow you've changed the
base address and the limit of your DS selector, which certainly would
cause the program to crash. However, the values printed for DS
(above) are different, so it's probably another typo.
> gs : sel=00bf base=00000000 limit=0010ffff
> ss : sel=00af base=10000000 limit=0009ffff
There's the stack limits data missing here. Are you using DJGPP
v2.01? If so, please upgrade.
> call frame traceback EIPc:
> 0x00003cda
> 0x00001c4d
> 0x00001906
> 0x00003512
I asked to run the SYMIFY utility on this traceback, so that will show
where exactly in your code does the program crash. Without the output
of SYMIFY, this traceback is useless. (If you don't know what SYMIFY
is and how to use it, please see section 9.3 of the DJGPP FAQ list.)
To summarize: please post an exact text of a crash message, without
any typos, after running SYMIFY on it, and identify the source line
that corresponds to the topmost EIP address (0x00003cda in the above
message). Without that, it's impossible to help you solve your
problem.
- Raw text -