[BUG] Crash while working on a Future.

Michael van der Gulik squeakml at gulik.co.nz
Fri Jun 23 11:20:07 UTC 2006


Tom Phoenix wrote:
> On 6/22/06, Michael van der Gulik <squeakml at gulik.co.nz> wrote:
> 
>> Attached is a change set with actually lets you use the debugger :-).
> 
> 
> Thanks. This gave me a better idea about what you were trying to do, I 
> think.
> 
>> Run "Future doing: [ByteString]" to crash the image.
> 
> 
> Does it have to be ByteString? That's an important class in the
> system. It seems to be an arbitrary choice, since it only shows up in
> your halt code.
> 
> As I understand the operation of #becomeForward:, you're
> instantaneously turning your MessageCapture instance into ByteString.
> But the identity hash of your instance should stay the same, in case
> it's in a dictionary, say. That means that the identity hash of
> ByteString changes to become the hash of your object, even though that
> can break any dictionaries that *it* was in.
> 
> So it would probably break even if you didn't use such an important
> class as ByteString.

I believe that you may have hit the nail on the head. I'm still trying 
to work out exactly how the hashes do and should work. Many thanks! That 
would explain why Smalltalk the SystemDictionary got all confused in my 
earlier attempts.

As with the rest of your email; I'll have to read it tomorrow (no time). 
You are right in that using ProtoObject is a bit over the top. Also, my 
implementation is probably too slow; #become: in Squeak is a slow 
operation and I'm using it a bit too much.

Mikevdg.




More information about the Squeak-dev mailing list