[etoys-dev] DNU after finish update

Bert Freudenberg bert at freudenbergs.de
Sun May 23 21:50:07 EDT 2010

On 24.05.2010, at 00:33, Bert Freudenberg wrote:
> On 23.05.2010, at 22:32, Ricardo Moran wrote:
>> Hi, I don't know if you notice the same error but every time I click "update from server" I get a DNU. I clicked "Abandon" and I think the update finished ok. I don't know how to fix this and I'm not sure of the consequences of clicking "Abandon". 
>> I attach the log file, maybe that helps. Thanks
> I've noticed that too, not sure of the cause. Need to investigate - but it's somehow not finding the base for mcd packages.

3 hours of intense debugging later ...

Found the problem. The version info dictionary cache dictionary gets corrupted. Because of an optimization introduced in 2006. Have a look at	Dictionary>>at:ifAbsentPut:. If the "absent" case block modifies the dictionary, it might get rehashed, so the put needs to go to another index. But for efficiency, the index was re-used.

Interestingly, this "optimization" is not in Squeak Trunk, I guess the flaw was discovered and got reverted in the mean time.

I just committed Collections-bf.7 which reverts the method to the simple old version. And now I need some sleep, it's almost 4 am. Over and out :)

- Bert -

More information about the etoys-dev mailing list