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