[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Segfault while building on 64-bit Cygwin
From: |
Andy Wingo |
Subject: |
Re: Segfault while building on 64-bit Cygwin |
Date: |
Mon, 17 Feb 2020 22:05:45 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux) |
Aah, you all are amazing -- thank you!! Applied and merged.
Cheers,
Andy
On Mon 17 Feb 2020 20:27, Charles Stanhope <address@hidden> writes:
> On 2/16/20, Charles Stanhope <address@hidden> wrote:
>> On 2/16/20, Mike Gran <address@hidden> wrote:
>>>
>>> I can confirm that Charles's patch, plus another one line patch
>>> to define CPU_SETSIZE, is enough to get Guile 3.0.x to build and run
>>> on my box. All tests pass except strptime in French, and the absence
>>> of crypt. This is a 64-bit build.
>>
>> Mike, thanks for going further with the Guile build. The CPU_SETSIZE
>> issue was what was hanging me up from compiling before Andy's comment
>> got me to look at lightening. I assumed I had some configuration,
>> package, or compiler issue. Good to know there's a simple fix.
>>
>> Just a further warning to anyone watching, that patch I posted is a
>> real hack job just to test my theory of the cause of the segfault. I
>> would expect it to fail when you have fewer than four arguments in a
>> JITed function call. I wouldn't try doing much else with that Guile
>> build besides run the tests. :)
>
> I had a little bit more time to look into the lightening
> implementation last night. I've attached a patch that is less horrible
> and more correct than my previous one. It reserves the stack space
> regardless of the number of parameters and appears to work. But I'm
> new to the lightening code base, so I'm not convinced it is the
> correct solution. It's just the solution I was left with after my time
> ran out. I wanted to post this patch as a replacement to the prior one
> in case people did want to do more testing with Guile 3.0 on Cygwin
> x64.
>
> With that, I will let more experienced people come up with the
> appropriate solution. Happy hacking, everybody!
>
> --
> Charles
>
> diff --git a/lightening/x86.c b/lightening/x86.c
> index 965191a..bdd26e1 100644
> --- a/lightening/x86.c
> +++ b/lightening/x86.c
> @@ -328,6 +328,10 @@ reset_abi_arg_iterator(struct abi_arg_iterator *iter,
> size_t argc,
> memset(iter, 0, sizeof *iter);
> iter->argc = argc;
> iter->args = args;
> +#if __CYGWIN__ && __X64
> + // Reserve slots on the stack for 4 register parameters (8 bytes each).
> + iter->stack_size = 32;
> +#endif
> }
>
> static void
- Re: Segfault while building on 64-bit Cygwin, Andy Wingo, 2020/02/06
- Re: Segfault while building on 64-bit Cygwin, Charles Stanhope, 2020/02/06
- Re: Segfault while building on 64-bit Cygwin, Charles Stanhope, 2020/02/14
- Re: Segfault while building on 64-bit Cygwin, Marco Atzeri, 2020/02/15
- Re: Segfault while building on 64-bit Cygwin, Mike Gran, 2020/02/16
- Re: Segfault while building on 64-bit Cygwin, John Cowan, 2020/02/16
- Re: Segfault while building on 64-bit Cygwin, Charles Stanhope, 2020/02/16
- Re: Segfault while building on 64-bit Cygwin, Charles Stanhope, 2020/02/17
- Re: Segfault while building on 64-bit Cygwin,
Andy Wingo <=