Hi Igor,<br><br><div class="gmail_quote">On Wed, Mar 28, 2012 at 5:43 AM, Igor Stasenko <span dir="ltr"><<a href="mailto:siguctua@gmail.com">siguctua@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
or perhaps not..<br>
i am trying to build the cog cocoa VMs using configs made by Esteban..<br>
<br>
CogCocoaIOSConfig new<br>
" generateForDebug;"<br>
generateForRelease;<br>
addExternalPlugins: #( FT2Plugin );<br>
addInternalPlugins: #( UnixOSProcessPlugin );<br>
generateSources; generate.<br>
<br>
<br>
it is not a functional bug.. because if i use #generateForDebug,<br>
everything works fine (but slow ;)<br>
but if i do #genearateForRelease, VM crashes with following:<br>
<br>
Program received signal EXC_BAD_ACCESS, Could not access memory.<br>
Reason: KERN_INVALID_ADDRESS at address: 0x5eedca7a<br></blockquote><div><br></div><div> 0x5eedca7a = 5EEDCA5E + a little, one orf my bad hex puns. This is early in initialization in Cogit>compileClosedPICPrototype. 5EEDCA5E is used as a branch target in the PIC prototype. The concretize methods need to know whether a jump target is pointing to a fixup or is some real address to jump to. Look at the code generated for Cogit>addressIsInInstructions: in the various concretize methods for jumps. Looks like the optimizer is decidging that addressIsInInstructions: is always true.</div>
<div><br></div><div>e.g. what if you redefine Cogit>addressIsInInstructions: so that instead of</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>^self cCode: 'address >= (void *)&abstractOpcodes[0] && address < (void *)&abstractOpcodes[opcodeIndex]'</div>
<div>we use</div><div><span class="Apple-style-span"><span class="Apple-tab-span" style="white-space:pre">        </span>^self cCode: '(unsigned long)(address) >= (</span>unsigned long<span class="Apple-style-span">)&abstractOpcodes[0] && address < (</span>unsigned long<span class="Apple-style-span">)&abstractOpcodes[opcodeIndex]'</span></div>
<div><span class="Apple-style-span"><br></span></div><div><span class="Apple-style-span">?</span></div><div><span class="Apple-style-span"><br></span></div><div><span class="Apple-style-span">HTH</span></div><div><span class="Apple-style-span">Eliot</span></div>
<div><span class="Apple-style-span"><br></span></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
0x0000dfb6 in concretizeAt ()<br>
(gdb) bt<br>
#0 0x0000dfb6 in concretizeAt ()<br>
#1 0x00014996 in generateInstructionsAt ()<br>
#2 0x000000c9 in ?? ()<br>
<br>
i am not sure how to squeeze more info about this crash point..<br>
because stack trace is cut by gdb,<br>
which /.another rant here./ stupidly stops scanning stack frames once<br>
it discovers a frame which code is outside of memory covered by debug<br>
information..<br>
<br>
Ah.. yes.. and addition info.. the difference between generateForDebug<br>
and generateForRelease<br>
<br>
compilerFlagsRelease<br>
^#(<br>
"'-fobjc-direct-dispatch'"<br>
'-msse3'<br>
"'-msse4.1'"<br>
"'-msse4.2'"<br>
"'-mdynamic-no-pic'"<br>
"'-fwritable-strings'"<br>
'-Os'<br>
'-fvisibility=hidden'<br>
'-funroll-loops'<br>
"'-fno-asm'"<br>
'-fasm-blocks'<br>
'-finline-functions'<br>
'-mfpmath=sse'<br>
'-fomit-frame-pointer'<br>
'-march=pentium-m'<br>
'-mtune=prescott'<br>
'-falign-functions=16'<br>
'-fno-gcse'<br>
'-fno-cse-follow-jumps'<br>
'-std=gnu99'<br>
'-DBUILD_FOR_OSX'<br>
'-DUSE_INLINE_MEMORY_ACCESSORS'<br>
'-DLSB_FIRST'<br>
'-DUSE_INLINE_MEMORY_ACCESSORS'<br>
'-DHAVE_SYS_TIME_H'<br>
'-DHAVE_NANOSLEEP'<br>
'-DICC_DEBUG=0'<br>
'-DICC_OPTLEVEL="speedHLO"'<br>
'-DICC_OPT_IPO_FOR_SINGLE_FILE_COMPILATION=1'<br>
'-DICC_OPT_PARALLEL=0'<br>
'-DICC_OPT_PREFETCH_INSERTION=1'<br>
'-DICC_OPT_PROVIDE_FRAME_PTR=0'<br>
'-DICC_OPT_USE_ARCH_IA32="SSE42"')<br>
<br>
<br>
compilerFlagsDebug<br>
^#(<br>
'-g3'<br>
'-O0'<br>
'-DDEBUGVM=1')<br>
<font color="#888888"><br>
--<br>
Best regards,<br>
Igor Stasenko.<br>
</font></blockquote></div><br><br clear="all"><div><br></div>-- <br>best,<div>Eliot</div><br>