[Pharo-project] 12186 image quit problem

Schwab,Wilhelm K bschwab at anest.ufl.edu
Sun Oct 10 10:40:21 EDT 2010


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.


From: pharo-project-bounces at lists.gforge.inria.fr [pharo-project-bounces at lists.gforge.inria.fr] On Behalf Of Igor Stasenko [siguctua at gmail.com]
Sent: Sunday, October 10, 2010 7:56 AM
To: Pharo-project at lists.gforge.inria.fr
Subject: Re: [Pharo-project] 12186 image quit problem

OKay, now i see what the problem:

<weak registry protected>
   <finalize items>
            <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:


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
Pharo-project at lists.gforge.inria.fr

More information about the Pharo-dev mailing list