On Fri, Jul 08, 2005 at 04:26:44PM -0400, David T. Lewis wrote:
On Fri, Jul 08, 2005 at 08:42:17PM +0200, Andreas Raab wrote:
Trying a different compiler might help - I've seen similar effects with later gcc versions when trying to compile a 64bit VM.
Thanks. I have a copy of egcs-2.91.66 installed on a dusty old Linux box. I'll give it a try and see if it acts any differently from the gcc 3.3.1 I've been using.
Changing compiler versions did change the behavior of the VM. With a VM compiled with egcs-2.91.66 (rather than gcc 3.3.1), I get consistent VM crashes when trying to start the small image. The crashes happen a little differently than with the VM built with gcc 3.3.1, but it seems to to be related to the same underlying problem (whatever that may be).
I am reluctant to draw any conclusions from this, because the crashes happen after entering interpret(), and seem to be timing dependent and possibly related to what Smalltalk process happens to be scheduled at what time when the image is being restarted.
Overall I think there must be some other underlying problem that I have not spotted, although the different behavior with different compilers is admittedly rather suspiscious.
For reference, the SqueakDebug.log files that I get when my image crashes on the egcs-2.91.66 VM look like this:
----------------------------- Unwind error during termination 8 July 2005 5:36:44 pm
VM: unix - a SmalltalkImage Image: Squeak3.8gamma [latest update: #6548]
SecurityManager state: Restricted: false FileAccess: true SocketAccess: true Working Dir /tmp/sq/Squeak64BitPort/images Trusted Dir /tmp/sq/Squeak64BitPort/images Untrusted Dir /tmp/sq/Squeak64BitPort/images
Association(Object)>>doesNotUnderstand: #cannotReturn:to: -----------------------------
This looks like a ContextPart>>cannotReturn:to: that got sent to the wrong object, possibly due to scrambled interpretation of the layout of a BlockContext. This is consistent with the kind of error I see with the VM compiled with the other gcc version; it just seems to be manifesting itself at a different time and place in the interpreter.
Dave