[Vm-dev] [Cog] It seems like there's a bug

Igor Stasenko siguctua at gmail.com
Mon Aug 6 13:50:50 UTC 2012


Hi, all
there was an outstanding issue with running a 200MB Moose image on windows,
the VM was simply crashed.

I took a look and found that the problem is in:

#eeInstantiateSmallClass:sizeInBytes:

crashing (i guess) at first few allocation once image loaded, because
see the stack trace:

Smalltalk stack dump:
  0x1900dc I SmalltalkImage>clearExternalObjects 63367860: a(n) SmalltalkImage
  0x190108 I SmalltalkImage>snapshot:andQuit: 63367860: a(n) SmalltalkImage
0x1007b820 s [] in WorldState class>saveSession
0x1007b87c s BlockClosure>ensure:


so, i changed the last line in that method:

-	^self eeAllocate: sizeInBytes headerSize: hdrSize h1: header1 h2:
header2 h3: 0

+	^  self allocate: sizeInBytes headerSize: hdrSize h1: header1 h2:
header2 h3: 0 doFill: false format: 0

and it is no longer crashes, and i were able to open and interact with
that image..
The VM works fine except from strange behavior with mouse cursor
(which is always hidden unless you move & click the mouse), regardless
of image you opened..
So, it sounds like the dirty fix is is really dirty and incomplete (if
it can be considered a fix at all).

Then i recompiled again, and i don't know what is changed (should be
nothing), but while VM are no longer crashes, it doesn't opens a main
window ..
it simply stalls somewhere with 0% CPU load..
looks like problem with undelivered events/signals etc.. or some
threads are unable to initialize properly.. .

Back to
#eeInstantiateSmallClass:sizeInBytes:
as i understand it is an optimized version of
#instantiateSmallClass:sizeInBytes:
so, replacing it back with that method should be ok?
Except that ee-one guarantees to not trigger GC but looking at senders
of this message it looks like it is not necessary to guarantee that..

But i worry that the real fix should be in completely different place,
because i guess we observe only a consequence of another flaw: since
that method allocates new object(s) it assumes that there's enough
free space on heap..
and since there's none.. this means that some of the logic is flawed
in another place.


Eliot, if you can take a look, i can send you that image in private
mail, because it looks like it will be hard to reproduce.
Image opens and works fine on mac.. but on windows we're getting these
strange issues.

-- 
Best regards,
Igor Stasenko.


More information about the Vm-dev mailing list