GNU bug report logs - #79598
31.0.50; Failed to build feature/igc branch on macOS

Previous Next

Package: emacs;

Reported by: Eason Huang <aqua0210 <at> foxmail.com>

Date: Wed, 8 Oct 2025 08:59:01 UTC

Severity: normal

Found in version 31.0.50

To reply to this bug, email your comments to 79598 AT debbugs.gnu.org.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#79598; Package emacs. (Wed, 08 Oct 2025 08:59:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to Eason Huang <aqua0210 <at> foxmail.com>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Wed, 08 Oct 2025 08:59:01 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Eason Huang <aqua0210 <at> foxmail.com>
To: bug-gnu-emacs <at> gnu.org
Subject: 31.0.50; Failed to build feature/igc branch on macOS
Date: Wed, 08 Oct 2025 16:57:05 +0800
Hello all,

I try to build the latest feature/igc branch on my MacBook Pro, but
failed with errors as bellow:

OS info:
CPU: 2.3 GHz 8 Core Intel Core i9
macOS: 15.7.1 (24G231)

```
❯ ./autogen.sh
❯ ./configure --with-mps=yes

Configured for 'x86_64-apple-darwin24.6.0'.

 Where should the build process find the source code?    .
 What compiler should emacs be built with?               gcc -g3 -O2
 Should Emacs use the GNU version of malloc?             no
   (The GNU allocators don't work with this system configuration.)
 Should Emacs use a relocating allocator for buffers?    no
 Should Emacs use mmap(2) for buffer allocation?         no
 What window system should Emacs use?                    nextstep
 What toolkit should Emacs use?                          none
 Where do we find X Windows header files?                NONE
 Where do we find X Windows libraries?                   NONE
 Does Emacs use -lXaw3d?                                 no
 Is Emacs being built for Android?                       no
 Does Emacs use the X Double Buffer Extension?           no
 Does Emacs use -lXpm?                                   no
 Does Emacs use -ljpeg?                                  no
 Does Emacs use -ltiff?                                  no
 Does Emacs use a gif library?                           no
 Does Emacs use a png library?                           yes -L/opt/local/lib -lpng16
 Does Emacs use -lrsvg-2?                                yes
 Does Emacs use -lwebp?                                  yes
 Does Emacs use -lsqlite3?                               yes
 Does Emacs use cairo?                                   no
 Does Emacs use -llcms2?                                 yes
 Does Emacs use imagemagick?                             no
 Does Emacs use native APIs for images?                  yes (ns)
 Does Emacs support sound?                               no
 Does Emacs use -lgpm?                                   no
 Does Emacs use incremental GC with MPS?                 yes
 Does Emacs use -ldbus?                                  no
 Does Emacs use -lgconf?                                 no
 Does Emacs use GSettings?                               no
 Does Emacs use a file notification library?             yes (kqueue)
 Does Emacs use access control lists?                    yes
 Does Emacs use -lselinux?                               no
 Does Emacs use -lgnutls?                                yes
 Does Emacs use -lxml2?                                  yes
 Does Emacs use -lfreetype?                              no
 Does Emacs use HarfBuzz?                                no
 Does Emacs use -lm17n-flt?                              no
 Does Emacs use -lotf?                                   no
 Does Emacs use -lxft?                                   no
 Does Emacs use -lsystemd?                               no
 Does Emacs use -ltree-sitter?                           yes
 Does Emacs use the GMP library?                         no
 Does Emacs directly use zlib?                           yes
 Does Emacs have dynamic modules support?                yes
 Does Emacs use toolkit scroll bars?                     yes
 Does Emacs support Xwidgets?                            no
 Does Emacs have threading support in lisp?              yes
 Does Emacs support the portable dumper?                 yes
 Which dumping strategy does Emacs use?                  pdumper
 Does Emacs have native lisp compiler?                   no
 Does Emacs use version 2 of the X Input Extension?      no
 Does Emacs generate a smaller-size Japanese dictionary? no

❯ make

 CC       terminfo.o
 CC       mps.o
/Applications/Xcode.app/Contents/Developer/usr/bin/make -C
 ../admin/charsets all
 GEN      ../../etc/charsets/8859-2.map
 (omitted many lines here)
 GEN      ../../lisp/international/cp51932.el
 GEN      ../../lisp/international/eucjp-ms.el
 GEN      charsets.stamp
/Applications/Xcode.app/Contents/Developer/usr/bin/make -C ../admin/unidata charscript.el
 GEN      ../../lisp/international/charscript.el
/Applications/Xcode.app/Contents/Developer/usr/bin/make -C ../admin/unidata emoji-zwj.el
 GEN      ../../lisp/international/emoji-zwj.el
 CCLD     temacs
/opt/local/bin/gmkdir -p ../etc
 GEN      ../etc/DOC
/Applications/Xcode.app/Contents/Developer/usr/bin/make -C ../lisp update-subdirs
cp -f temacs bootstrap-emacs
rm -f bootstrap-emacs.pdmp
./temacs --batch  -l loadup --temacs=pbootstrap \
		--bin-dest '/Users/aqua0210/src/emacs-igc/nextstep/Emacs.app/Contents/MacOS/' --eln-dest '/Users/aqua0210/src/emacs-igc/nextstep/Emacs.app/Contents/Frameworks/'

../mps/code/root.c:294: Emacs fatal error: assertion failed: AddrIsAligned(limit, sizeof(Word))
make[2]: *** [bootstrap-emacs.pdmp] Abort trap: 6
make[1]: *** [src] Error 2
***
*** "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]: *** [advice-on-failure] Error 2
make: *** [all] Error 2

```
I also tried the `make bootstrap` command, but with the same error.

You can see the detail build logs by the below links:

1. build with `make`
https://gist.github.com/Eason0210/69afcfee6c9837df3b5a857db72a9a80

2. build with `make bootstrap` and then try `make V=1`
https://gist.github.com/Eason0210/e6962b562ebd8c4158ff2283aa667583

>> As suggested by Eli: 
>> Is this the first time you are trying to build this branch on that
>> system?  If not, can you figure out what changed since the previous
>> build?

I tried to build igc branch 1 year ago, it works. Sorry, I have no idea
what changed since the previous build. Maybe:
1. I upgrade macOS to sequoia
2. igc branch merged from master branch

>> In any case, please run the MPS test suite, per the instructions in
>> mps/TESTING, and tell if all the tests succeed.

I try to `make -f lii6gc.gmk` in the code directory ,but get errors:

```
❯ cd code
❯ make -f lii6gc.gmk
lii6gc: lii6gc/cool/forktest.d
lii6gc: lii6gc/cool/ztfm.d
lii6gc: lii6gc/cool/zmess.d
lii6gc: lii6gc/cool/zcoll.d
lii6gc: lii6gc/cool/walkt0.d
lii6gc: lii6gc/cool/teletest.d
lii6gc: lii6gc/cool/tagtest.d
lii6gc: lii6gc/cool/steptest.d
lii6gc: lii6gc/cool/sncss.d
lii6gc: lii6gc/cool/segsmss.d
lii6gc: lii6gc/cool/sacss.d
lii6gc: lii6gc/cool/qs.d
lii6gc: lii6gc/cool/poolncv.d
lii6gc: lii6gc/cool/nailboardtest.d
lii6gc: lii6gc/cool/mv2test.d
lii6gc: lii6gc/cool/mpsicv.d
lii6gc: lii6gc/cool/mpmss.d
lii6gc: lii6gc/cool/messtest.d
lii6gc: lii6gc/cool/locv.d
lii6gc: lii6gc/cool/locusss.d
lii6gc: lii6gc/cool/lockut.d
lii6gc: lii6gc/cool/lockcov.d
lii6gc: lii6gc/cool/locbwcss.d
lii6gc: lii6gc/cool/landtest.d
lii6gc: lii6gc/cool/gcbench.d
lii6gc: lii6gc/cool/fotest.d
lii6gc: lii6gc/cool/finaltest.d
lii6gc: lii6gc/cool/finalcv.d
lii6gc: lii6gc/cool/extcon.d
lii6gc: lii6gc/cool/djbench.d
lii6gc: lii6gc/cool/bttest.d
lii6gc: lii6gc/cool/btcv.d
lii6gc: lii6gc/cool/awlutth.d
lii6gc: lii6gc/cool/awluthe.d
lii6gc: lii6gc/cool/awlut.d
lii6gc: lii6gc/cool/arenacv.d
lii6gc: lii6gc/cool/apss.d
lii6gc: lii6gc/cool/amssshe.d
lii6gc: lii6gc/cool/amsss.d
lii6gc: lii6gc/cool/amcssth.d
lii6gc: lii6gc/cool/amcsshe.d
lii6gc: lii6gc/cool/amcss.d
lii6gc: lii6gc/cool/airtest.d
lii6gc: lii6gc/cool/addrobj.d
lii6gc: lii6gc/cool/abqtest.d
lii6gc: lii6gc/cool/eventtxt.d
lii6gc: lii6gc/cool/eventpy.d
lii6gc: lii6gc/cool/eventcnv.d
lii6gc: lii6gc/cool/testthrix.d
lii6gc: lii6gc/cool/testlib.d
lii6gc: lii6gc/cool/pooln.d
lii6gc: lii6gc/cool/mpsioan.d
lii6gc: lii6gc/cool/mpsliban.d
lii6gc: lii6gc/cool/fmtscheme.d
lii6gc: lii6gc/cool/fmtdytst.d
lii6gc: lii6gc/cool/fmtno.d
lii6gc: lii6gc/cool/fmtdy.d
lii6gc: lii6gc/cool/fmthe.d
lii6gc: lii6gc/cool/poolsnc.d
lii6gc: lii6gc/cool/poolmvff.d
lii6gc: lii6gc/cool/poolmv2.d
lii6gc: lii6gc/cool/poollo.d
lii6gc: lii6gc/cool/poolawl.d
lii6gc: lii6gc/cool/poolams.d
lii6gc: lii6gc/cool/poolamc.d
lii6gc: lii6gc/cool/vmix.d
lii6gc: lii6gc/cool/thix.d
thix.c:38:2: error: "thix.c is specific to MPS_OS_FR or MPS_OS_LI"
   38 | #error "thix.c is specific to MPS_OS_FR or MPS_OS_LI"
      |  ^
1 error generated.
lii6gc: lii6gc/cool/span.d
lii6gc: lii6gc/cool/pthrdext.d
pthrdext.c:20:2: error: "pthrdext.c is specific to MPS_OS_FR or MPS_OS_LI"
   20 | #error "pthrdext.c is specific to MPS_OS_FR or MPS_OS_LI"
      |  ^
1 error generated.
lii6gc: lii6gc/cool/protsgix.d
protsgix.c:26:2: error: "protsgix.c is specific to MPS_OS_FR or MPS_OS_LI"
   26 | #error "protsgix.c is specific to MPS_OS_FR or MPS_OS_LI"
      |  ^
1 error generated.
lii6gc: lii6gc/cool/protix.d
lii6gc: lii6gc/cool/prmclii6.d
prmclii6.c:28:2: error: "prmclii6.c is specific to MPS_OS_LI and MPS_ARCH_I6"
   28 | #error "prmclii6.c is specific to MPS_OS_LI and MPS_ARCH_I6"
      |  ^
1 error generated.
lii6gc: lii6gc/cool/prmcix.d
prmcix.c:18:2: error: "prmcix.c is specific to MPS_OS_FR or MPS_OS_LI"
   18 | #error "prmcix.c is specific to MPS_OS_FR or MPS_OS_LI"
      |  ^
1 error generated.
lii6gc: lii6gc/cool/prmci6.d
lii6gc: lii6gc/cool/lockix.d
lii6gc: lii6gc/cool/walk.d
lii6gc: lii6gc/cool/vm.d
lii6gc: lii6gc/cool/version.d
lii6gc: lii6gc/cool/tree.d
lii6gc: lii6gc/cool/trans.d
lii6gc: lii6gc/cool/tract.d
lii6gc: lii6gc/cool/traceanc.d
lii6gc: lii6gc/cool/trace.d
lii6gc: lii6gc/cool/table.d
lii6gc: lii6gc/cool/ss.d
lii6gc: lii6gc/cool/splay.d
lii6gc: lii6gc/cool/shield.d
lii6gc: lii6gc/cool/seg.d
lii6gc: lii6gc/cool/scan.d
lii6gc: lii6gc/cool/sac.d
lii6gc: lii6gc/cool/sa.d
lii6gc: lii6gc/cool/root.d
lii6gc: lii6gc/cool/ring.d
lii6gc: lii6gc/cool/ref.d
lii6gc: lii6gc/cool/rangetree.d
lii6gc: lii6gc/cool/range.d
lii6gc: lii6gc/cool/protocol.d
lii6gc: lii6gc/cool/poolmrg.d
lii6gc: lii6gc/cool/poolmfs.d
lii6gc: lii6gc/cool/poolabs.d
lii6gc: lii6gc/cool/pool.d
lii6gc: lii6gc/cool/policy.d
lii6gc: lii6gc/cool/nailboard.d
lii6gc: lii6gc/cool/mpsi.d
lii6gc: lii6gc/cool/mpm.d
lii6gc: lii6gc/cool/meter.d
lii6gc: lii6gc/cool/message.d
lii6gc: lii6gc/cool/locus.d
lii6gc: lii6gc/cool/ld.d
lii6gc: lii6gc/cool/land.d
lii6gc: lii6gc/cool/global.d
lii6gc: lii6gc/cool/freelist.d
lii6gc: lii6gc/cool/format.d
lii6gc: lii6gc/cool/failover.d
lii6gc: lii6gc/cool/event.d
lii6gc: lii6gc/cool/dbgpooli.d
lii6gc: lii6gc/cool/dbgpool.d
lii6gc: lii6gc/cool/cbs.d
lii6gc: lii6gc/cool/buffer.d
lii6gc: lii6gc/cool/bt.d
lii6gc: lii6gc/cool/boot.d
lii6gc: lii6gc/cool/arg.d
lii6gc: lii6gc/cool/arenavm.d
lii6gc: lii6gc/cool/arenacl.d
lii6gc: lii6gc/cool/arena.d
lii6gc: lii6gc/cool/abq.d
lii6gc: lii6gc/cool/abq.o
lii6gc: lii6gc/cool/arena.o
lii6gc: lii6gc/cool/arenacl.o
lii6gc: lii6gc/cool/arenavm.o
lii6gc: lii6gc/cool/arg.o
lii6gc: lii6gc/cool/boot.o
lii6gc: lii6gc/cool/bt.o
lii6gc: lii6gc/cool/buffer.o
lii6gc: lii6gc/cool/cbs.o
lii6gc: lii6gc/cool/dbgpool.o
lii6gc: lii6gc/cool/dbgpooli.o
lii6gc: lii6gc/cool/event.o
lii6gc: lii6gc/cool/failover.o
lii6gc: lii6gc/cool/format.o
lii6gc: lii6gc/cool/freelist.o
lii6gc: lii6gc/cool/global.o
lii6gc: lii6gc/cool/land.o
lii6gc: lii6gc/cool/ld.o
lii6gc: lii6gc/cool/locus.o
lii6gc: lii6gc/cool/message.o
lii6gc: lii6gc/cool/meter.o
lii6gc: lii6gc/cool/mpm.o
lii6gc: lii6gc/cool/mpsi.o
lii6gc: lii6gc/cool/nailboard.o
lii6gc: lii6gc/cool/policy.o
lii6gc: lii6gc/cool/pool.o
lii6gc: lii6gc/cool/poolabs.o
lii6gc: lii6gc/cool/poolmfs.o
lii6gc: lii6gc/cool/poolmrg.o
lii6gc: lii6gc/cool/protocol.o
lii6gc: lii6gc/cool/range.o
lii6gc: lii6gc/cool/rangetree.o
lii6gc: lii6gc/cool/ref.o
lii6gc: lii6gc/cool/ring.o
lii6gc: lii6gc/cool/root.o
lii6gc: lii6gc/cool/sa.o
lii6gc: lii6gc/cool/sac.o
lii6gc: lii6gc/cool/scan.o
lii6gc: lii6gc/cool/seg.o
lii6gc: lii6gc/cool/shield.o
lii6gc: lii6gc/cool/splay.o
lii6gc: lii6gc/cool/ss.o
lii6gc: lii6gc/cool/table.o
lii6gc: lii6gc/cool/trace.o
lii6gc: lii6gc/cool/traceanc.o
lii6gc: lii6gc/cool/tract.o
lii6gc: lii6gc/cool/trans.o
lii6gc: lii6gc/cool/tree.o
lii6gc: lii6gc/cool/version.o
lii6gc: lii6gc/cool/vm.o
lii6gc: lii6gc/cool/walk.o
lii6gc: lii6gc/cool/lockix.o
lii6gc: lii6gc/cool/prmci6.o
lii6gc: lii6gc/cool/prmcix.o
prmcix.c:18:2: error: "prmcix.c is specific to MPS_OS_FR or MPS_OS_LI"
   18 | #error "prmcix.c is specific to MPS_OS_FR or MPS_OS_LI"
      |  ^
1 error generated.
make[2]: *** [lii6gc/cool/prmcix.o] Error 1
make[1]: *** [target] Error 2
make: *** [mps.a] Error 2
```

--
Eason Huang





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#79598; Package emacs. (Wed, 08 Oct 2025 09:13:01 GMT) Full text and rfc822 format available.

Message #8 received at 79598 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Eason Huang <aqua0210 <at> foxmail.com>
Cc: 79598 <at> debbugs.gnu.org
Subject: Re: bug#79598: 31.0.50; Failed to build feature/igc branch on macOS
Date: Wed, 08 Oct 2025 12:12:34 +0300
> From: Eason Huang <aqua0210 <at> foxmail.com>
> Date: Wed, 08 Oct 2025 16:57:05 +0800
> 
> >> In any case, please run the MPS test suite, per the instructions in
> >> mps/TESTING, and tell if all the tests succeed.
> 
> I try to `make -f lii6gc.gmk` in the code directory ,but get errors:

Your system doesn't fit the "lii6gc" descriptor, so you are building
the library incorrectly.  The file TESTING shows this command only as
an example; please see the list of platform descriptors in
mps/manual/build.txt, to which TESTING points, to find the correct
descriptor for your platform (I guess it's "xci6ll").




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#79598; Package emacs. (Wed, 08 Oct 2025 09:35:01 GMT) Full text and rfc822 format available.

Message #11 received at 79598 <at> debbugs.gnu.org (full text, mbox):

From: Eason Huang <aqua0210 <at> foxmail.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 79598 <at> debbugs.gnu.org
Subject: Re: bug#79598: 31.0.50; Failed to build feature/igc branch on macOS
Date: Wed, 08 Oct 2025 17:34:13 +0800
Eli Zaretskii <eliz <at> gnu.org> writes:

>> From: Eason Huang <aqua0210 <at> foxmail.com>
>> Date: Wed, 08 Oct 2025 16:57:05 +0800
>> 
>> >> In any case, please run the MPS test suite, per the instructions in
>> >> mps/TESTING, and tell if all the tests succeed.
>> 
>> I try to `make -f lii6gc.gmk` in the code directory ,but get errors:
>
> Your system doesn't fit the "lii6gc" descriptor, so you are building
> the library incorrectly.  The file TESTING shows this command only as
> an example; please see the list of platform descriptors in
> mps/manual/build.txt, to which TESTING points, to find the correct
> descriptor for your platform (I guess it's "xci6ll").
>

Yes, "xci611" is the descriptor for my platform.
I can run `make -f xci6ll.gmk` successfully.

Then I run the three Test suite, all tests passed.
```
make -f xci6ll.gmk testrun
=> Tests: 38. All tests pass.

make -f xci6ll.gmk testci
=> Tests: 39. All tests pass.

make -f xci6ll.gmk testall
=> Tests: 39. All tests pass.
```

-- 
Eason Huang





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#79598; Package emacs. (Wed, 08 Oct 2025 09:52:01 GMT) Full text and rfc822 format available.

Message #14 received at 79598 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Eason Huang <aqua0210 <at> foxmail.com>
Cc: 79598 <at> debbugs.gnu.org
Subject: Re: bug#79598: 31.0.50; Failed to build feature/igc branch on macOS
Date: Wed, 08 Oct 2025 12:51:01 +0300
> From: Eason Huang <aqua0210 <at> foxmail.com>
> Cc: 79598 <at> debbugs.gnu.org
> Date: Wed, 08 Oct 2025 17:34:13 +0800
> 
> Eli Zaretskii <eliz <at> gnu.org> writes:
> 
> >> From: Eason Huang <aqua0210 <at> foxmail.com>
> >> Date: Wed, 08 Oct 2025 16:57:05 +0800
> >> 
> >> >> In any case, please run the MPS test suite, per the instructions in
> >> >> mps/TESTING, and tell if all the tests succeed.
> >> 
> >> I try to `make -f lii6gc.gmk` in the code directory ,but get errors:
> >
> > Your system doesn't fit the "lii6gc" descriptor, so you are building
> > the library incorrectly.  The file TESTING shows this command only as
> > an example; please see the list of platform descriptors in
> > mps/manual/build.txt, to which TESTING points, to find the correct
> > descriptor for your platform (I guess it's "xci6ll").
> >
> 
> Yes, "xci611" is the descriptor for my platform.
> I can run `make -f xci6ll.gmk` successfully.
> 
> Then I run the three Test suite, all tests passed.
> ```
> make -f xci6ll.gmk testrun
> => Tests: 38. All tests pass.
> 
> make -f xci6ll.gmk testci
> => Tests: 39. All tests pass.
> 
> make -f xci6ll.gmk testall
> => Tests: 39. All tests pass.
> ```

Ok, then please run the offending command, viz.:

  ./temacs --batch  -l loadup --temacs=pbootstrap \
		  --bin-dest '/Users/aqua0210/src/emacs-igc/nextstep/Emacs.app/Contents/MacOS/' --eln-dest '/Users/aqua0210/src/emacs-igc/nextstep/Emacs.app/Contents/Frameworks/'

under a debugger, and when it hits the assertion violation, show the
backtrace, so we could know which code in Emacs triggers this.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#79598; Package emacs. (Wed, 08 Oct 2025 10:47:02 GMT) Full text and rfc822 format available.

Message #17 received at 79598 <at> debbugs.gnu.org (full text, mbox):

From: Eason Huang <aqua0210 <at> foxmail.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 79598 <at> debbugs.gnu.org
Subject: Re: bug#79598: 31.0.50; Failed to build feature/igc branch on macOS
Date: Wed, 08 Oct 2025 18:46:28 +0800
Eli Zaretskii <eliz <at> gnu.org> writes:

>> From: Eason Huang <aqua0210 <at> foxmail.com>
>> Cc: 79598 <at> debbugs.gnu.org
>> Date: Wed, 08 Oct 2025 17:34:13 +0800
>> 
>> Eli Zaretskii <eliz <at> gnu.org> writes:
>> 
>> >> From: Eason Huang <aqua0210 <at> foxmail.com>
>> >> Date: Wed, 08 Oct 2025 16:57:05 +0800
>> >> 
>> >> >> In any case, please run the MPS test suite, per the instructions in
>> >> >> mps/TESTING, and tell if all the tests succeed.
>> >> 
>> >> I try to `make -f lii6gc.gmk` in the code directory ,but get errors:
>> >
>> > Your system doesn't fit the "lii6gc" descriptor, so you are building
>> > the library incorrectly.  The file TESTING shows this command only as
>> > an example; please see the list of platform descriptors in
>> > mps/manual/build.txt, to which TESTING points, to find the correct
>> > descriptor for your platform (I guess it's "xci6ll").
>> >
>> 
>> Yes, "xci611" is the descriptor for my platform.
>> I can run `make -f xci6ll.gmk` successfully.
>> 
>> Then I run the three Test suite, all tests passed.
>> ```
>> make -f xci6ll.gmk testrun
>> => Tests: 38. All tests pass.
>> 
>> make -f xci6ll.gmk testci
>> => Tests: 39. All tests pass.
>> 
>> make -f xci6ll.gmk testall
>> => Tests: 39. All tests pass.
>> ```
>
> Ok, then please run the offending command, viz.:
>
>   ./temacs --batch  -l loadup --temacs=pbootstrap \
> 		  --bin-dest '/Users/aqua0210/src/emacs-igc/nextstep/Emacs.app/Contents/MacOS/' --eln-dest '/Users/aqua0210/src/emacs-igc/nextstep/Emacs.app/Contents/Frameworks/'
>
> under a debugger, and when it hits the assertion violation, show the
> backtrace, so we could know which code in Emacs triggers this.
>

I tried to run the offending command with gdb, and get the results as
below:

```
❯pwd
/Users/aqua0210/src/emacs-igc/src
❯ gdb --args ./temacs --batch  -l loadup --temacs=pbootstrap \
   --bin-dest '/Users/aqua0210/src/emacs-igc/nextstep/Emacs.app/Contents/MacOS/' --eln-dest '/Users/aqua0210/src/emacs-igc/nextstep/Emacs.app/Contents/Frameworks/'
GNU gdb (GDB) 16.3
Copyright (C) 2024 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-apple-darwin24.3.0".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from ./temacs...
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module fingerprint.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module acl_entries.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module memmem.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module mktime.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module acl-errno-valid.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module acl-internal.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module get-permissions.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module set-permissions.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module allocator.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module openat-proc.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module boot-time.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module c-ctype.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module c-strcasecmp.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module c-strncasecmp.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module canonicalize-lgpl.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module careadlinkat.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module cloexec.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module close-stream.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module copy-file-range.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module md5.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module sha1.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module sha256.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module sha512.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module dtoastr.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module dtotimespec.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module faccessat.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module filemode.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module filevercmp.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module fpending.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module free.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module fstatat.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module fsusage.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module futimens.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module getrandom.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module gettime.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module scratch_buffer_grow.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module scratch_buffer_grow_preserve.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module mini-gmp-gnulib.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module lstat.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module memrchr.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module memset_explicit.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module nanosleep.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module nproc.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module nstrftime.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module open.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module pipe2.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module qcopy-acl.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module rawmemchr.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module readlink.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module readlinkat.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module sig2str.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module sigdescr_np.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module symlink.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module tempname.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module time_rz.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module timegm.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module timespec-add.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module timespec-sub.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module utimens.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module utimensat.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module openat-die.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module save-cwd.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/alloc.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/atimer.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/bidi.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/bignum.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/buffer.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/bytecode.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/callint.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/callproc.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/casefiddle.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/casetab.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/category.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/ccl.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/character.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/charset.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/chartab.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/cm.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/cmds.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/coding.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/comp.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/composite.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/data.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/decompress.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/dired.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/dispnew.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/doc.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/doprnt.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/dynlib.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/editfns.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/emacs-module.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/emacs.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/eval.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/fileio.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/filelock.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/floatfns.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/fns.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/font.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/fontset.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/frame.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/fringe.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/gnutls.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/igc.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/image.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/indent.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/insdel.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/intervals.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/itree.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/json.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/keyboard.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/keymap.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/kqueue.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/lcms.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/lread.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/macfont.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/macros.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/marker.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/menu.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/minibuf.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/mps.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/nsfns.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/nsimage.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/nsmenu.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/nsselect.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/nsterm.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/pdumper.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/print.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/process.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/profiler.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/regex-emacs.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/region-cache.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/scroll.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/search.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/sort.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/sqlite.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/syntax.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/sysdep.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/systhread.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/term.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/terminal.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/terminfo.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/textprop.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/thread.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/timefns.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/treesit.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/undo.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/window.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/xdisp.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/xfaces.o]
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module /Users/aqua0210/src/emacs-igc/src/xml.o]
.gdbinit:23: Error in sourced command file:
DW_FORM_GNU_str_index or DW_FORM_strx used without .debug_str section in CU at offset 0x0 [in module fingerprint.o]
(gdb)
```

I'm not sure I am running the command in the right way.

-- 
Eason Huang





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#79598; Package emacs. (Wed, 08 Oct 2025 14:11:02 GMT) Full text and rfc822 format available.

Message #20 received at 79598 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Eason Huang <aqua0210 <at> foxmail.com>
Cc: 79598 <at> debbugs.gnu.org
Subject: Re: bug#79598: 31.0.50; Failed to build feature/igc branch on macOS
Date: Wed, 08 Oct 2025 17:09:47 +0300
> From: Eason Huang <aqua0210 <at> foxmail.com>
> Cc: 79598 <at> debbugs.gnu.org
> Date: Wed, 08 Oct 2025 18:46:28 +0800
> 
> Eli Zaretskii <eliz <at> gnu.org> writes:
> 
> > under a debugger, and when it hits the assertion violation, show the
> > backtrace, so we could know which code in Emacs triggers this.
> >
> 
> I tried to run the offending command with gdb, and get the results as
> below:

Try running GDB not from the src directory, so it doesn't load the
.gdbinit file.  Like this:

  $ cd /Users/aqua0210/src/emacs-igc
  $ gdb ./src/temacs
  ...
  (gdb) cd src
  (gdb) run  --batch  -l loadup --temacs=pbootstrap --bin-dest '/Users/aqua0210/src/emacs-igc/nextstep/Emacs.app/Contents/MacOS/' --eln-dest '/Users/aqua0210/src/emacs-igc/nextstep/Emacs.app/Contents/Frameworks/'

If this lets you run till the assertion violation, you can "source
.gdbinit" later if needed.

If the above doesn't work, either, try lldb instead of GDB (I'm not
sure how reliable is GDB on macOS, given that it chokes on line 23,
which is as a naïve as naïve can get).




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#79598; Package emacs. (Wed, 08 Oct 2025 22:38:01 GMT) Full text and rfc822 format available.

Message #23 received at 79598 <at> debbugs.gnu.org (full text, mbox):

From: Eason Huang <aqua0210 <at> foxmail.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 79598 <at> debbugs.gnu.org
Subject: Re: bug#79598: 31.0.50; Failed to build feature/igc branch on macOS
Date: Thu, 09 Oct 2025 06:37:12 +0800
Eli Zaretskii <eliz <at> gnu.org> writes:

>> From: Eason Huang <aqua0210 <at> foxmail.com>
>> Cc: 79598 <at> debbugs.gnu.org
>> Date: Wed, 08 Oct 2025 18:46:28 +0800
>> 
>> Eli Zaretskii <eliz <at> gnu.org> writes:
>> 
>> > under a debugger, and when it hits the assertion violation, show the
>> > backtrace, so we could know which code in Emacs triggers this.
>> >
>> 
>> I tried to run the offending command with gdb, and get the results as
>> below:
>
> Try running GDB not from the src directory, so it doesn't load the
> .gdbinit file.  Like this:
>
>   $ cd /Users/aqua0210/src/emacs-igc
>   $ gdb ./src/temacs
>   ...
>   (gdb) cd src
>   (gdb) run --batch -l loadup --temacs=pbootstrap --bin-dest
> '/Users/aqua0210/src/emacs-igc/nextstep/Emacs.app/Contents/MacOS/' --eln-dest
> '/Users/aqua0210/src/emacs-igc/nextstep/Emacs.app/Contents/Frameworks/'
>
> If this lets you run till the assertion violation, you can "source
> .gdbinit" later if needed.
>
> If the above doesn't work, either, try lldb instead of GDB (I'm not
> sure how reliable is GDB on macOS, given that it chokes on line 23,
> which is as a naïve as naïve can get).
>

GDB doesn't work on macOS. I use lldb instead.

1. run `lldb ./src/temacs` in `/Users/aqua0210/src/emacs-igc` directory.
2. in lldb, get the assertion errors as below:

```
(lldb) platform settings -w ./src
(lldb) shell pwd
/Users/aqua0210/src/emacs-igc/src
(lldb) run  --batch  -l loadup --temacs=pbootstrap --bin-dest '/Users/aqua0210/src/emacs-igc/nextstep/Emacs.app/Contents/MacOS/' --eln-dest '/Users/aqua0210/src/emacs-igc/nextstep/Emacs.app/Contents/Frameworks/'
Process 87281 launched: '/Users/aqua0210/src/emacs-igc/src/temacs' (x86_64)

../mps/code/root.c:294: Emacs fatal error: assertion failed: AddrIsAligned(limit, sizeof(Word))
Process 87281 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGABRT
    frame #0: 0x00007ff81c18b846 libsystem_kernel.dylib`__pthread_kill + 10
libsystem_kernel.dylib`__pthread_kill:
->  0x7ff81c18b846 <+10>: jae    0x7ff81c18b850 ; <+20>
    0x7ff81c18b848 <+12>: movq   %rax, %rdi
    0x7ff81c18b84b <+15>: jmp    0x7ff81c18529a ; cerror_nocancel
    0x7ff81c18b850 <+20>: retq
Target 0: (temacs) stopped.
```


-- 
Eason Huang





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#79598; Package emacs. (Thu, 09 Oct 2025 07:02:02 GMT) Full text and rfc822 format available.

Message #26 received at 79598 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Eason Huang <aqua0210 <at> foxmail.com>
Cc: 79598 <at> debbugs.gnu.org
Subject: Re: bug#79598: 31.0.50; Failed to build feature/igc branch on macOS
Date: Thu, 09 Oct 2025 10:01:35 +0300
> From: Eason Huang <aqua0210 <at> foxmail.com>
> Cc: 79598 <at> debbugs.gnu.org
> Date: Thu, 09 Oct 2025 06:37:12 +0800
> 
> Eli Zaretskii <eliz <at> gnu.org> writes:
> 
> GDB doesn't work on macOS. I use lldb instead.
> 
> 1. run `lldb ./src/temacs` in `/Users/aqua0210/src/emacs-igc` directory.
> 2. in lldb, get the assertion errors as below:
> 
> ```
> (lldb) platform settings -w ./src
> (lldb) shell pwd
> /Users/aqua0210/src/emacs-igc/src
> (lldb) run  --batch  -l loadup --temacs=pbootstrap --bin-dest '/Users/aqua0210/src/emacs-igc/nextstep/Emacs.app/Contents/MacOS/' --eln-dest '/Users/aqua0210/src/emacs-igc/nextstep/Emacs.app/Contents/Frameworks/'
> Process 87281 launched: '/Users/aqua0210/src/emacs-igc/src/temacs' (x86_64)
> 
> ../mps/code/root.c:294: Emacs fatal error: assertion failed: AddrIsAligned(limit, sizeof(Word))
> Process 87281 stopped
> * thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGABRT
>     frame #0: 0x00007ff81c18b846 libsystem_kernel.dylib`__pthread_kill + 10
> libsystem_kernel.dylib`__pthread_kill:
> ->  0x7ff81c18b846 <+10>: jae    0x7ff81c18b850 ; <+20>
>     0x7ff81c18b848 <+12>: movq   %rax, %rdi
>     0x7ff81c18b84b <+15>: jmp    0x7ff81c18529a ; cerror_nocancel
>     0x7ff81c18b850 <+20>: retq
> Target 0: (temacs) stopped.
> ```

OK, now please show the backtrace from the assertion point.  (I don't
know what is the lldb command to show backtrace.)




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#79598; Package emacs. (Thu, 09 Oct 2025 11:54:02 GMT) Full text and rfc822 format available.

Message #29 received at 79598 <at> debbugs.gnu.org (full text, mbox):

From: Eason Huang <aqua0210 <at> foxmail.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 79598 <at> debbugs.gnu.org
Subject: Re: bug#79598: 31.0.50; Failed to build feature/igc branch on macOS
Date: Thu, 09 Oct 2025 19:52:24 +0800
Eli Zaretskii <eliz <at> gnu.org> writes:

>> From: Eason Huang <aqua0210 <at> foxmail.com>
>> Cc: 79598 <at> debbugs.gnu.org
>> Date: Thu, 09 Oct 2025 06:37:12 +0800
>> 
>> Eli Zaretskii <eliz <at> gnu.org> writes:
>> 
>> GDB doesn't work on macOS. I use lldb instead.
>> 
>> 1. run `lldb ./src/temacs` in `/Users/aqua0210/src/emacs-igc` directory.
>> 2. in lldb, get the assertion errors as below:
>> 
>> ```
>> (lldb) platform settings -w ./src
>> (lldb) shell pwd
>> /Users/aqua0210/src/emacs-igc/src
>> (lldb) run --batch -l loadup --temacs=pbootstrap --bin-dest
>> '/Users/aqua0210/src/emacs-igc/nextstep/Emacs.app/Contents/MacOS/' --eln-dest
>> '/Users/aqua0210/src/emacs-igc/nextstep/Emacs.app/Contents/Frameworks/'
>> Process 87281 launched: '/Users/aqua0210/src/emacs-igc/src/temacs' (x86_64)
>> 
>> ../mps/code/root.c:294: Emacs fatal error: assertion failed: AddrIsAligned(limit, sizeof(Word))
>> Process 87281 stopped
>> * thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGABRT
>>     frame #0: 0x00007ff81c18b846 libsystem_kernel.dylib`__pthread_kill + 10
>> libsystem_kernel.dylib`__pthread_kill:
>> ->  0x7ff81c18b846 <+10>: jae    0x7ff81c18b850 ; <+20>
>>     0x7ff81c18b848 <+12>: movq   %rax, %rdi
>>     0x7ff81c18b84b <+15>: jmp    0x7ff81c18529a ; cerror_nocancel
>>     0x7ff81c18b850 <+20>: retq
>> Target 0: (temacs) stopped.
>> ```
>
> OK, now please show the backtrace from the assertion point.  (I don't
> know what is the lldb command to show backtrace.)
>

Hello Eli,

You can see the backtrace info in the below command log:

```
❯ lldb ./src/temacs
(lldb) target create "./src/temacs"
Current executable set to '/Users/aqua0210/src/emacs-igc/src/temacs' (x86_64).
(lldb) shell pwd                                                                                                                                              /Users/aqua0210/src/emacs-igc
(lldb) platform settings -w ./src                                                                                                                             (lldb) shell pwd
/Users/aqua0210/src/emacs-igc/src
(lldb) run  --batch  -l loadup --temacs=pbootstrap --bin-dest '/Users/aqua0210/src/emacs-igc/nextstep/Emacs.app/Contents/MacOS/' --eln-dest '/Users/aqua0210/src/emacs-igc/nextstep/Emacs.app/Contents/Frameworks/'
Process 88048 launched: '/Users/aqua0210/src/emacs-igc/src/temacs' (x86_64)

../mps/code/root.c:294: Emacs fatal error: assertion failed: AddrIsAligned(limit, sizeof(Word))
Process 88048 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGABRT
    frame #0: 0x00007ff81c18b846 libsystem_kernel.dylib`__pthread_kill + 10
libsystem_kernel.dylib`__pthread_kill:
->  0x7ff81c18b846 <+10>: jae    0x7ff81c18b850 ; <+20>
    0x7ff81c18b848 <+12>: movq   %rax, %rdi
    0x7ff81c18b84b <+15>: jmp    0x7ff81c18529a ; cerror_nocancel
    0x7ff81c18b850 <+20>: retq
Target 0: (temacs) stopped.
(lldb) bt
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGABRT
  * frame #0: 0x00007ff81c18b846 libsystem_kernel.dylib`__pthread_kill + 10
    frame #1: 0x00007ff81c1c6b12 libsystem_pthread.dylib`pthread_kill + 259
    frame #2: 0x00007ff81c0aa0fa libsystem_c.dylib`raise + 24
    frame #3: 0x00000001002dde3f temacs`terminate_due_to_signal(sig=6, backtrace_limit=2147483647) at emacs.c:481:3 [opt]
    frame #4: 0x00000001001f5ff2 temacs`set_state(state=IGC_STATE_DEAD) at igc.c:1015:7 [opt] [inlined]
    frame #5: 0x00000001001f5fd4 temacs`igc_assert_fail(file=<unavailable>, line=<unavailable>, msg=<unavailable>) at igc.c:311:3 [opt]
    frame #6: 0x000000010025b617 temacs`mps_lib_assert_fail(file=<unavailable>, line=<unavailable>, condition=<unavailable>) at mpsliban.c:87:3 [opt] [inlined]
    frame #7: 0x000000010025b612 temacs`RootCreateArea(rootReturn=<unavailable>, arena=<unavailable>, rank=<unavailable>, mode=0, base=0x00000001003cd520, limit=0x00000001003cd5b4, scan_area=(temacs`scan_ambig at igc.c:1591), closure=0x0000000000000000) at root.c:294:3 [opt]
    frame #8: 0x00000001002e903c temacs`mps_root_create_area(mps_root_o=0x00007ff7bfefe9f0, arena=0x00000001005e4000, mps_rank=0, mps_rm=0, base=0x00000001003cd520, limit=0x00000001003cd5b4, scan_area=(temacs`scan_ambig at igc.c:1591), closure=0x0000000000000000) at mpsi.c:1362:9 [opt]
    frame #9: 0x00000001001f2fe6 temacs`root_create(gc=0x0000600000ee0000, start=0x00000001003cd520, end=0x00000001003cd5b4, rank=<unavailable>, scan=<unavailable>, closure=<unavailable>, ambig=<unavailable>, label="main-thread-getcjmp") at igc.c:2922:7 [opt]
    frame #10: 0x00000001001f5ec5 temacs`root_create_ambig(gc=0x0000600000ee0000, start=0x00000001003cd520, end=0x00000001003cd5b4, label=<unavailable>) at igc.c:2932:10 [opt] [inlined]
    frame #11: 0x00000001001f5e9f temacs`root_create_main_thread(gc=0x0000600000ee0000) at igc.c:2985:3 [opt] [inlined]
    frame #12: 0x00000001001f5e55 temacs`make_igc at igc.c:5120:3 [opt] [inlined]
    frame #13: 0x00000001001f5bea temacs`init_igc at igc.c:5582:16 [opt]
    frame #14: 0x00000001000df939 temacs`main(argc=9, argv=0x00007ff7bfeff258) at emacs.c:1437:3 [opt]
    frame #15: 0x00007ff81be21530 dyld`start + 3056

```

-- 
Eason Huang





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#79598; Package emacs. (Thu, 09 Oct 2025 18:29:02 GMT) Full text and rfc822 format available.

Message #32 received at 79598 <at> debbugs.gnu.org (full text, mbox):

From: Pip Cet <pipcet <at> protonmail.com>
To: Eason Huang <aqua0210 <at> foxmail.com>
Cc: 79598 <at> debbugs.gnu.org, Eli Zaretskii <eliz <at> gnu.org>
Subject: Re: bug#79598: 31.0.50; Failed to build feature/igc branch on macOS
Date: Thu, 09 Oct 2025 18:27:56 +0000
"Eason Huang" <aqua0210 <at> foxmail.com> writes:

> Eli Zaretskii <eliz <at> gnu.org> writes:
>
>>> From: Eason Huang <aqua0210 <at> foxmail.com>
>>> Cc: 79598 <at> debbugs.gnu.org
>>> Date: Thu, 09 Oct 2025 06:37:12 +0800
>>>
>>> Eli Zaretskii <eliz <at> gnu.org> writes:
>>>
>>> GDB doesn't work on macOS. I use lldb instead.
>>>
>>> 1. run `lldb ./src/temacs` in `/Users/aqua0210/src/emacs-igc` directory.
>>> 2. in lldb, get the assertion errors as below:
>>>
>>> ```
>>> (lldb) platform settings -w ./src
>>> (lldb) shell pwd
>>> /Users/aqua0210/src/emacs-igc/src
>>> (lldb) run --batch -l loadup --temacs=pbootstrap --bin-dest
>>> '/Users/aqua0210/src/emacs-igc/nextstep/Emacs.app/Contents/MacOS/' --eln-dest
>>> '/Users/aqua0210/src/emacs-igc/nextstep/Emacs.app/Contents/Frameworks/'
>>> Process 87281 launched: '/Users/aqua0210/src/emacs-igc/src/temacs' (x86_64)
>>>
>>> ../mps/code/root.c:294: Emacs fatal error: assertion failed: AddrIsAligned(limit, sizeof(Word))
>>> Process 87281 stopped
>>> * thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGABRT
>>>     frame #0: 0x00007ff81c18b846 libsystem_kernel.dylib`__pthread_kill + 10
>>> libsystem_kernel.dylib`__pthread_kill:
>>> ->  0x7ff81c18b846 <+10>: jae    0x7ff81c18b850 ; <+20>
>>>     0x7ff81c18b848 <+12>: movq   %rax, %rdi
>>>     0x7ff81c18b84b <+15>: jmp    0x7ff81c18529a ; cerror_nocancel
>>>     0x7ff81c18b850 <+20>: retq
>>> Target 0: (temacs) stopped.
>>> ```
>>
>> OK, now please show the backtrace from the assertion point.  (I don't
>> know what is the lldb command to show backtrace.)
>>
>
> Hello Eli,
>
> You can see the backtrace info in the below command log:
>
> ```
> ❯ lldb ./src/temacs
> (lldb) target create "./src/temacs"
> Current executable set to '/Users/aqua0210/src/emacs-igc/src/temacs' (x86_64).
> (lldb) shell pwd                                                                                                                                              /Users/aqua0210/src/emacs-igc
> (lldb) platform settings -w ./src                                                                                                                             (lldb) shell pwd
> /Users/aqua0210/src/emacs-igc/src
> (lldb) run  --batch  -l loadup --temacs=pbootstrap --bin-dest '/Users/aqua0210/src/emacs-igc/nextstep/Emacs.app/Contents/MacOS/' --eln-dest '/Users/aqua0210/src/emacs-igc/nextstep/Emacs.app/Contents/Frameworks/'
> Process 88048 launched: '/Users/aqua0210/src/emacs-igc/src/temacs' (x86_64)
>
> ../mps/code/root.c:294: Emacs fatal error: assertion failed: AddrIsAligned(limit, sizeof(Word))
> Process 88048 stopped
> * thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGABRT
>     frame #0: 0x00007ff81c18b846 libsystem_kernel.dylib`__pthread_kill + 10
> libsystem_kernel.dylib`__pthread_kill:
> ->  0x7ff81c18b846 <+10>: jae    0x7ff81c18b850 ; <+20>
>     0x7ff81c18b848 <+12>: movq   %rax, %rdi
>     0x7ff81c18b84b <+15>: jmp    0x7ff81c18529a ; cerror_nocancel
>     0x7ff81c18b850 <+20>: retq
> Target 0: (temacs) stopped.
> (lldb) bt
> * thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGABRT
>   * frame #0: 0x00007ff81c18b846 libsystem_kernel.dylib`__pthread_kill + 10
>     frame #1: 0x00007ff81c1c6b12 libsystem_pthread.dylib`pthread_kill + 259
>     frame #2: 0x00007ff81c0aa0fa libsystem_c.dylib`raise + 24
>     frame #3: 0x00000001002dde3f temacs`terminate_due_to_signal(sig=6, backtrace_limit=2147483647) at emacs.c:481:3 [opt]
>     frame #4: 0x00000001001f5ff2 temacs`set_state(state=IGC_STATE_DEAD) at igc.c:1015:7 [opt] [inlined]
>     frame #5: 0x00000001001f5fd4 temacs`igc_assert_fail(file=<unavailable>, line=<unavailable>, msg=<unavailable>) at igc.c:311:3 [opt]
>     frame #6: 0x000000010025b617 temacs`mps_lib_assert_fail(file=<unavailable>, line=<unavailable>, condition=<unavailable>) at mpsliban.c:87:3 [opt] [inlined]
>     frame #7: 0x000000010025b612 temacs`RootCreateArea(rootReturn=<unavailable>, arena=<unavailable>, rank=<unavailable>, mode=0, base=0x00000001003cd520, limit=0x00000001003cd5b4, scan_area=(temacs`scan_ambig at igc.c:1591), closure=0x0000000000000000) at root.c:294:3 [opt]
>     frame #8: 0x00000001002e903c temacs`mps_root_create_area(mps_root_o=0x00007ff7bfefe9f0, arena=0x00000001005e4000, mps_rank=0, mps_rm=0, base=0x00000001003cd520, limit=0x00000001003cd5b4, scan_area=(temacs`scan_ambig at igc.c:1591), closure=0x0000000000000000) at mpsi.c:1362:9 [opt]
>     frame #9: 0x00000001001f2fe6 temacs`root_create(gc=0x0000600000ee0000, start=0x00000001003cd520, end=0x00000001003cd5b4, rank=<unavailable>, scan=<unavailable>, closure=<unavailable>, ambig=<unavailable>, label="main-thread-getcjmp") at igc.c:2922:7 [opt]
>     frame #10: 0x00000001001f5ec5 temacs`root_create_ambig(gc=0x0000600000ee0000, start=0x00000001003cd520, end=0x00000001003cd5b4, label=<unavailable>) at igc.c:2932:10 [opt] [inlined]
>     frame #11: 0x00000001001f5e9f temacs`root_create_main_thread(gc=0x0000600000ee0000) at igc.c:2985:3 [opt] [inlined]

Ouch.  Looks like the jmp_buf on that system isn't a multiple of 8 bytes
in size.

This is easy enough to fix assuming that registers in the jmp_buf are
naturally aligned (and there is a 32-bit register of some description at
the end of the buffer; there are a few candidates). As that register
cannot contain a pointer, we can simply ignore it.

I'd like to be sure of that, but it seems that jmp_buf is defined as an
array of 37 ints on that platform, and I don't know how to figure out
its internal structure.

So my proposal is to fix root_create_ambig to ignore unaligned chunks at
the beginning or end of the region, which cannot possibly contain
naturally-aligned references.

Ah, I just see Helmut has pushed a different fix; I doubt it's the right
thing to do, but let's go with that for now.

Pip





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#79598; Package emacs. (Thu, 09 Oct 2025 18:53:02 GMT) Full text and rfc822 format available.

Message #35 received at 79598 <at> debbugs.gnu.org (full text, mbox):

From: Helmut Eller <eller.helmut <at> gmail.com>
To: Pip Cet via "Bug reports for GNU Emacs, the Swiss army knife of text
 editors" <bug-gnu-emacs <at> gnu.org>
Cc: 79598 <at> debbugs.gnu.org, Eason Huang <aqua0210 <at> foxmail.com>,
 Eli Zaretskii <eliz <at> gnu.org>, Pip Cet <pipcet <at> protonmail.com>
Subject: Re: bug#79598: 31.0.50; Failed to build feature/igc branch on macOS
Date: Thu, 09 Oct 2025 20:52:49 +0200
On Thu, Oct 09 2025, Pip Cet via "Bug reports for GNU Emacs, the Swiss army knife of text editors" wrote:

> I'd like to be sure of that, but it seems that jmp_buf is defined as an
> array of 37 ints on that platform, and I don't know how to figure out
> its internal structure.

https://github.com/apple-oss-distributions/libplatform/blob/main/src/setjmp/x86_64/_setjmp.s





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#79598; Package emacs. (Thu, 09 Oct 2025 18:54:02 GMT) Full text and rfc822 format available.

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#79598; Package emacs. (Thu, 09 Oct 2025 23:43:01 GMT) Full text and rfc822 format available.

Message #41 received at 79598 <at> debbugs.gnu.org (full text, mbox):

From: Eason Huang <aqua0210 <at> foxmail.com>
To: Helmut Eller <eller.helmut <at> gmail.com>
Cc: 79598 <at> debbugs.gnu.org, eliz <at> gnu.org, pipcet <at> protonmail.com
Subject: Re: bug#79598: 31.0.50; Failed to build feature/igc branch on macOS
Date: Fri, 10 Oct 2025 07:36:45 +0800
Helmut Eller <eller.helmut <at> gmail.com> writes:

> On Thu, Oct 09 2025, Pip Cet via "Bug reports for GNU Emacs, the Swiss army knife of text editors" wrote:
>
>> I'd like to be sure of that, but it seems that jmp_buf is defined as an
>> array of 37 ints on that platform, and I don't know how to figure out
>> its internal structure.
>
> https://github.com/apple-oss-distributions/libplatform/blob/main/src/setjmp/x86_64/_setjmp.s
>

Hello Eli and Helmut,

Thanks for the quick fix, I can build feature/igc branch successfully on
my machine now.

-- 
Eason Huang





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#79598; Package emacs. (Fri, 10 Oct 2025 07:05:01 GMT) Full text and rfc822 format available.

Message #44 received at 79598 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Pip Cet <pipcet <at> protonmail.com>
Cc: 79598 <at> debbugs.gnu.org, aqua0210 <at> foxmail.com
Subject: Re: bug#79598: 31.0.50; Failed to build feature/igc branch on macOS
Date: Fri, 10 Oct 2025 10:04:11 +0300
> Date: Thu, 09 Oct 2025 18:27:56 +0000
> From: Pip Cet <pipcet <at> protonmail.com>
> Cc: Eli Zaretskii <eliz <at> gnu.org>, 79598 <at> debbugs.gnu.org
> 
> Ouch.  Looks like the jmp_buf on that system isn't a multiple of 8 bytes
> in size.

How is that system different from what Gerd uses, to make this issue
poop just now?




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#79598; Package emacs. (Fri, 10 Oct 2025 08:52:02 GMT) Full text and rfc822 format available.

Message #47 received at 79598 <at> debbugs.gnu.org (full text, mbox):

From: Helmut Eller <eller.helmut <at> gmail.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 79598 <at> debbugs.gnu.org, Pip Cet <pipcet <at> protonmail.com>,
 aqua0210 <at> foxmail.com
Subject: Re: bug#79598: 31.0.50; Failed to build feature/igc branch on macOS
Date: Fri, 10 Oct 2025 10:51:19 +0200
On Fri, Oct 10 2025, Eli Zaretskii wrote:

>> Date: Thu, 09 Oct 2025 18:27:56 +0000
>> From: Pip Cet <pipcet <at> protonmail.com>
>> Cc: Eli Zaretskii <eliz <at> gnu.org>, 79598 <at> debbugs.gnu.org
>> 
>> Ouch.  Looks like the jmp_buf on that system isn't a multiple of 8 bytes
>> in size.
>
> How is that system different from what Gerd uses, to make this issue
> poop just now?

That system is x86_64; Gerd uses aarch64.

Helmut




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#79598; Package emacs. (Fri, 10 Oct 2025 10:14:01 GMT) Full text and rfc822 format available.

Message #50 received at 79598 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Helmut Eller <eller.helmut <at> gmail.com>
Cc: 79598 <at> debbugs.gnu.org, pipcet <at> protonmail.com, aqua0210 <at> foxmail.com
Subject: Re: bug#79598: 31.0.50; Failed to build feature/igc branch on macOS
Date: Fri, 10 Oct 2025 13:13:07 +0300
> From: Helmut Eller <eller.helmut <at> gmail.com>
> Cc: Pip Cet <pipcet <at> protonmail.com>,  79598 <at> debbugs.gnu.org,
>   aqua0210 <at> foxmail.com
> Date: Fri, 10 Oct 2025 10:51:19 +0200
> 
> On Fri, Oct 10 2025, Eli Zaretskii wrote:
> 
> >> Date: Thu, 09 Oct 2025 18:27:56 +0000
> >> From: Pip Cet <pipcet <at> protonmail.com>
> >> Cc: Eli Zaretskii <eliz <at> gnu.org>, 79598 <at> debbugs.gnu.org
> >> 
> >> Ouch.  Looks like the jmp_buf on that system isn't a multiple of 8 bytes
> >> in size.
> >
> > How is that system different from what Gerd uses, to make this issue
> > poop just now?
> 
> That system is x86_64; Gerd uses aarch64.

Thanks.  I guess we should ask more people with x86_64 macOS to try
the branch, given that (evidently) no one has until now?




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#79598; Package emacs. (Fri, 10 Oct 2025 12:04:02 GMT) Full text and rfc822 format available.

Message #53 received at 79598 <at> debbugs.gnu.org (full text, mbox):

From: Pip Cet <pipcet <at> protonmail.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 79598 <at> debbugs.gnu.org, aqua0210 <at> foxmail.com,
 Helmut Eller <eller.helmut <at> gmail.com>
Subject: Re: bug#79598: 31.0.50; Failed to build feature/igc branch on macOS
Date: Fri, 10 Oct 2025 12:03:13 +0000
"Eli Zaretskii" <eliz <at> gnu.org> writes:

>> From: Helmut Eller <eller.helmut <at> gmail.com>
>> Cc: Pip Cet <pipcet <at> protonmail.com>,  79598 <at> debbugs.gnu.org,
>>   aqua0210 <at> foxmail.com
>> Date: Fri, 10 Oct 2025 10:51:19 +0200
>>
>> On Fri, Oct 10 2025, Eli Zaretskii wrote:
>>
>> >> Date: Thu, 09 Oct 2025 18:27:56 +0000
>> >> From: Pip Cet <pipcet <at> protonmail.com>
>> >> Cc: Eli Zaretskii <eliz <at> gnu.org>, 79598 <at> debbugs.gnu.org
>> >>
>> >> Ouch.  Looks like the jmp_buf on that system isn't a multiple of 8 bytes
>> >> in size.
>> >
>> > How is that system different from what Gerd uses, to make this issue
>> > poop just now?
>>
>> That system is x86_64; Gerd uses aarch64.
>
> Thanks.  I guess we should ask more people with x86_64 macOS to try
> the branch, given that (evidently) no one has until now?

Not for a while, at least.  It might have worked before the changes to
allocate jmp_buf structures dynamically.

I don't understand how macOS, which declares jmp_buf as an array of
"int", ensures that it's aligned to a multiple of 8 (not 4) bytes, which
is necessary for MPS to work reliably. If it doesn't, we'll see weird
crashes. Maybe arrays are 8-byte aligned on that platform, even if
they're on the stack? Or LLVM special-cases jmp_buf? Or maybe that repo,
which is quite old, no longer corresponds to current macOS headers.
Perhaps LLVM special-cases jmp_buf? How will our nativecomp code know to
do the same?

On aarch64, there should at least be an immediate crash if a jmp_buf is
ever unaligned, but x86_64 usually allows unaligned access.

As for the original bug, a better fix is to make root_create_ambig
ignore partial words. Unfortunately, our API makes it hard to do so
except at the end of the root, so let's just do that:

From 3316494fd7976bee32aa5ced1c0f63deaae82789 Mon Sep 17 00:00:00 2001
From: Pip Cet <pipcet <at> protonmail.com>
Date: Fri, 10 Oct 2025 11:24:27 +0000
Subject: [PATCH] Ignore partial words when creating ambiguous roots
 (bug#79598)

* src/igc.c (word_aligned): New function.
(root_create_ambig): Cover only complete words.
---
 src/igc.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/src/igc.c b/src/igc.c
index 35e0ec3c596..5e2477a7de1 100644
--- a/src/igc.c
+++ b/src/igc.c
@@ -2925,10 +2925,21 @@ root_create (struct igc *gc, void *start, void *end, mps_rank_t rank,
   return register_root (gc, root, start, end, ambig, label);
 }
 
+static bool
+word_aligned (void *ptr)
+{
+  return ((intptr_t)ptr & (sizeof (void *) - 1)) == 0;
+}
+
 static igc_root_list *
 root_create_ambig (struct igc *gc, void *start, void *end,
 		   const char *label)
 {
+  /* Partial words cannot contain ambiguous references.  Ignore them.  */
+  while (!word_aligned (end))
+    end = (char *) end - 1;
+  igc_assert (word_aligned (start));
+  igc_assert (start < end);
   return root_create (gc, start, end, mps_rank_ambig (), scan_ambig, NULL,
 		      true, label);
 }
-- 
2.50.0





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#79598; Package emacs. (Fri, 10 Oct 2025 19:42:02 GMT) Full text and rfc822 format available.

Message #56 received at 79598 <at> debbugs.gnu.org (full text, mbox):

From: Helmut Eller <eller.helmut <at> gmail.com>
To: Pip Cet <pipcet <at> protonmail.com>
Cc: 79598 <at> debbugs.gnu.org, Eli Zaretskii <eliz <at> gnu.org>, aqua0210 <at> foxmail.com
Subject: Re: bug#79598: 31.0.50; Failed to build feature/igc branch on macOS
Date: Fri, 10 Oct 2025 21:40:49 +0200
On Fri, Oct 10 2025, Pip Cet wrote:

>  static igc_root_list *
>  root_create_ambig (struct igc *gc, void *start, void *end,
>  		   const char *label)
>  {
> +  /* Partial words cannot contain ambiguous references.  Ignore them.
> +  while (!word_aligned (end))
> +    end = (char *) end - 1;

This looks counter-productive to me.  If something is not aligned then I
want to know about it as soon as possible not ignore it as long as
possible.

Helmut




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#79598; Package emacs. (Fri, 10 Oct 2025 19:48:02 GMT) Full text and rfc822 format available.

Message #59 received at 79598 <at> debbugs.gnu.org (full text, mbox):

From: Helmut Eller <eller.helmut <at> gmail.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 79598 <at> debbugs.gnu.org, pipcet <at> protonmail.com, aqua0210 <at> foxmail.com
Subject: Re: bug#79598: 31.0.50; Failed to build feature/igc branch on macOS
Date: Fri, 10 Oct 2025 21:46:47 +0200
On Fri, Oct 10 2025, Eli Zaretskii wrote:

> Thanks.  I guess we should ask more people with x86_64 macOS to try
> the branch, given that (evidently) no one has until now?

More testing is always welcome.  I don't have the needed hardware, so I
can't do it.

One could also conclude that combination Emacs/macOS/x86_64/igc is not
popular.

Helmut




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#79598; Package emacs. (Sat, 11 Oct 2025 06:51:02 GMT) Full text and rfc822 format available.

Message #62 received at 79598 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Helmut Eller <eller.helmut <at> gmail.com>
Cc: 79598 <at> debbugs.gnu.org, pipcet <at> protonmail.com, aqua0210 <at> foxmail.com
Subject: Re: bug#79598: 31.0.50; Failed to build feature/igc branch on macOS
Date: Sat, 11 Oct 2025 09:50:10 +0300
> From: Helmut Eller <eller.helmut <at> gmail.com>
> Cc: Eli Zaretskii <eliz <at> gnu.org>,  79598 <at> debbugs.gnu.org,  aqua0210 <at> foxmail.com
> Date: Fri, 10 Oct 2025 21:40:49 +0200
> 
> On Fri, Oct 10 2025, Pip Cet wrote:
> 
> >  static igc_root_list *
> >  root_create_ambig (struct igc *gc, void *start, void *end,
> >  		   const char *label)
> >  {
> > +  /* Partial words cannot contain ambiguous references.  Ignore them.
> > +  while (!word_aligned (end))
> > +    end = (char *) end - 1;
> 
> This looks counter-productive to me.  If something is not aligned then I
> want to know about it as soon as possible not ignore it as long as
> possible.

We could have an eassert there, so that in development this will cause
assertion violation and in production it will "just work".




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#79598; Package emacs. (Sat, 11 Oct 2025 08:23:02 GMT) Full text and rfc822 format available.

Message #65 received at 79598 <at> debbugs.gnu.org (full text, mbox):

From: Pip Cet <pipcet <at> protonmail.com>
To: Helmut Eller <eller.helmut <at> gmail.com>
Cc: 79598 <at> debbugs.gnu.org, Eli Zaretskii <eliz <at> gnu.org>, aqua0210 <at> foxmail.com
Subject: Re: bug#79598: 31.0.50; Failed to build feature/igc branch on macOS
Date: Sat, 11 Oct 2025 08:22:29 +0000
"Helmut Eller" <eller.helmut <at> gmail.com> writes:

> On Fri, Oct 10 2025, Pip Cet wrote:
>
>>  static igc_root_list *
>>  root_create_ambig (struct igc *gc, void *start, void *end,
>>  		   const char *label)
>>  {
>> +  /* Partial words cannot contain ambiguous references.  Ignore them.
>> +  while (!word_aligned (end))
>> +    end = (char *) end - 1;
>
> This looks counter-productive to me.

How so? It's perfectly okay to declare an unaligned area (or one of
unaligned size, which is the only thing covered here) an ambiguous
root. Clearly those references can't live in the unaligned partial word
at the end of it, and expanding the storage area won't turn them into
new references.

> If something is not aligned then I want to know about it as soon as
> possible

Why would you care?

> not ignore it as long as possible.

"forever", in this case, since whatever problem you're seeing won't be
caused by ambiguous references being missed because there are none.

Abusing constructs like GCALIGNED, hoping they'll align sizes as well as
initial positions, and magically somehow apply to unaligned jmp_bufs
elsewhere, is very much in the "ignore it as long as possible" category,
though.  If alignof (jmp_buf) isn't at least sizeof (void *), we'll see
weird problems, some of which Emacs cannot avoid.

Pip





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#79598; Package emacs. (Sat, 11 Oct 2025 18:43:02 GMT) Full text and rfc822 format available.

Message #68 received at 79598 <at> debbugs.gnu.org (full text, mbox):

From: Helmut Eller <eller.helmut <at> gmail.com>
To: Pip Cet <pipcet <at> protonmail.com>
Cc: 79598 <at> debbugs.gnu.org, Eli Zaretskii <eliz <at> gnu.org>, aqua0210 <at> foxmail.com
Subject: Re: bug#79598: 31.0.50; Failed to build feature/igc branch on macOS
Date: Sat, 11 Oct 2025 20:41:58 +0200
On Sat, Oct 11 2025, Pip Cet wrote:

> "Helmut Eller" <eller.helmut <at> gmail.com> writes:
>
>> On Fri, Oct 10 2025, Pip Cet wrote:
>>
>>>  static igc_root_list *
>>>  root_create_ambig (struct igc *gc, void *start, void *end,
>>>  		   const char *label)
>>>  {
>>> +  /* Partial words cannot contain ambiguous references.  Ignore them.
>>> +  while (!word_aligned (end))
>>> +    end = (char *) end - 1;
>>
>> This looks counter-productive to me.
>
> How so? It's perfectly okay to declare an unaligned area (or one of
> unaligned size, which is the only thing covered here) an ambiguous
> root. Clearly those references can't live in the unaligned partial word
> at the end of it, and expanding the storage area won't turn them into
> new references.
>
>> If something is not aligned then I want to know about it as soon as
>> possible
>
> Why would you care?
>
>> not ignore it as long as possible.
>
> "forever", in this case, since whatever problem you're seeing won't be
> caused by ambiguous references being missed because there are none.
>
> Abusing constructs like GCALIGNED, hoping they'll align sizes as well as
> initial positions, and magically somehow apply to unaligned jmp_bufs
> elsewhere, is very much in the "ignore it as long as possible" category,
> though.  If alignof (jmp_buf) isn't at least sizeof (void *), we'll see
> weird problems, some of which Emacs cannot avoid.
>
> Pip

Fine. Have it your way.




This bug report was last modified 24 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.