www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2000/04/20/18:17:32

From: Joseph Morris <doug-15 AT bigfoot DOT com>
Newsgroups: comp.os.msdos.djgpp
Subject: Re: dead beef
Date: Thu, 20 Apr 2000 20:00:38 +0100
Lines: 55
Message-ID: <38FF53D6.9F0D46EA@bigfoot.com>
References: <Pine DOT SUN DOT 3 DOT 91 DOT 1000419094705 DOT 10023L AT is> <38FE3710 DOT 57CEFA8C AT bigfoot DOT com> <200004200926 DOT FAA15727 AT indy DOT delorie DOT com>
NNTP-Posting-Host: jpmorris.force9.co.uk (212.56.119.112)
Mime-Version: 1.0
X-Trace: fu-berlin.de 956257221 8452532 212.56.119.112 (16 [28722])
X-Mailer: Mozilla 4.7 [en] (X11; I; Linux 2.2.14-15mdk i586)
X-Accept-Language: en
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp
Reply-To: djgpp AT delorie DOT com

Eli Zaretskii wrote:
> 
> > OB_Check was called by check_object, which is a bridge between the VM and
> > my functions in the 'real world'.
> >
> > check_object was called by callfunc, which is used by SEER to call
> > 'real world' functions outside of VM-space
> >
> > All of which which suggests that the crash is happening inside the SEER
> > library.
> 
> The crash is indeed in a function called by SEER, but the important
> question is: who is responsible for putting garbage on the object that
> triggers this print-out?

A common factor of the problem seems to be that it happens inside the VM,
I have not yet had in incident outside of the VM-space,
It seems that real-world functions which have an Object as their first
parameter sometimes get a garbled pointer when called from VM-space.

I recompiled SEER to use the portable method of calling real-world
functions instead of the Intel-specific method and it hasn't had this problem
since.

> 
> > eax=00000001 ebx=00000000 ecx=00000073 edx=beefdead esi=ffffffff edi=00252d7c
> > ebp=00251d08 esp=00250910 program=C:\IRE\IRE.EXE
> 
> You edited out the first two lines of the crash message.  What were
> they saying?

I don't know.  I run in 25 line mode and they went out the top of the screen.

> 
> > cs: sel=00a7  base=10000000  limit=010cffff
> > ds: sel=00af  base=10000000  limit=010cffff
> > es: sel=00af  base=10000000  limit=010cffff
> > fs: sel=00c7  invalid
> > gs: sel=00bf  base=00000000  limit=0010ffff
> > ss: sel=00af  base=10000000  limit=010cffff
> 
> Wow!  The FS selector is invalid!  Do you have any idea why?  Does
> SEER use the FS register?  If so, you want to check your code to make
> sure you don't use FS in a way that interferes with SEER's usage.

I don't change the FS register in any of my code.  SEER might but I
haven't checked.  Interestingly, if CTRL-BRK is pressed during startup,
FS is sometimes flagged as invalid then as well.

-- 
JP Morris - aka DOUG the Eagle (Dragon) -=UDIC=-  DOUG-15 AT bigfoot DOT com
Fun things to do with the Ultima games            (http://ithe.cjb.net)
Developing a U6/U7 clone                          (http://fly.to/ire)
d+++ e+ N+ T++ Om U1234!56!7'!S'!8!9!KA u++ uC+++ uF+++ uG---- uLB----
uA--- nC+ nR---- nH+++ nP++ nI nPT nS nT wM- wC- y a(YEAR - 1976)

- Raw text -


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