Squeak VM crashes (was: Re: [Newbies] Why Squeak is so sloooow?)
Andreas Raab
andreas.raab at gmx.de
Fri Sep 22 03:28:31 UTC 2006
Brad Fuller wrote:
> Reducing the array size to something like:
>
> | a b |
> a := FloatArray new: (16 * 1024*500).
> b := FloatArray new: (16 * 1024*500).
> [a += b] timeToRun.
>
> works fine.
>
> the only thing I can think of is that I'm running out of total memory
> (physical+swap). With my total physical memory of 512MB and swap of 1GB,
> I would run out of memory with the original test case. If this is the
> case, is there not a safe guard in Squeak to prevent this crash?
I think it's got nothing to do with it (and you guys should really
change the subject line if you're discussing crashes and want people to
notice your discussion). Looking at the thread, there is a dead giveaway
of the problem in the stack trace right here:
-2128068296 HandMorph>sendMouseEvent:
-2128068388 HandMorph>handleEvent:
-2128068768 MouseOverHandler>processMouseOver:
2032428416 HandMorph>handleEvent:
2032428116 HandMorph>processEvents
2032428208 [] in WorldState>doOneCycleNowFor:
2032428024 SequenceableCollection>do:
Your memory was allocated partially in the lower and partially in the
upper half of the 32bit address range. Looks like by allocating "just
enough" you're tipping it over to the other half of memory and my guess
would be that this is what's killing it, e.g., some
signed/unsigned/pointer arithmetic problem. And some plugin might cause
that as well, possibly even the FloatArrayPlugin itself (I don't think
anyone has ever reviewed it for those kinds of issues).
Sigh. We should have a debug option in the VM that allows allocating the
object memory at a specific address for testing this kind of behavior.
Any takers?
Cheers,
- Andreas
More information about the Squeak-dev
mailing list
|