<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">2017-05-15 17:39 GMT+02:00 Eliot Miranda <span dir="ltr"><<a href="mailto:eliot.miranda@gmail.com" target="_blank">eliot.miranda@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> <br><div dir="ltr">Hi Nicolas,<div class="gmail_extra"><br><div class="gmail_quote">On Mon, May 15, 2017 at 7:37 AM, Nicolas Cellier <span dir="ltr"><<a href="mailto:nicolas.cellier.aka.nice@gmail.com" target="_blank">nicolas.cellier.aka.nice@<wbr>gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> <br><div dir="ltr"><div><div><div><div><div>Hi Eliot,<br></div>I've not worked on it for a month or so, but last time I tried, the VM failed during image startup.<br></div>AFAIR, it had time to produce and execute some JIT, but I can't say more until I have access to my laptop this evening,<br></div>I've tried some crazy things like tracing every VM function thru gdb hack, unfortunately, it does not scale (slow) and also perturbates the VM.<br></div>I'll try to report ASAP.<br><br></div>There's a first thing needed before testing it:<br>either add some -DWIN64ABI compilation flag somewhere, or add these 3 lines in cogit.c preamble<br><br>#if WIN64 <br># define WIN64ABI 1<br>#endif<br></div></blockquote><div><br></div><div>I was thinking it would be natural to add it to the build.win64x64 makefiles.  But I've hacked something up to add the above to cogit.c.</div><div> </div></div></div></div></blockquote><div><div>Yes thanks, if it can work automagically then it's better.<br></div><div>About Win64 status, maybe you remember the thread opened on vm-dev in March 2017, where I mentionned the error:<br><br><div>(gdb)<br>Continuing.<br><br>Breakpoint 5, enterCogCodePopReceiver () at ../../spur64src/vm/cogitX64WIN<wbr>64.c:5171<br>5171            realCEEnterCogCodePopReceiverR<wbr>eg();<br>(gdb)<br>Continuing.<br><br>Breakpoint 6, 0x000007fefd4ce547 in msvcrt!longjmp () from /cygdrive/c/Windows/system32/m<wbr>svcrt.dll<br>(gdb) call printCallStack()<br><br>          0xf0b138 I Set class(HashedCollection class)>new 0xb9f8ee8: a(n) Set class<br>          0xf0b168 M FFICallbackThunk class>startUp: 0xd06b718: a(n) FFICallbackThunk class<br>          0xf0b1c0 M [] in SmalltalkImage>send:toClassesN<wbr>amedIn:with: 0xba53d18: a(n) SmalltalkImage<br>          0xf0b210 I OrderedCollection>do: 0xbda81d8: a(n) OrderedCollection<br>          0xf0b260 I SmalltalkImage>send:toClassesN<wbr>amedIn:with: 0xba53d18: a(n) SmalltalkImage<br>          0xf0b2b8 I SmalltalkImage>processStartUpL<wbr>ist: 0xba53d18: a(n) SmalltalkImage<br>          0xf0b310 I SmalltalkImage>snapshot:andQui<wbr>t:withExitCode:embedded: 0xba53d18: a(n) SmalltalkImage<br>         0xc6187b0 s SmalltalkImage>snapshot:andQui<wbr>t:embedded:<br>         0xbc9ee20 s SmalltalkImage>snapshot:andQui<wbr>t:<br></div>...snip...<br><br>(gdb) print reenterInterpreter<br>$26 = {{Part = {15766176, 4294967295}}, {Part = {15766176, 15975296}}, {Part = {65001, 0}}, {Part = {4294967295, 8}}, {Part = {<br>     
 1998004096, 15989488}}, {Part = {4356103, 3843995738016}}, {Part = {0, 
0}}, {Part = {0, 0}}, {Part = {0, 0}}, {Part = {0, 0}},<br>  {Part = {0, 0}}, {Part = {0, 0}}, {Part = {0, 0}}, {Part = {0, 0}}, {Part = {0, 0}}, {Part = {0, 0}}}<br>(gdb) cont<br>Continuing.<br>[Thread 1912.0x4e4 exited with code 0]<br>gdb: unknown target exception 0xc0000028 at 0x77438078<br><br>Program received signal ?, Unknown signal.<br>0x0000000077438078 in ntdll!RtlRaiseStatus () from /cygdrive/c/Windows/SYSTEM32/n<wbr>tdll.dll<br>(gdb) where<br>#0  0x0000000077438078 in ntdll!RtlRaiseStatus () from /cygdrive/c/Windows/SYSTEM32/n<wbr>tdll.dll<br>#1  0x00000000773d7eb6 in ntdll!TpAlpcRegisterCompletion<wbr>List () from /cygdrive/c/Windows/SYSTEM32/n<wbr>tdll.dll<br>#2  0x000007fefd4ce5a3 in msvcrt!longjmp () from /cygdrive/c/Windows/system32/m<wbr>svcrt.dll<br>#3  0x00000000004314f9 in returnToExecutivepostContextSw<wbr>itch (inInterpreter=0, switchedContext=0)<br>    at ../../spur64src/vm/gcc3x-coint<wbr>erp.c:22130<br>#4  0x000000000043a110 in activateNewMethod () at ../../spur64src/vm/gcc3x-coint<wbr>erp.c:15045<br>#5  0x000000000043c6e2 in interpretMethodFromMachineCode () at ../../spur64src/vm/gcc3x-coint<wbr>erp.c:19204<br>#6  0x0000000000442e19 in ceSendsupertonumArgs (selector=192910456, superNormalBar=0, rcvr=195006184, numArgs=0)<br>    at ../../spur64src/vm/gcc3x-coint<wbr>erp.c:17228<br>#7  0x000000000ac000ba in ?? ()<br>Backtrace stopped: previous frame inner to this frame (corrupt stack?)<br><br>----------------------<br><br></div><div>It
 was quite long to execute the VM step by step, several setjmp/longjmp 
did succeed before the failing one, and I had got no idea which bug I 
was looking for, nor were enough exercized to decipher the C stack 
and/or the Smalltalk stack (in which variable they are stored etc...).<br><br></div><div>So
 I tried a different angle of attack in end of March: let's trace the VM
 actions and then trace back from the failing point. Maybe it would give
 me a clue.<br></div><div>My idea was to exploit something like:<br><br><a href="http://stackoverflow.com/questions/311840/tool-to-trace-local-function-calls-in-linux#311912" target="_blank">http://stackoverflow.com/quest<wbr>ions/311840/tool-to-trace-loca<wbr>l-function-calls-in-linux#3119<wbr>12</a><br><br>Of course, cygwin is a strange linux, so I tried with dumpbin, but the address were wrong.<br>Finally it did work OK with objdump, see the final make_trace attached.<br></div><div>Unfortunately,
 the debug VM traced by gdb does block before encountering the error 
(despite a few grep -v attempts to not catch the heartbeat).<br></div><div>My crazy ideas do not seem to work...<br>I also managed to get a gdb.exe.stackdump if asking to trace too many functions.<br></div><div>I attach a gdb.log though for the curious.<br><br></div>Since
 then I had no time to work on it. It requires a more intimate 
understanding of stack organization and other VM details. I'm not ready 
yet.<br><br> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">2017-05-15 16:24 GMT+02:00 Eliot Miranda <span dir="ltr"><<a href="mailto:eliot.miranda@gmail.com" target="_blank">eliot.miranda@gmail.com</a>></span>:<br></div><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> <br><div dir="auto"><div>Hi Nicolas,</div><div id="gmail-m_-2489083324410839648m_-4836667870530044329m_1069286879506641545AppleMailSignature"><br></div><div id="gmail-m_-2489083324410839648m_-4836667870530044329m_1069286879506641545AppleMailSignature">    can you give a short status report on Cog for Win64?  What is not working for the JIT?  Given that the stack spur vm works we should be close.  So what still needs fixing?<br><br><span style="background-color:rgba(255,255,255,0)">_,,,^..^,,,_ (phone)</span></div><div><br>On May 15, 2017, at 7:13 AM, Nicolas Cellier <<a href="mailto:notifications@github.com" target="_blank">notifications@github.com</a>> wrote:<br><br></div><blockquote type="cite"><div><p>Hi Esteban, currently this fails because with don't build pharo.cog.spur yet in win64.<br>
Could you retry with "${ROOT_DIR}/build.${ARCH}/pha<wbr>ro.<b>stack</b>.spur/build/vm"?<br>
At least, this should turn the appveyor status green again.</p>

<p style="font-size:small;color:rgb(102,102,102)">—<br>You are receiving this because you are subscribed to this thread.<br>Reply to this email directly, <a href="https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/bed86c5723c150a7eafad111a1872d739dcbae97#commitcomment-22142928" target="_blank">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/APHa0DePieA9856_kWXXScvpTMsyykRTks5r6F1-gaJpZM4NbMVh" target="_blank">mute the thread</a>.<img alt="" src="https://github.com/notifications/beacon/APHa0Kdo08M5umAcKkBoVZddtHjy04ydks5r6F1-gaJpZM4NbMVh.gif" width="1" height="1"></p>
<div>
<div>
  
  
</div>

</div>

</div></blockquote></div><br></blockquote></div><br></div>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail-m_-2489083324410839648gmail_signature"><div dir="ltr"><div><span style="font-size:small;border-collapse:separate"><div>_,,,^..^,,,_<br></div><div>best, Eliot</div></span></div></div></div>
</div></div>
<br></blockquote></div><br></div></div>