Ha. Looks like that #rehash does better fit in Object >> #readDataFrom:size:. See Kernel-mt.1526 and System-mt.1424. SqueakMap Catalog should update again fine in Trunk again. :-)

Best,
Marcel

Am 27.09.2023 11:15:25 schrieb Marcel Taeumel <marcel.taeumel@hpi.de>:

...this is probably due to cycles in the object graph:


So, we probably should not call #rehash on objects that are incomplete there due to cycle detection. Hmm...

Best,
Marcel

Am 27.09.2023 10:55:05 schrieb Marcel Taeumel <marcel.taeumel@hpi.de>:

Hmm... we added extra #rehash sends in 2022 to SmartRefStream >> #next. That's why the behavior changed from 5.3/6.0 to 6.1alpha. Hmm...

The dictionary in question is the "objects" instVar for the central instance of SMSqueakMap. it  interesting thing is that it passes twice through SmartRefStream >> #next. The first time with an invalid array and the second time complete and re-hash-able. Hmm...

Am 27.09.2023 03:08:22 schrieb Tim Rowledge <tim@rowledge.org>:

Whilst updating the SM entries for MQTT etc I went to update the SM tool and it fails when reading the update map. The issue appears to be that deep in the process a Dictionary exists that has a tally of 4162 but an array of nil. Which doesn't seem quite proper somehow.

The starting point is SMLoaderPlus>loadUpdates but a long way later we get to SmartRefStream>>#readInstanceSize:clsname:refPosn: with a refPosn of 1270478. A couple of methods later we try to rehash the Dictionary

This can never end well.

There's no way I have time to do anything much with this, so volunteers needed...


tim
--
tim Rowledge; tim@rowledge.org; http://www.rowledge.org/tim
Littergators resolve disputes about rubbish