I integrate
Issue 3086: MCMethodDefinition>>shutdown hack to avoid lock down.
http://code.google.com/p/pharo/issues/detail?id=3086
Igor can you have a look and let me know:
1- if we should rollback Issue 3086: MCMethodDefinition>>shutdown
hack to avoid lock down.
2- if we should integrate
Issue 3048: MC method cache fix
http://code.google.com/p/pharo/issues/detail?id=3048
I will integrate
http://code.google.com/p/pharo/issues/detail?id=3091
Stef
> Ok, I opened an issue: http://code.google.com/p/pharo/issues/detail?id=3091
>
> The patch works for me, Thank you Igor.
>
> Cheers,
> -- Pavel
>
> On Sun, Oct 10, 2010 at 6:46 PM, Igor Stasenko <[email protected]> wrote:
> On 10 October 2010 17:40, Schwab,Wilhelm K <[email protected]> wrote:
> > Sig,
> >
> > Have you thought about using a Mutex? Maybe I'm missing something in life,
> > but long ago I decided the #forMutualExclusion is *beyond* private.
> > Semaphores are wonderful for #wait/#signal. But for #critical:, I use
> > Mutex which won't deadlock a thread with itself.
> >
>
> yes, i thought about it. It wont help in this situation,
> because if you start modifying dictionary inside a loop, which
> scanning its elements (like #do:)
> you'll have very unpleasant results.
>
> All HostSystemMenusProxy doing during #finalize is removing itself
> from weakregistry (which is complete nonsense, since weak registry
> cleaning itself from dead stuff anyways).
> So,
> self protected: [
> valueDictionary expiredValuesDo: [:finItem |
> finItem finalizeValues ].
> ].
>
> actually triggers a bug/mistake in HostSystemMenusProxy , which leads
> to deadlock.
> :)
>
> > Bill
> >
> >
> > ________________________________________
> > From: [email protected]
> > [[email protected]] On Behalf Of Igor Stasenko
> > [[email protected]]
> > Sent: Sunday, October 10, 2010 7:56 AM
> > To: [email protected]
> > Subject: Re: [Pharo-project] 12186 image quit problem
> >
> > OKay, now i see what the problem:
> >
> > <weak registry protected>
> > <finalize items>
> > <HostSystemMenusProxy>>finalize>
> > ....
> > <HostSystemMenusProxy class>>unregister>
> > <weak registry protected>
> >
> >
> > In my WeakRegistry, a #finalize message sent while registry semaphore
> > locked,
> > so, in case if object in #finalize trying to manipulate with registry
> > then it going to deadlock.
> >
> > Then following piece:
> >
> > WeakRegistry>>finalizeValues
> >
> > self protected: [
> > valueDictionary expiredValuesDo: [:finItem |
> > finItem finalizeValues ].
> > ].
> >
> > should be rewritten as:
> >
> > | expired |
> > expired := OrderedCollection new.
> > self protected: [
> > valueDictionary expiredValuesDo: [:finItem | expired add: finItem ]
> > ].
> > expired do: #finalizeValues.
> >
> >
> > But either way, HostSystemMenusProxy should not attempt remove itself
> > from registry during #finalize (and causing a deadlock),
> > since its pointless.
> >
> >
> > --
> > Best regards,
> > Igor Stasenko AKA sig.
> >
> > _______________________________________________
> > Pharo-project mailing list
> > [email protected]
> > http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
> >
> > _______________________________________________
> > Pharo-project mailing list
> > [email protected]
> > http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
> >
>
>
>
> --
> Best regards,
> Igor Stasenko AKA sig.
>
> _______________________________________________
> Pharo-project mailing list
> [email protected]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
> _______________________________________________
> Pharo-project mailing list
> [email protected]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
_______________________________________________
Pharo-project mailing list
[email protected]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project