Subject: bug#63365: 30.0.50; GCC 13.1 breaks building Emacs with native-compilation

From: Eli Zaretskii <[email-masked]>
Date: Thu, 01 Feb 2024 13:27:36 +0200

> From: Arash Esbati <[email-masked]>
> Cc: [email-masked],  [email-masked]
> Date: Thu, 01 Feb 2024 12:11:25 +0100
> 
> Eli Zaretskii <[email-masked]> writes:
> 
> > Does this mean the build of the master branch still crashes for you?
> > I thought this was resolved long ago...  Or do you work around this in
> > some way?
> 
> It did crash during this build, yes.  The solution provided once was to
> set '-fno-optimize-sibling-calls', and this is what I usually do and it
> works:
> 
> $ CFLAGS='-O2 -fno-optimize-sibling-calls' ./configure ...

Ah, okay.  So this is still the same version of GCC/libgccjit, and
downgrading them to an older version also solves the problem?

> > Thanks.  I think this means the problem with the backtrace addresses
> > has been solved, indeed: the frames which are printed with file name
> > and function name looks reasonable.  Those which remained "??" I think
> > are due to optimizations or something.  It would be educational to see
> > a corresponding backtrace from GDB, if you can capture it, since we
> > will be able then to compare the "??" portions with what GDB knows
> > about them.
> 
> Did you give me a recipe how to produce the backtrace from GDB?
> Otherwise I'll go through this thread and look.

I don't mind giving the instructions again:

  . run "make V=1"
  . find the last command before the crash
  . start GDB as "gdb ./emacs.exe" from the src subdirectory
  . if the crashed command was run from the lisp/ subdirectory, type
    at the GDB prompt "cd ../lisp"
  . finally, type "run" followed by the failing command line, which
    you can copy/paste from the output of "make V=1" above

This should run the failed command, and cause the crash.  Then type:

  (gdb) thread 1
  (gdb) bt

and post here everything that command produces.

Thanks.