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

From: Eli Zaretskii <[email-masked]>
Date: Sun, 18 May 2025 14:37:49 +0300

> 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.

> > 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?

> >> > 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?