saving a bookmorph: Squeak meets Heisenberg:

Frits Swinkels frits.swinkels at shaw.ca
Sun Aug 17 02:32:02 UTC 2003


The following problem has to do with a proxy object becoming the real 
object at an inappropriate time. Debugging that is fun.

Given a brand-new bookmorph, a "save all pages" creates the following bug 
in writing the .bo file (after having written the .sp files).

In saveIndexOnUrl after a lot of digging down through ReferenceStream 
nextPut: and writeArray: and writeInstance: we arrive at:

self storeDataOn:

The protocol that follows is that for a MorphObjectOut (a proxy for 
something on disk). Somewhere during the execution of the protocol the 
MorphObjectOut becomes a PasteUpMorph<page> which promptly does not 
understand the remainder of the code. What was the original intention: 
write a MorphObjectOut or a PasteUpMorph ?

The Heisenberg bit: I put a "self halt" in saveIndexOnUrl with the 
intention of tracing all this; the error is now a different one because the 
debugger (?) causes the become: operation to kick in earlier: the very fact 
that you observe the MorphObjectOut changes it!?

Anybody remembers the original design? The above problem occurs with 
Squeak3.4 and 3.6 under Linux.

All this works with Squeak2.8 under Windows. With any upscale Squeak under 
Windows saving a BookMorph with URL file:// c:\something\otherthing1.sp 
gets lost immediately in a ServerDirectory problem which translates the URL 
to "/" as input for DosDirectory.







More information about the Squeak-dev mailing list