[V3dot10] Re: [Bug] 0006839: #comeFullyUpOnReload: not sent to MorphExtension's otherProperties (anIdentityDictionary)

Klaus D. Witzel klaus.witzel at cobss.com
Mon Jan 7 12:04:27 UTC 2008


You're right Edgar, forgot to mention what was loaded into what and to  
post .image version, apologies.

In a fresh Squeak3.9-final-7067.image with fresh ConnectorsFor3.8-187.sar  
loaded, no problem so far with MorphExtension otherProperties'  
IdentityDictionaries,

Test: load .pr, then NCUMLDiagramMorph allSubInstances collect: [:each |  
each otherProperties printString]

In your FunSqueak3.10alpha.4.image with connectors pre-loaded by you, also  
no problem.

Test: same, result: no problem.

In sq3.10-7158dev07.10.2.image, see SqueakDebug.log at the bottom (same  
cause as Mantis 6839 report).

If it could be found out what change went into effect between 7158 and  
your 'FunSqueak3.10alpha of 19 November 2007 [latest update: #1]' then I  
could add that to the bug report.

BTW, you posted file name FunSqueak3.10alpha.4.zip but that .image writes  
the string from my previous sentence, see also this from a #halt debug log,

'Halt
7 January 2008 12:56:54 pm

VM: Win32 - [4062]a SmalltalkImage
Image: FunSqueak3.10alpha [latest update: #1]'

Want me to load ConnectorsFor3.8-187.sar into another .image (which) and  
give it a try?

/Klaus

On Mon, 07 Jan 2008 12:50:58 +0100, Edgar J. De Cleene wrote:

>
>
>
> El 1/7/08 7:28 AM, "Klaus D. Witzel" escribió:
>
>> When saving/loading playfields (Projects) it looks like
>> IdentityDictionaries which are hold by MorphExtension's otherProperties
>> are not rehashed on load,
>>
>> - http://bugs.squeak.org/view.php?id=6839
>>
>> which seems to describe a similiar situation as
>>
>> - http://bugs.squeak.org/view.php?id=6721
>>
>> /Klaus
>>
>> P.S. workaround:
>>
>> IdentityDictionary allInstances do: [:each | each rehash]
>> "don't #allInstancesDo: "
>
> I read carefully.
> In http://bugs.squeak.org/view.php?id=6721 , Jerome conclusion is problem
> origin was changing all == (Dan idea , bad resolved by me) , but we  
> revert,
> so ?
> Also Jerome and I was exchanging mails about .pr and SmartRefStream odds.
> Bert send mail about this.
>
> Your .pr how was produced ?
> You said you have Connectors, which version ?
> I afraid if I don't assemble exact the same image as you, can't see the
> problem.
>
>
> Edgar
----------------------------
Error: key not found
7 January 2008 12:45:44 pm

VM: Win32 - a SmalltalkImage
Image: Squeak3.10beta [latest update: #7158]

SecurityManager state:
Restricted: false
FileAccess: true
SocketAccess: true
Working Dir ...\SqueakDev
Trusted Dir ...\SqueakDev\kWitzel
Untrusted Dir ...\My Squeak\kWitzel

IdentityDictionary(Object)>>error:
	Receiver: <<error during printing>>
	Arguments and temporary variables:
		aString: 	'key not found'
	Receiver's instance variables:
		tally: 	5
		array: 	{#layoutProperties->a TableLayoutProperties . nil .  
#connectedConstraint...etc...

IdentityDictionary(Dictionary)>>errorKeyNotFound
	Receiver: <<error during printing>>
	Arguments and temporary variables:

	Receiver's instance variables:
		tally: 	5
		array: 	{#layoutProperties->a TableLayoutProperties . nil .  
#connectedConstraint...etc...

[] in IdentityDictionary(Dictionary)>>at: {[self errorKeyNotFound]}
	Arguments and temporary variables:
		key: 	#attachmentPointSpecs

IdentityDictionary(Dictionary)>>at:ifAbsent:
	Receiver: <<error during printing>>
	Arguments and temporary variables:
		key: 	#attachmentPointSpecs
		aBlock: 	[] in IdentityDictionary(Dictionary)>>at: {[self  
errorKeyNotFound]}
		assoc: 	nil
	Receiver's instance variables:
		tally: 	5
		array: 	{#layoutProperties->a TableLayoutProperties . nil .  
#connectedConstraint...etc...


--- The full stack ---
IdentityDictionary(Object)>>error:
IdentityDictionary(Dictionary)>>errorKeyNotFound
[] in IdentityDictionary(Dictionary)>>at: {[self errorKeyNotFound]}
IdentityDictionary(Dictionary)>>at:ifAbsent:
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IdentityDictionary(Dictionary)>>at:
[] in IdentityDictionary(Dictionary)>>printElementsOn: {[:key | aStream  
print: key;    nextPutAll: '->';      print: (self at: key);...]}
SortedCollection(OrderedCollection)>>do:
IdentityDictionary(Dictionary)>>printElementsOn:
IdentityDictionary(Collection)>>printOn:
[] in IdentityDictionary(Object)>>printStringLimitedTo: {[:s | self  
printOn: s]}
String class(SequenceableCollection class)>>streamContents:limitedTo:
IdentityDictionary(Object)>>printStringLimitedTo:
IdentityDictionary(Object)>>printString
[] in UndefinedObject>>DoIt {[:each | each otherProperties printString]}
OrderedCollection>>collect:
UndefinedObject>>DoIt
Compiler>>evaluate:in:to:notifying:ifFail:logged:
[] in TextMorphEditor(ParagraphEditor)>>evaluateSelection {[rcvr class  
evaluatorClass new   evaluate: self selectionAsStream   in: ctxt...]}
BlockContext>>on:do:
TextMorphEditor(ParagraphEditor)>>evaluateSelection
TextMorphEditor(ParagraphEditor)>>inspectIt
TextMorphEditor>>inspectIt:
TextMorphEditor(ParagraphEditor)>>dispatchOnCharacter:with:
TextMorphEditor>>dispatchOnCharacter:with:
TextMorphEditor(ParagraphEditor)>>readKeyboard
TextMorphEditor>>readKeyboard
[] in TextMorphForEditView(TextMorph)>>keyStroke: {[editor readKeyboard]}
TextMorphForEditView(TextMorph)>>handleInteraction:fromEvent:
TextMorphForEditView>>handleInteraction:fromEvent:
TextMorphForEditView(TextMorph)>>keyStroke:
TextMorphForEditView>>keyStroke:
TextMorphForEditView(TextMorph)>>handleKeystroke:
KeyboardEvent>>sentTo:
TextMorphForEditView(Morph)>>handleEvent:
TextMorphForEditView(Morph)>>handleFocusEvent:
[] in HandMorph>>sendFocusEvent:to:clear: {[ActiveHand := self.   
ActiveEvent := anEvent.  result := focusHolder     han...]}
[] in PasteUpMorph>>becomeActiveDuring: {[aBlock value]}
BlockContext>>on:do:
PasteUpMorph>>becomeActiveDuring:
HandMorph>>sendFocusEvent:to:clear:
HandMorph>>sendEvent:focus:clear:
HandMorph>>sendKeyboardEvent:
HandMorph>>handleEvent:
HandMorph>>processEvents
[] in WorldState>>doOneCycleNowFor: {[:h |  ActiveHand := h.  h  
processEvents.  capturingGesture := capturingGest...]}
Array(SequenceableCollection)>>do:
WorldState>>handsDo:
WorldState>>doOneCycleNowFor:
WorldState>>doOneCycleFor:
PasteUpMorph>>doOneCycle
[] in Project class>>spawnNewProcess {[[World doOneCycle.  Processor  
yield.  false] whileFalse.  nil]}
[] in BlockContext>>newProcess {[self value.  Processor terminateActive]}



More information about the V3dot10 mailing list