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]}

_______________________________________________
V3dot10 mailing list
[email protected]
http://lists.squeakfoundation.org/mailman/listinfo/v3dot10

Reply via email to