[Vm-dev] Re: Cog Crash in allocateOpcodesbytecodes

Mariano Martinez Peck marianopeck at gmail.com
Sun Apr 29 08:58:36 UTC 2012


> but how do you determinate the end pc ?
>>>>
>>>
>>> Scan the bytecodes.  See Cogit>scanMethod.
>>>
>>>
>>
>>
>> Hi Eliot. It seems I am still far away from understanding scanMethod. I
>> cannot figure out how you get the endPC. I see you only set it in this part:
>> (descriptor isReturn
>>          and: [pc >= latestContinuation]) ifTrue:
>>             [endPC := pc].
>>
>> anyway, I trust you :)
>>
>
> The first return beyond the furthest continuation is the end of the
> method.  The furthest continuation is the furthest forward we've seen a
> branch.  If we see a return beyond all branches that return must be the end
> of the method.
>
> e.g.
>     expr ifTrue: [^foo] ifFalse: [self bar]. ^self
>
> the first ^foo is not the end of the method because there's a branch
> around it from the expr test to the start of [self bar].  But the last
> ^self is the end because there's no branch past it.
>
>

ahhh got it now :)
Thanks Eliot for the explanation. Now I also understand why you call it
"scan" hahaha.




>
>>
>>
>>
>>>
>>>>
>>>>
>>>>>  if the method's byte codes are greater than some limit, e.g. 1024
>>>>> bytes of bytecodes.  It then rejects the method if the actual end pc is
>>>>> greater than some limit that we find empirically causes the JIT to crash
>>>>> because of the size of the alloca.
>>>>>
>>>>>
>>>>>> Cheers
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>>
>>>>>>>> thanks!
>>>>>>>>
>>>>>>>>
>>>>>>>>>  the same experiment with StackVM works fine.
>>>>>>>>>> Of course in a normal image (without this experiment) I can do
>>>>>>>>>> PolymorphSystemSettings showDesktopLogo: true. without problems.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> From gdb i see:
>>>>>>>>>>
>>>>>>>>>> (gdb) bt
>>>>>>>>>> #0  0x0000a190 in compileCogMethod (selector=528828260) at
>>>>>>>>>> /Users/mariano/Pharo/VM/git/cogVMBlessedSSH/blessed/build/../src/vm/cogit.c:
>>>>>>>>>> 3601
>>>>>>>>>> #1  0x00009088 in cogselector (aMethodObj=531503072,
>>>>>>>>>> aSelectorOop=528828260) at
>>>>>>>>>> /Users/mariano/Pharo/VM/git/cogVMBlessedSSH/blessed/build/../src/vm/cogit.c:
>>>>>>>>>> 3129
>>>>>>>>>> #2  0x0003268b in ceSendsupertonumArgs (selector=528828260,
>>>>>>>>>> superNormalBar=0, rcvr=536158520, numArgs=0) at
>>>>>>>>>> /Users/mariano/Pharo/VM/git/cogVMBlessedSSH/blessed/build/../src/vm/gcc3x-cointerpmt.c:11007
>>>>>>>>>> #3  0x1f40006c in ?? ()
>>>>>>>>>> #4  0x00067350 in threadSchedulingLoop (vmThread=0x1030c00) at
>>>>>>>>>> /Users/mariano/Pharo/VM/git/cogVMBlessedSSH/blessed/build/../src/vm/gcc3x-cointerpmt.c:44006
>>>>>>>>>> #5  0x0003d2cb in initialEnterSmalltalkExecutive () at
>>>>>>>>>> /Users/mariano/Pharo/VM/git/cogVMBlessedSSH/blessed/build/../src/vm/gcc3x-cointerpmt.c:17788
>>>>>>>>>> #6  0x0003df8f in initStackPagesAndInterpret () at
>>>>>>>>>> /Users/mariano/Pharo/VM/git/cogVMBlessedSSH/blessed/build/../src/vm/gcc3x-cointerpmt.c:18208
>>>>>>>>>> #7  0x00022618 in interpret () at
>>>>>>>>>> /Users/mariano/Pharo/VM/git/cogVMBlessedSSH/blessed/build/../src/vm/gcc3x-cointerpmt.c:2066
>>>>>>>>>> #8  0x0006dc60 in -[sqSqueakMainApplication runSqueak]
>>>>>>>>>> (self=0x1d0ca60, _cmd=0x124ebf) at
>>>>>>>>>> /Users/mariano/Pharo/VM/git/cogVMBlessedSSH/blessed/build/../platforms/iOS/vm/Common/Classes/sqSqueakMainApplication.m:174
>>>>>>>>>> #9  0x93ad586c in __NSFirePerformWithOrder ()
>>>>>>>>>> #10 0x908b8dd2 in __CFRunLoopDoObservers ()
>>>>>>>>>> #11 0x90874ced in __CFRunLoopRun ()
>>>>>>>>>> #12 0x908743c4 in CFRunLoopRunSpecific ()
>>>>>>>>>> #13 0x908741f1 in CFRunLoopRunInMode ()
>>>>>>>>>> #14 0x97760e04 in RunCurrentEventLoopInMode ()
>>>>>>>>>> #15 0x97760af5 in ReceiveNextEventCommon ()
>>>>>>>>>> #16 0x97760a3e in BlockUntilNextEventMatchingListInMode ()
>>>>>>>>>> #17 0x96d1a595 in _DPSNextEvent ()
>>>>>>>>>> #18 0x96d19dd6 in -[NSApplication
>>>>>>>>>> nextEventMatchingMask:untilDate:inMode:dequeue:] ()
>>>>>>>>>> #19 0x96cdc1f3 in -[NSApplication run] ()
>>>>>>>>>> #20 0x96cd4289 in NSApplicationMain ()
>>>>>>>>>> #21 0x0006b9f9 in main (argc=1, argv=0xbffff688, envp=0xbffff690)
>>>>>>>>>> at
>>>>>>>>>> /Users/mariano/Pharo/VM/git/cogVMBlessedSSH/blessed/build/../platforms/iOS/vm/Common/main.m:52
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> And the line that fails is:
>>>>>>>>>> allocateOpcodesbytecodes((numBytecodes + extra) * 10, numBytecodes);
>>>>>>>>>>
>>>>>>>>>> numBytecodes is 49729 and extra is 10.
>>>>>>>>>>
>>>>>>>>>> Any idea?
>>>>>>>>>>
>>>>>>>>>> thanks!
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Mariano
>>>>>>>>>> http://marianopeck.wordpress.com
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Mariano
>>>>>>>>> http://marianopeck.wordpress.com
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Mariano
>>>>>>>> http://marianopeck.wordpress.com
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> best,
>>>>>>> Eliot
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Mariano
>>>>>> http://marianopeck.wordpress.com
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> best,
>>>>> Eliot
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Mariano
>>>> http://marianopeck.wordpress.com
>>>>
>>>>
>>>>
>>>
>>>
>>> --
>>> best,
>>> Eliot
>>>
>>>
>>>
>>
>>
>> --
>> Mariano
>> http://marianopeck.wordpress.com
>>
>>
>>
>
>
> --
> best,
> Eliot
>
>
>


-- 
Mariano
http://marianopeck.wordpress.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20120429/7a2f1e73/attachment-0001.htm


More information about the Vm-dev mailing list