Recursive creation of suspended processes (resent)

Chris Muller asqueaker at gmail.com
Thu May 10 01:21:08 UTC 2007


Göran, if I remember correctly, the problem you had was a MagmaSession
cleanUp had been run (to dereference MagmaSessions from old
MethodContexts) so they could be garbage collected.  This method
becomeForwards the sessions to nil.  Then, later, some proxy's
referencing those sessions were "activated".

So what is the root problem here and what should be the solution?
Maybe get rid of the need for MagmaSession>>#cleanUp, so that
MagmaSessions get GC'd on their own in the first place?  A session
naturally GC'd would mean no possibility of any proxy's referencing
it.

Chasing pointers on some of my stray MagmaSessions show they all
reference from a chain originating in the "EventManager" and finally
directly linked from a MethodContext.  The cleanUp method simply nils
out the MethodContext's #receiver: and that does the trick.

So what is the EventManager and why does it hold on to these
MethodContexts?  If someone knows a solution I'd be happy to include
it in r40.

thanks..
  Chris

On 5/9/07, Göran Krampe <goran at krampe.se> wrote:
> Hi Keith!
>
> We have stumbled over this problem in Gjallar work from time to time - but
> only during development. I ended up inventing a doit to toast all those
> Processes - need to nil out the context IIRC - whenever it occurred. But
> it can be painful because with a couple of thousand Processes the system
> gets a tad painful to even type in.
>
> It would be nice if we could get rid of this - it is annoying. :)
>
> regards, Göran
>
> _______________________________________________
> Magma mailing list
> Magma at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/mailman/listinfo/magma
>


More information about the Magma mailing list