Subject: bug#52381: GNU Emacs 28.0.90 does not build on macOS Monterey, Version 12.0.1, because bootstrapping fails

From: Eli Zaretskii <[email-masked]>
Date: Thu, 09 Dec 2021 09:54:09 +0200

> From: Peter Dyballa <[email-masked]>
> Date: Thu, 9 Dec 2021 01:09:54 +0100
> 
> 	env LANG=C PATH=/opt/local/bin:/usr/local/texlive/2021/bin/universal-darwin:/usr/local/gnupg-2.2/bin:/usr/local/bin:/usr/bin:/bin:/sbin:/usr/sbin:/opt/local/sbin:/usr/local/sbin:/opt/local/Library/Frameworks/Python.framework/Versions/3.8/bin:/opt/X11/bin ./configure --without-libsystemd --without-pop --without-sound --without-gpm --without-dbus --without-selinux --without-imagemagick --with-ns --with-dumping=unexec --disable-ns-self-contained --with-x-toolkit=athena --x-libraries=/opt/X11/lib --x-includes=/opt/local/include --enable-locallisppath=/Library/Application\ Support/Emacs/calendar28:/Library/Application\ Support/Emacs --with-file-notification=yes CPPFLAGS=-I/opt/local/include CFLAGS="-g -H -pipe -fPIC -fno-common -Os -arch x86_64 -fomit-frame-pointer" LDFLAGS="-v -arch x86_64 -Wl,-bind_at_load -Wl,-t -L /opt/local/lib" PKG_CONFIG_PATH=/opt/local/libexec/openssl3/lib/pkgconfig:/opt/local/lib/pkgconfig:/opt/local/share/pkgconfig:/opt/X11/lib/pkgconfig:/usr/local/lib/pkgconfig:/usr/lib/pkgconfig CC=clang CXX=clang++
> 
> (--with-dumping=unexec is used because I want to build NS variant with --disable-ns-self-contained and then X11 variant)
> 
> The failure happens here:
> 
> 	gmake[2]: Leaving directory '/Users/pete/Quellen/Emacs_CVS/emacs-28.0.90/lisp'
> 	./temacs --batch  -l loadup --temacs=bootstrap
> 	Loading loadup.el (source)...
> 	Dump mode: bootstrap
> 	Using load-path (/Users/pete/Quellen/Emacs_CVS/emacs-28.0.90/lisp /Users/pete/Quellen/Emacs_CVS/emacs-28.0.90/lisp/emacs-lisp /Users/pete/Quellen/Emacs_CVS/emacs-28.0.90/lisp/progmodes /Users/pete/Quellen/Emacs_CVS/emacs-28.0.90/lisp/language /Users/pete/Quellen/Emacs_CVS/emacs-28.0.90/lisp/international /Users/pete/Quellen/Emacs_CVS/emacs-28.0.90/lisp/textmodes /Users/pete/Quellen/Emacs_CVS/emacs-28.0.90/lisp/vc)
> 	Loading emacs-lisp/byte-run...
> 	Loading emacs-lisp/backquote...
> 	Loading subr...
> 	Loading version...
> 	Loading widget...
> 	Loading custom...
> 	Loading emacs-lisp/map-ynp...
> 	Loading international/mule...
> 	Loading international/mule-conf...
> 	temacs(58122,0x10e1f8600) malloc: Non-aligned pointer 0x10b0091f8 being freed
> 	temacs(58122,0x10e1f8600) malloc: *** set a breakpoint in malloc_error_break to debug
> 	gmake[1]: *** [Makefile:852: bootstrap-emacs] Abort trap: 6
> 	gmake[1]: Leaving directory '/Users/pete/Quellen/Emacs_CVS/emacs-28.0.90/src'
> 	gmake: *** [Makefile:449: src] Error 2
> 
> Compiler is MacPorts' clang version 13.0.0.

Thanks.

The unexec build is a legacy build, it is basically supported only for
platforms that cannot yet switch to the pdumper build.  I regularly
build with unexec on GNU/Linux, and it does work for me there, both on
the master and the release branches.

So the code is basically solid, and your problem is most probably
specific to the particular configuration you are trying to use: clang
on macOS.  If you can help debugging this (e.g., by following the
advice in the error message you cite above -- it sounds like some
memory alignment issue), find the culprit and suggest a clean enough
fix, we will consider making the required changes on the release
branch.  Otherwise, I will unfortunately have to consider this to be
an unsupported combination: the unexec build on macOS using clang.
IMO, it is not a very important configuration for us to care about.

In general, it is not recommended to use the unexec build as a
starting point for any important developments, because we will remove
the unexec support in some future version of Emacs.

Thanks.