delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1999/10/19/15:02:45

Date: Tue, 19 Oct 1999 18:55:37 +0100 (MET)
From: Gisle Vanem <giva AT bryggen DOT bgnett DOT no>
To: djgpp AT delorie DOT com
Subject: Re: far call
Message-ID: <Pine.UW2.3.95.991019185402.20452B-100000@bryggen.bgnett.no>
MIME-Version: 1.0
Reply-To: djgpp AT delorie DOT com

Eli Zaretskii <eliz AT is DOT elta DOT co DOT il> said:
 
> > Exiting due to signal SIGSEGV
> > General Protection Fault at eip=00001dcc, error=01d4
>
> If a program crashes with a GPF, and the crash message includes an error
> code, then the error code is actually the value of a selector that your
> program tried to load into one of the segment registered, and the
> selector turned out to be invalid.
>
> So in this case, you are trying to use a selector 0x1d4, which is indeed
> invalid (it's not ring-3 selector).
 
OTOH, the error code doesn't include the ring-level.
But, thanks for the tip. I completely overlooked that error-code.
 
>> Maybe I need to modify the selector for 'execute' ? (don't think so)
>
> I think you do need that.  In which case you will have to define two
> selectors: one for data, another for code, with the same base address
> and limit, but different descriptors.  (DJGPP does exactly that for CS
> and DS, btw.)
 
Bingo, changing the access-reight (ORing with 8) did the trick.
A "fresh" descriptor seems to only have Read/Write access.
Everything works now, thanks alot!
 


Gisle V.

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019