guile-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Segfault while building on 64-bit Cygwin


From: Marco Atzeri
Subject: Re: Segfault while building on 64-bit Cygwin
Date: Sat, 15 Feb 2020 18:58:03 +0100
User-agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.4.2

Am 14.02.2020 um 18:46 schrieb Charles Stanhope:
On 2/6/20, Charles Stanhope <address@hidden> wrote:
On 2/6/20, Andy Wingo <address@hidden> wrote:

Given that John said that compilation went fine with
GUILE_JIT_THRESHOLD=-1, I think perhaps this problem may have been fixed
in the past.  My suspicions are that this issue is an ABI issue with
lightening that could perhaps be reproduced by:

   git co https://gitlab.com/wingo/lightening
   cd lightening
   make -C tests test-native

Of course any additional confirmation is useful and welcome!

I haven't been able to get guile to compile under Cygwin (just a
compilation error I haven't had time to track down), but I was able to
quickly try the above. I get:

Testing: test-native-call_10
call_10.c:9: assertion failed: e == 4
/bin/sh: line 1:  7063 Aborted                 (core dumped) ./$test
make: *** [Makefile:31: test-native] Error 134


Andy, I don't know if you'd want to continue this here or on
lightening's gitlab page, but I looked into this a little bit a few
minutes here and there this past weeek. The x86 "fast-call" calling
convention used on Windows x64[0] and shared by Cygwin[1] requires
that the caller reserve 32 bytes of memory on the stack for the callee
to spill the register parameters (even if the callee takes fewer than
four parameters). I think lightening is currently missing that for the
x64 case for Cygwin.

To test the idea, I made a small modification (patch attached) that is
*not* intended as a solution as it doesn't work for the general case,
but it does allow the tests to pass on Cygwin 64.

[0] 
https://docs.microsoft.com/en-us/cpp/build/x64-calling-convention?view=vs-2019
[1] https://cygwin.com/cygwin-ug-net/programming.html#gcc-64

--
Charles


as guile 3.0 builds fine on Cygwin i686
but segfault immediately on bootstrap for x86_64
I bet you are right on the root cause

Marco




reply via email to

[Prev in Thread] Current Thread [Next in Thread]