Seaside and Exupery bug.

Previous Topic
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view

Seaside and Exupery bug.

Bryce Kampjes

Exupery and Seaside will not work together at the moment.

The problem will occur if Exupery compiles a method that's then saved
in a continuation, then Exupery's code cache is cleared, then the
continuation is restored.

Exupery's compiled contexts must be converted back into interpreted
contexts before the code cache is cleared. The compiled contexts
contain pointers into the code cache. Clearing the code cache without
converting the contexts will lead to dangling pointers that should
be to machine code. When the context is next entered it'll jump
to machine code that's no longer there. Crash.

The problem is Continuation>>initializeFromContext: uses instVarAt:
and tempAt: to access the context's state. If Continuation called a
serialisation method on the context which Exupery could implement
sensibly then there wouldn't be a problem.

I don't think compiled contexts should be stored in Seaside style
continuations. The problem is the context and it's instance variables
are stored separately and Exupery may need to convert the context to
an interpreted context if it needs to clear out the compiled code.

This problem is definitely easily fixable.

Exupery mailing list
[hidden email]