Subject: Re: bug#78473: 30.1; feature/igc: multiple crashes with pgtk_handle_selection_*

From: Pip Cet <[email-masked]>
Date: Tue, 20 May 2025 16:20:51 +0000

"Eli Zaretskii" <[email-masked]> writes:

>> Date: Sun, 18 May 2025 11:20:00 +0000
>> From: Pip Cet <[email-masked]>
>> Cc: [email-masked], [email-masked]
>>
>> "Eli Zaretskii" <[email-masked]> writes:
>>
>> >> This pointer has been truncated to 32 bits; it should be 0x555555dee7e0.
>> >> That's consistent with the gcc bug above (and
>> >> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119085, which has been
>> >> correctly marked as a duplicate).
>> >
>> > Is there any way we could change our code to avoid bumping into this
>> > problem?
>>
>> I thought we had, to be honest.  Let's confirm this is 117423 first,
>> then we can figure out how to work around that.
>
> OK.

Thanks for confirming this, Oliver.  I've added Paul Eggert and Po Lu to
CC.

>> > One way is to force the use of -fno-tree-sra (for the affected
>> > versions of GCC, if we can identify them), but is there maybe a less
>> > blunt instrument?
>>
>> That'd be great, but I don't know how to do it.
>
> If worse comes to worst, we could use "#pragma GCC optimize" around
> the affected code, I guess?

Would that be feasible here?

>> >> > Configured using:
>> >> >  'configure 'CFLAGS=-g3 -ggdb -O3 -mtune=native -march=native
>> >> >  -fomit-frame-pointer' CPPFLAGS=-I/home/reitero/.local/lib/mps
>> >>
>> >> Using -fomit-frame-pointer will result in the compiler putting
>> >> references to GC-able objects in %rbp; since MPS usually uses setjmp to
>> >> spill the registers to the stack, and setjmp "scrambles" %rbp for
>> >> security reasons, that will result in references which are invisible to
>> >> MPS, which will cause other crashes.
>> >
>> > But configure.ac on the branch forces -fno-omit-frame-pointer.  Is
>> > that not working for some reason?
>>
>> Both options are passed to GCC, and -fomit-frame-pointer wins because
>> it's last.
>
> Then I guess we should filter out -fomit-frame-pointer from CFLAGS in
> configure?

An error message might be appropriate here, to avoid further confusion
about CFLAGS not taking effect.

Pip