[Oberon] Problem with NIL Check (NIL Page Access)

Fernando Passold fpassold at das.ufsc.br
Wed Mar 19 20:22:43 CET 2003


First, thanks Jonh Drake,

----- Original Message ----- 
From: "John Drake" <jmdrake_98 at yahoo.com>
To: <oberon at inf.ethz.ch>
Sent: Wednesday, March 19, 2003 1:45 PM
Subject: Re: [Oberon] Problem with NIL Check (NIL Page Access)
> --- Fernando Passold <fpassold at das.ufsc.br> wrote:
> > Oberon System 3 for WindowsTM
> >  Win32 2.3 (25.2.1999) on Windows NT 5.0
> > The big problem is that frequently I receive this
> > mesage:
> > [BEGIN | EXCEPTION]
> > - Trap kind: NIL Check (NIL Page Access)
> > - Task Entry: TelnetServer.SessionHandler.Run
> > - Task Id: 11
> > - Task Status: Halted
> > - Trapped Procedure Frame: Modules.CheckScope
> > - Current Instruction Pointer: 0003B660H
> > - Relative PC: 8528
> > - Stack Dump Follows:

> Well the first thing that jumps out at me
> is that the trap is a "NIL check" and that
> you have two NIL variables in the dump.
> (elem and tadr).  I would check the source
> code for Modules.CheckScope to see if
> these variables are being properly 
> initialized.

> The next thing I noticed was the XO> in the
> command.  Are you running the XOberon cross
> compiler?  If so is the module that is dying
> running on the host computer or the robot?
> If it's running on the host then you should
> be able to select the program counter 
> (the 8528 from PC: 8528), mark the source
> code and click the command Builder.Compile /f *.
> This will show you exactly in the source
> code where the program crashed.  I'm not
> sure how to do this if it's running on
> the robot though.  (I haven't used XOberon).

 Yes, sometimes I forgot to properly initialize
objects using the command NEW, but at this time the only
different thing I was trying to do is initialize a
global variable of one of the modules using to control
the robot. Somethink like "initialized:= FALSE" and
the system appears to hang up only because this... or
at least in this module that seems to hang up the system,
I only use global variables... My intanation was make
a rapid and simple code without the definition and
properly initialization of an object.

> The next thing I noticed was the XO> in the
> command.  Are you running the XOberon cross
> compiler?  If so is the module that is dying
> running on the host computer or the robot?

 Yes, I use an PC to generate a code for
an Power PC that must be downloaded to this CPU
of robot.

 Well, and I allready have tryed to discover
were is the erros using the option "/f " of the
compiler but the problem is that the system
craches exibiting a long lits of 
"- Trapped Procedure Frame: Modules.CheckScope",
and a lot of them pointing to some lines with
sure, no problem because before the inclusion of
this module these same lines have not exibited
errors.... The problem will be to discover which
of these "checkscope" mesages really applie to
the real error....

 And, at least, a more and less "stupid"
question, but, even so: "Must I use the NEW
command over every objects (alocation) I use in
my program? Even so when this objetcs make part
of gloval variables instead of point to ARRAYs
case of dynamic allocation memory - and of course,
this justifies the necessity of the NEW command)".

 Well, thanks by the response. Maybe
using ASSERT's I will discover what line of
what module (most properly the last edited) that
is causing this crash.

Fernando




More information about the Oberon mailing list