Subject: bug#68557: 30.0.50; "--enable-checking=yes,glyphs" leads to "alloc.c:3446: Emacs fatal error: assertion failed: h->index_size > 1"

From: Gregor Zattler <[email-masked]>
Date: Thu, 18 Jan 2024 09:52:58 +0100

Hi Eli,
* Eli Zaretskii <[email-masked]> [2024-01-18; 08:13 +02]:
> Thanks.  Please say "make V=1" (but without -jN option that runs
> several Make commands in parallel), and wait for the first command
> that fails due to the above fatal error.  Then run the same command
> under GDB,

the last lines wihtout -j are:

TZ=UTC0 touch -t 197001010000 emacs-lisp/byte-opt.elc
'../src/bootstrap-emacs' -batch --no-site-file --no-site-lisp  \
-l comp -f batch-byte-compile emacs-lisp/bytecomp.el
TZ=UTC0 touch -t 197001010000 emacs-lisp/bytecomp.elc
'../src/bootstrap-emacs' -batch --no-site-file --no-site-lisp  \
-l comp -f batch-byte-compile emacs-lisp/comp.el

alloc.c:3446: Emacs fatal error: assertion failed: h->index_size > 1
make[3]: *** [Makefile:325: emacs-lisp/comp.elc] Aborted

I therefore started it in gdb like so:

grfz@no:~/src/my-next-emacs/lisp$ gdb ../src/bootstrap-emacs -ex 'set logging file /tmp/gdb.txt' -ex 'set logging on' -ex 'set logging file /tmp/gdb.txt' -ex 'run  -batch --no-site-file --no-site-lisp -l comp -f batch-byte-compile emacs-lisp/comp.el'

> and when Emacs aborts and GDB kicks in, please type
> at the GDB prompt:
>   (gdb) thread apply all bt
>
> and post here everything GDB outputs as result.

This then is the content of /tmp/gdb.txt:

Starting program: /home/grfz/src/my-next-emacs/src/bootstrap-emacs -batch --no-site-file --no-site-lisp -l comp -f batch-byte-compile emacs-lisp/comp.el
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

Program received signal SIGABRT, Aborted.
0x00007ffff3d4ad3c in ?? () from /lib/x86_64-linux-gnu/libc.so.6

Thread 1 (Thread 0x7ffff2db1380 (LWP 37429) "bootstrap-emacs"):
#0  0x00007ffff3d4ad3c in  () at /lib/x86_64-linux-gnu/libc.so.6
#1  0x00007ffff3cfbf32 in raise () at /lib/x86_64-linux-gnu/libc.so.6
#2  0x00005555555a99d5 in terminate_due_to_signal (sig=sig@entry=6, backtrace_limit=backtrace_limit@entry=2147483647) at ./src/emacs.c:479
#3  0x00005555555b0f75 in die (msg=msg@entry=0x5555558dff6c "h->index_size > 1", file=file@entry=0x5555558dfc5a "alloc.c", line=line@entry=3446) at ./src/alloc.c:8052
#4  0x00005555555b19dd in cleanup_vector (vector=<optimized out>) at ./src/alloc.c:3446
#5  sweep_vectors () at ./src/alloc.c:3526
#6  0x00005555557a5ab7 in gc_sweep () at ./src/alloc.c:7848
#7  garbage_collect () at ./src/alloc.c:6663
#8  0x00005555557a6909 in maybe_garbage_collect () at ./src/alloc.c:6498
#9  0x00005555557d67c5 in maybe_gc () at ./src/lisp.h:5687
#10 eval_sub (form=..., form@entry=...) at ./src/eval.c:2429
#11 0x00005555557d6a65 in eval_sub (form=...) at ./src/eval.c:2492
#12 0x00005555557d6ffd in Fprogn (body=...) at ./src/eval.c:432
#13 0x00005555557d9419 in FletX (args=...) at ./src/eval.c:972
#14 0x00005555557d6c42 in eval_sub (form=...) at ./src/eval.c:2476
#15 0x00005555557d6ffd in Fprogn (body=...) at ./src/eval.c:432
#16 0x00005555557d730b in funcall_lambda (fun=..., nargs=5, arg_vector=0x7fffffff9f48) at ./src/eval.c:3287
#17 0x00005555557d2c90 in Ffuncall (nargs=nargs@entry=6, args=args@entry=0x7fffffff9f40) at ./src/eval.c:3022
#18 0x00005555557d3129 in Fapply (nargs=<optimized out>, args=0x7fffffffa000) at ./src/eval.c:2693
#19 0x00005555557d6ac7 in eval_sub (form=...) at ./src/eval.c:2497
#20 0x00005555557d6c42 in eval_sub (form=...) at ./src/eval.c:2476
#21 0x00005555557d6ffd in Fprogn (body=...) at ./src/eval.c:432
#22 0x00005555557d7d13 in Fcond (args=...) at ./src/eval.c:412
#23 0x00005555557d6c42 in eval_sub (form=...) at ./src/eval.c:2476
#24 0x00005555557d6ffd in Fprogn (body=...) at ./src/eval.c:432
#25 0x00005555557d86b4 in Flet (args=...) at ./src/eval.c:1040
#26 0x00005555557d6c42 in eval_sub (form=...) at ./src/eval.c:2476
#27 0x00005555557d6ffd in Fprogn (body=...) at ./src/eval.c:432
#28 0x00005555557d6c42 in eval_sub (form=...) at ./src/eval.c:2476
#29 0x00005555557d6ffd in Fprogn (body=...) at ./src/eval.c:432
#30 0x00005555557d6c42 in eval_sub (form=...) at ./src/eval.c:2476
#31 0x00005555557d6ffd in Fprogn (body=...) at ./src/eval.c:432
#32 0x00005555557d9419 in FletX (args=...) at ./src/eval.c:972
#33 0x00005555557d6c42 in eval_sub (form=...) at ./src/eval.c:2476
#34 0x00005555557d6ffd in Fprogn (body=...) at ./src/eval.c:432
#35 0x00005555557d7d13 in Fcond (args=...) at ./src/eval.c:412
#36 0x00005555557d6c42 in eval_sub (form=...) at ./src/eval.c:2476
#37 0x00005555557d6ffd in Fprogn (body=...) at ./src/eval.c:432
#38 0x00005555557d730b in funcall_lambda (fun=..., nargs=2, arg_vector=0x7fffffffa960) at ./src/eval.c:3287
#39 0x00005555557d8bbe in apply_lambda (fun=..., fun@entry=..., args=..., count=..., count@entry=...) at ./src/eval.c:3157
#40 0x00005555557d6587 in eval_sub (form=...) at ./src/eval.c:2615
#41 0x00005555557d7e44 in Fsetq (args=...) at ./src/eval.c:479
#42 0x00005555557d6c42 in eval_sub (form=...) at ./src/eval.c:2476
#43 0x00005555557d6cfe in eval_sub (form=...) at ./src/eval.c:2513
#44 0x00005555557d6cfe in eval_sub (form=..., form@entry=...) at ./src/eval.c:2513
#45 0x00005555557d89f9 in Fwhile (args=...) at ./src/eval.c:1058
#46 0x00005555557d6c42 in eval_sub (form=...) at ./src/eval.c:2476
#47 0x00005555557d6ffd in Fprogn (body=...) at ./src/eval.c:432
#48 0x00005555557d9419 in FletX (args=...) at ./src/eval.c:972
#49 0x00005555557d6c42 in eval_sub (form=...) at ./src/eval.c:2476
#50 0x00005555557d6ffd in Fprogn (body=...) at ./src/eval.c:432
#51 0x00005555557d730b in funcall_lambda (fun=..., nargs=2, arg_vector=0x7fffee5ff478) at ./src/eval.c:3287
#52 0x000055555582acc6 in exec_byte_code (fun=..., args_template=37429, nargs=2, args=0x7fffee5ff478) at ./src/bytecode.c:817
#53 0x00005555557d2c90 in Ffuncall (nargs=nargs@entry=2, args=args@entry=0x7fffffffb140) at ./src/eval.c:3022
#54 0x00005555557df67e in mapcar1 (leni=leni@entry=20, vals=vals@entry=0x7fffffffb1a0, fn=fn@entry=..., seq=..., seq@entry=...) at ./src/fns.c:3048
#55 0x00005555557e6a8c in Fmapcar (function=..., sequence=...) at ./src/fns.c:3168
#56 0x00005555557d533d in funcall_subr (subr=0x555555ed30a0 <Smapcar>, numargs=2, args=<optimized out>) at ./src/eval.c:3092
#57 0x000055555582bcb3 in exec_byte_code (fun=..., args_template=37429, nargs=2, args=0x7fffee5ff3e8) at ./src/lisp.h:2210
#58 0x00005555557d2c90 in Ffuncall (nargs=nargs@entry=1, args=args@entry=0x7fffffffb410) at ./src/eval.c:3022
#59 0x00005555557d5529 in call0 (fn=...) at ./src/lisp.h:3300
#60 Fhandler_bind_1 (nargs=<optimized out>, args=0x7fffee5ff2c0) at ./src/eval.c:1403
#61 0x000055555582bcb3 in exec_byte_code (fun=..., args_template=37429, nargs=3, args=0x7fffee5ff2c0) at ./src/lisp.h:2210
#62 0x00005555557d2c90 in Ffuncall (nargs=1, args=0x7fffffffb530) at ./src/eval.c:3022
#63 0x00005555557d6ac7 in eval_sub (form=...) at ./src/eval.c:2497
#64 0x00005555557d6ffd in Fprogn (body=...) at ./src/eval.c:432
#65 0x00005555557d6c42 in eval_sub (form=...) at ./src/eval.c:2476
#66 0x00005555557d6ffd in Fprogn (body=...) at ./src/eval.c:432
#67 0x00005555557d7d13 in Fcond (args=...) at ./src/eval.c:412
#68 0x00005555557d6c42 in eval_sub (form=...) at ./src/eval.c:2476
#69 0x00005555557d6ffd in Fprogn (body=...) at ./src/eval.c:432
#70 0x00005555557d9419 in FletX (args=...) at ./src/eval.c:972
#71 0x00005555557d6c42 in eval_sub (form=...) at ./src/eval.c:2476
#72 0x00005555557d6ffd in Fprogn (body=..., body@entry=...) at ./src/eval.c:432
#73 0x00005555557d89f1 in prog_ignore (body=...) at ./src/eval.c:443
#74 Fwhile (args=...) at ./src/eval.c:1061
#75 0x00005555557d6c42 in eval_sub (form=...) at ./src/eval.c:2476
#76 0x00005555557d6ffd in Fprogn (body=...) at ./src/eval.c:432
#77 0x00005555557d9419 in FletX (args=...) at ./src/eval.c:972
#78 0x00005555557d6c42 in eval_sub (form=...) at ./src/eval.c:2476
#79 0x00005555557d6ffd in Fprogn (body=...) at ./src/eval.c:432
#80 0x00005555557d6c42 in eval_sub (form=...) at ./src/eval.c:2476
#81 0x00005555557d6c42 in eval_sub (form=...) at ./src/eval.c:2476
#82 0x00005555557d6ffd in Fprogn (body=...) at ./src/eval.c:432
#83 0x00005555557d86b4 in Flet (args=...) at ./src/eval.c:1040
#84 0x00005555557d6c42 in eval_sub (form=...) at ./src/eval.c:2476
#85 0x00005555557d6ffd in Fprogn (body=...) at ./src/eval.c:432
#86 0x00005555557d86b4 in Flet (args=...) at ./src/eval.c:1040
#87 0x00005555557d6c42 in eval_sub (form=...) at ./src/eval.c:2476
#88 0x00005555557d6ffd in Fprogn (body=...) at ./src/eval.c:432
#89 0x00005555557d730b in funcall_lambda (fun=..., nargs=1, arg_vector=0x7fffffffc170) at ./src/eval.c:3287
#90 0x00005555557d8bbe in apply_lambda (fun=..., fun@entry=..., args=..., count=..., count@entry=...) at ./src/eval.c:3157
#91 0x00005555557d6587 in eval_sub (form=...) at ./src/eval.c:2615
#92 0x00005555557d6ffd in Fprogn (body=...) at ./src/eval.c:432
#93 0x00005555557d86b4 in Flet (args=...) at ./src/eval.c:1040
#94 0x00005555557d6c42 in eval_sub (form=...) at ./src/eval.c:2476
#95 0x00005555557d6ffd in Fprogn (body=...) at ./src/eval.c:432
#96 0x00005555557d730b in funcall_lambda (fun=..., nargs=0, arg_vector=0x7fffffffc4f0) at ./src/eval.c:3287
#97 0x00005555557d8bbe in apply_lambda (fun=..., fun@entry=..., args=..., count=..., count@entry=...) at ./src/eval.c:3157
#98 0x00005555557d6587 in eval_sub (form=...) at ./src/eval.c:2615
#99 0x00005555557d962a in Funwind_protect (args=...) at ./src/eval.c:1321
#100 0x00005555557d6c42 in eval_sub (form=...) at ./src/eval.c:2476
#101 0x00005555557d6ffd in Fprogn (body=...) at ./src/eval.c:432
#102 0x00005555557d86b4 in Flet (args=...) at ./src/eval.c:1040
#103 0x00005555557d6c42 in eval_sub (form=...) at ./src/eval.c:2476
#104 0x00005555557d6ffd in Fprogn (body=...) at ./src/eval.c:432
#105 0x00005555557d6c42 in eval_sub (form=...) at ./src/eval.c:2476
#106 0x00005555557d6ffd in Fprogn (body=...) at ./src/eval.c:432
#107 0x00005555557d730b in funcall_lambda (fun=..., nargs=0, arg_vector=0x7fffffffca30) at ./src/eval.c:3287
#108 0x00005555557d8bbe in apply_lambda (fun=..., fun@entry=..., args=..., count=..., count@entry=...) at ./src/eval.c:3157
#109 0x00005555557d6587 in eval_sub (form=..., form@entry=...) at ./src/eval.c:2615
#110 0x00005555557d9d44 in Feval (form=..., lexical=...) at ./src/eval.c:2389
#111 0x000055555571d637 in top_level_2 () at ./src/lisp.h:1173
#112 0x00005555557d0bd7 in internal_condition_case (bfun=bfun@entry=0x55555571d5b0 <top_level_2>, handlers=..., handlers@entry=..., hfun=hfun@entry=0x555555728d20 <cmd_error>) at ./src/eval.c:1537
#113 0x000055555571d6d3 in top_level_1 (ignore=..., ignore@entry=...) at ./src/keyboard.c:1185
#114 0x00005555557d0b11 in internal_catch (tag=..., func=func@entry=0x55555571d6a0 <top_level_1>, arg=..., arg@entry=...) at ./src/eval.c:1217
#115 0x000055555571d17f in command_loop () at ./src/keyboard.c:1134
#116 0x000055555572843a in recursive_edit_1 () at ./src/keyboard.c:744
#117 0x0000555555728a94 in Frecursive_edit () at ./src/keyboard.c:827
#118 0x00005555555c5b4a in main (argc=9, argv=0x7fffffffcf18) at ./src/emacs.c:2624

HTH, Gregor