Problem with Events and DeadObjects...

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Problem with Events and DeadObjects...

Christopher J. Demers
I ran into a strange occurrence, and I want to make sure I understand what
is going on so I can work around it.

I get the walkback bellow when accepting changes to one of my dialogs.  I
looked at the code for EventMessageSequence>>messagesDo:, to see how it
could be sending a message to a DeadObject.  It looks like it should be
checking that the receiver is not a DeadObject, but it still somehow tries
to evaluate the message even though it is a DeadObject.

I have been able to repeat this a few times within a period of a few minutes
in the same code.  I have not tried closing and reopening Dolphin yet, I
want to explore this issue a little further before I do that.

My thoughts:
Somehow between the check and the evaluation I guess something is being
garbage collected.  I am not sure why that would happen.  I wonder if there
should be some sort of mutex protecting the code more, or an extra
DeadObject check closer to the triggering of the event?

Does anyone have any ideas about this?

Others have posted similar walkbacks caused by the IDE:
http://groups.google.com/groups?q=DeadObject+group%3Acomp.lang.smalltalk.dol
phin&btnG=Google+Search&hl=en&lr=&ie=ISO-8859-1

==============
7:38:48 PM, 12/4/2002: Unhandled exception - a
MessageNotUnderstood('DeadObject does not understand #notifyChanged')

DeadObject(Object)>>doesNotUnderstand:
EventMessageSend>>forwardTo:withArguments:
EventMessageSend>>value
[] in EventMessageSequence(MessageSequenceAbstract)>>value
EventMessageSequence>>messagesDo:
EventMessageSequence(MessageSequenceAbstract)>>value
EventsCollection>>triggerEvent:
TransferPhaseSpec(Object)>>trigger:
TransferPhaseSpec>>triggerChanges
TransferPhaseSpec>>transferWeight:
TransferPhaseSpec>>transferPercent:
ValueAspectAdaptor>>setValue:
[] in ValueAspectAdaptor(ValueModel)>>value:
BlockClosure>>ifCurtailed:
BlockClosure>>ensure:
ValueAspectAdaptor(ValueModel)>>value:
TextEdit(ValueConvertingControlView)>>updateModel
TextEdit>>updateModel
TextEdit>>enKillFocus
TextEdit>>command:id:
==============

Chris