Core dump report

Lendvai Attila Attila.Lendvai at netvisor.hu
Wed Aug 4 06:08:59 PDT 2004


hi!

in prims.slate:

body at CompiledMethodTraits ensure: unwindBlock at CompiledMethodTraits
[
  interpreter
    apply: body pointer!(CompiledMethod pointer) cast
    to: Nil
    arity: 0
    withOptionals: Nil.
  interpreter lexicalContext unwindBlock: unwindBlock
] `pidginPrimitive. 


in vm.slate:

i@(Interpreter pointer) apply: method to: args arity: n withOptionals:
opts
[| method!(CompiledMethod pointer) args!(ObjectPointer pointer)
opts!(OopArray pointer) lexicalContext!(LexicalContext pointer) inputs |
   lexicalContext: (CurrentMemory newOopArray: LexicalContextProto
sized: method localVariables asSmallInt)!(LexicalContext pointer) cast.
   inputs: method inputVariables asSmallInt.
   args!(Word pointer) cast
     copyWords: inputs
     into: lexicalContext variables!(Word pointer) cast.
...

So the upper one calls the lower one, with to: Nil (probably instead of
ObjectHeap NilObject) and it causes the apply method to access
0x00000000 as the value of Nil is 0.

I don't know exactly what's happening there, so I leave it for Lee... :)
Could be that apply and friends should be prepared for Nil...

Make sure to look around in there (prims.slate), because there are quite
a few Nil's used all around. Could be other problems, too. (If it is a
problem at all, as opposed to me screwing up something)

Happy coding,

- 101




More information about the Slate mailing list