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

From: Arash Esbati <[email-masked]>
Date: Fri, 26 May 2023 15:05:01 +0200

Eli Zaretskii <[email-masked]> writes:

> I'd like to see the backtrace from GDB and compare the addresses there
> with those in emacs_backtrace.txt.

I will try that later.

> Did you try to run the crashing command under GDB, as I described
> earlier?

Yes, I did that now, and the result is odd.  I did in the shell (master
branch, 0e4cc6a8bf):

  • git clean -fdx
  • ./autogen.sh
  • ./configure --with-native-compilation
  • make V=1

which ends with:

  *** "make all" failed with exit status 2.
  ***
  *** You could try to:
  *** - run "make bootstrap", which might fix the problem
  *** - run "make V=1", which displays the full commands invoked by make,
  ***   to further investigate the problem
  ***
  make[1]: *** [Makefile:414: advice-on-failure] Error 2
  make[1]: Leaving directory '/z/path/to/emacs-build-test'
  make: *** [Makefile:370: all] Error 2

Next, I inspected the build failures which look like this for example
(line breaks added manually)

  '../src/emacs.exe' -batch --no-site-file --no-site-lisp \
  --eval "(setq load-prefer-newer t byte-compile-warnings 'all)" \
  --eval "(setq org--inhibit-version-check t)"  \
  -l comp -f batch-byte+native-compile obsolete/vip.el

  Backtrace:
  00007ff6ae7fa12e
  00007ff6ae6c8be1
  [...]
  00007ff6ae75e9aa
  ...
  make[3]: *** [Makefile:328: obsolete/vip.elc] Error 3

So I followed your advice and did:

  • cd src/
  • gdb ./emacs.exe
  • (gdb) cd ../lisp
  • (gdb) run -batch --no-site-file --no-site-lisp ... (as above)

which returns (line breaks added manually again):

  Starting program: z:\path\to\emacs-build-test\src\emacs.exe \
  -batch --no-site-file --no-site-lisp \
  --eval "(setq load-prefer-newer t byte-compile-warnings 'all)" \
  --eval "(setq org--inhibit-version-check t)"  \
  -l comp -f batch-byte+native-compile obsolete/vip.el
  [New Thread 37728.0x6048]
  [New Thread 37728.0x73cc]
  [New Thread 37728.0x5e20]
  [New Thread 37728.0x84c8]
  [Thread 37728.0x84c8 exited with code 0]
  [Thread 37728.0x6048 exited with code 0]
  [Thread 37728.0x5e20 exited with code 0]
  [Thread 37728.0x73cc exited with code 0]
  [Inferior 1 (process 37728) exited normally]

Does this make sense?  It seems that under GDB, it works fine and it
breaks during the normal compilation.  I tried it for some other build
failures, they work under GDB.

Best, Arash