[squeak-dev] Re: [Pharo-project] Process-specific state broken
siguctua at gmail.com
Tue Nov 9 03:42:08 UTC 2010
On 9 November 2010 03:31, Levente Uzonyi <leves at elte.hu> wrote:
> On Mon, 8 Nov 2010, Igor Stasenko wrote:
>> i just found that Squeak images Process class contains unused ivars:
>> island env
> IIRC those were added by Matthew Fulmer to support ProcessSpecific _and_
> Cobalt. The idea is that the two can be used together this way, because the
> definition of Process doesn't have to be changed.
>> in Pharo image, env ivar is used for holding a process-specific state,
>> which is convenient, so one could use:
>> Processor activeProcess environmentAt: put:...
>> but in Squeak image there is even no such methods.
> So they integrated the full ProcessSpecific package. Is it a problem that
> you have to load it into Squeak?
So, its a separate package, except that ivars already there..
Strange choice. Maybe it worth mentioning then in Process comment that
these vars are there for purpose?
Otherwise someone may attempt to remove them :)
>> There are also some caveats with such thing:
>> during process termination, Processor activeProcess could point to
>> different process,
>> and so, accessing to process environment may lead to error(s).
>> To avoid issues like these, the process termination action (stack
>> unwinding) should be always performed only for active process.
>> One of a trick i think, is to replace the suspendedContext with own
>> context, and then activate given process in order to unwind its stack
>> Another way is to remember environment somewhere else during process
>> termination, and use different method to access it i.e. instead of:
>> Processor activeProcess environmentAt:
>> self processEnvironmentAt:
>> where #processEnvironmentAt: is implemented in Object class, and can
>> handle termination gracefully.
>> But i think replacing suspendedContext is more generic.
>> What you think?
>> Best regards,
>> Igor Stasenko AKA sig.
Igor Stasenko AKA sig.
More information about the Squeak-dev