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

Igor Stasenko siguctua at gmail.com
Mon Aug 6 19:09:06 UTC 2012


On 6 August 2012 20:09, Eliot Miranda <eliot.miranda at gmail.com> wrote:
>
> Hi Igor,
>
> On Mon, Aug 6, 2012 at 6:50 AM, Igor Stasenko <siguctua at gmail.com> wrote:
>>
>>
>> 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)
>
>
> How does it crash?
>

it crashes on self error: 'out of memory' in that method, because of
condition not met.
(youngstart is > memoryend) or something.. sorry don't have the code
before my eyes right now)

>
>>
>> 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.
>
>
>
>
> --
> best,
> Eliot
>
>



-- 
Best regards,
Igor Stasenko.


More information about the Vm-dev mailing list