On Thu, Apr 26, 2012 at 2:48 PM, Mariano Martinez Peck <marianopeck@gmail.com> wrote:
BTW...I did an image as you like Eliot, it crashes from startup :)


On Thu, Apr 26, 2012 at 10:42 PM, Mariano Martinez Peck <marianopeck@gmail.com> wrote:
Hi Eliot. We are doing a crazy experiment where we serialize almost all PharoCore and we materialize it in a PharoKernel image. During the initialization (after the load), there is one line that crashes Cog:

PolymorphSystemSettings showDesktopLogo: true.

For what I can see, I may be related to the fact that #pharoLogoContents is too long or something like that?

That's exactly it.  Could you send me the source and the symbolic for the pharoLogoContents method?  i.e. symbolic is e.g. (Object >> # printOn:) symbolic.  I want to see why the method has so many bytecodes. Then I can think about how to implement a sensible limit on the number of bytecodes.

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?