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

John Drake jmdrake_98 at yahoo.com
Wed Mar 19 17:45:51 CET 2003


--- Fernando Passold <fpassold at das.ufsc.br> wrote:
> Hello people,
> 
>  I am trying to use the:
> 
> Oberon System 3 for WindowsTM
>  Win32 2.3 (25.2.1999) on Windows NT 5.0
> 
> because this is the only one S.O. available to put
> to
> run a real SCARA robot... I think that today there
> is
> a new and better version but unfortunately I must to
> deal
> with this version.
> 
> 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:
> 
>   Modules.CheckScope           PC: 8528
>     dsc                      = 0
>     elem                     = NIL
>     fp                       = 541683299
>     i                        = 0
>     level                    = -1
>     link                     = 1869443169
>     tadr                     = NIL
>     tdadr                    = 8689208
>   Modules.CheckScope           PC: 8676
> ... and so on....
> 
>     And this occours after I command:
> "XO> Main.CreateRobot  ~" (the first one to use to
> initialize all the variables of the system to
> controll the
> robot)... And the system hangs up after this...


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).
If this isn't feasible try using ASSERTs.
Right before the variables elem and tadr
are used do something like ASSERT(elem # NIL, 99).

Regards,

John M. Drake


__________________________________________________
Do you Yahoo!?
Yahoo! Platinum - Watch CBS' NCAA March Madness, live on your desktop!
http://platinum.yahoo.com



More information about the Oberon mailing list