GNU bug report logs - #39118
3.0.0 JIT segfaults on 64-bit Cygwin

Previous Next

Package: guile;

Reported by: John Cowan <cowan <at> ccil.org>

Date: Mon, 13 Jan 2020 17:27:02 UTC

Severity: normal

Done: Andy Wingo <wingo <at> pobox.com>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Charles Stanhope <charles <at> stanho.pe>
To: Andy Wingo <wingo <at> pobox.com>
Cc: 39118 <at> debbugs.gnu.org, Ludovic Courtès <ludo <at> gnu.org>, John Cowan <cowan <at> ccil.org>, guile-devel <at> gnu.org, Mike Gran <spk121 <at> yahoo.com>
Subject: bug#39118: Segfault while building on 64-bit Cygwin
Date: Fri, 14 Feb 2020 09:46:04 -0800
[Message part 1 (text/plain, inline)]
On 2/6/20, Charles Stanhope <charles <at> stanho.pe> wrote:
> On 2/6/20, Andy Wingo <wingo <at> pobox.com> 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
[x86-fastcall-stack-reservation.patch (text/x-patch, attachment)]

This bug report was last modified 5 years and 89 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.