Subject: Re: bug#56527: 28.1; Crash on macOS with magit

From: Jonathan Mitchell <[email-masked]>
Date: Wed, 13 Jul 2022 17:16:21 -0500

I built a debug version of emacs-28 with this configuration:
`configure --enable-checking=all --enable-check-lisp-object-type
 'CFLAGS=-O0 -g3' --without-png --without-rsvg`.

I was in magit repeatedly pressing the "l" key (bound to magit-log in
magit-log-mode-map) when it crashed this time. The LLDB trace is
below.

(lldb) target create "./emacs"
Current executable set to '/Users/kyle/emacs/src/emacs' (arm64).
(lldb) run
Process 77095 launched: '/Users/kyle/emacs/src/emacs' (arm64)

alloc.c:3139: Emacs fatal error: assertion failed: ! PSEUDOVEC_STRUCT
(vector, Lisp_Marker)->buffer
Process 77095 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGABRT
    frame #0: 0x00000001bdae6d98 libsystem_kernel.dylib`__pthread_kill + 8
libsystem_kernel.dylib`__pthread_kill:
->  0x1bdae6d98 <+8>:  b.lo   0x1bdae6db8               ; <+40>
    0x1bdae6d9c <+12>: pacibsp
    0x1bdae6da0 <+16>: stp    x29, x30, [sp, #-0x10]!
    0x1bdae6da4 <+20>: mov    x29, sp
Target 0: (emacs) stopped.
(lldb) xbacktrace
(unsigned char *) data = <parent failed to evaluate: parent failed to
evaluate: parent is NULL>
(unsigned char *) data = <parent failed to evaluate: parent failed to
evaluate: parent is NULL>
(unsigned char *) data = <parent failed to evaluate: parent failed to
evaluate: parent is NULL>
(unsigned char *) data = <parent failed to evaluate: parent failed to
evaluate: parent is NULL>
(unsigned char *) data = <parent failed to evaluate: parent failed to
evaluate: parent is NULL>
(unsigned char *) data = <parent failed to evaluate: parent failed to
evaluate: parent is NULL>
(unsigned char *) data = <parent failed to evaluate: parent failed to
evaluate: parent is NULL>
(unsigned char *) data = <parent failed to evaluate: parent failed to
evaluate: parent is NULL>
(unsigned char *) data = <parent failed to evaluate: parent failed to
evaluate: parent is NULL>
(unsigned char *) data = <parent failed to evaluate: parent failed to
evaluate: parent is NULL>
(unsigned char *) data = <parent failed to evaluate: parent failed to
evaluate: parent is NULL>
(lldb) bt
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGABRT
  * frame #0: 0x00000001bdae6d98 libsystem_kernel.dylib`__pthread_kill + 8
    frame #1: 0x00000001bdb1bee0 libsystem_pthread.dylib`pthread_kill + 288
    frame #2: 0x00000001bda1e680 libsystem_c.dylib`raise + 32
    frame #3: 0x0000000100478d70 emacs`terminate_due_to_signal(sig=6,
backtrace_limit=40) at emacs.c:437:3
    frame #4: 0x00000001004791f4 emacs`emacs_abort at sysdep.c:2282:3
    frame #5: 0x0000000100405488 emacs`ns_term_shutdown(sig=6) at
nsterm.m:5367:7
    frame #6: 0x00000001001a0788 emacs`shut_down_emacs(sig=6, stuff=->
) at emacs.c:2796:3
    frame #7: 0x0000000100478cf8 emacs`terminate_due_to_signal(sig=6,
backtrace_limit=2147483647) at emacs.c:420:11
    frame #8: 0x00000001004796b8 emacs`die(msg="! PSEUDOVEC_STRUCT
(vector, Lisp_Marker)->buffer", file="alloc.c", line=3139) at
alloc.c:7481:3
    frame #9: 0x0000000100289520
emacs`cleanup_vector(vector=0x0000000102931240) at alloc.c:3139:7
    frame #10: 0x0000000100288c50 emacs`sweep_vectors at alloc.c:3218:5
    frame #11: 0x0000000100281278 emacs`gc_sweep at alloc.c:7245:3
    frame #12: 0x000000010027f8c8 emacs`garbage_collect at alloc.c:6178:3
    frame #13: 0x000000010027f170 emacs`maybe_garbage_collect at alloc.c:6045:5
    frame #14: 0x00000001002d5c9c emacs`maybe_gc at lisp.h:5142:5
    frame #15: 0x00000001002da78c emacs`Ffuncall(nargs=2, args=-> ) at
eval.c:3007:3
    frame #16: 0x000000010035ead4 emacs`exec_byte_code(bytestr=-> ,
vector=-> , maxdepth=-> , args_template=-> , nargs=3, args=-> ) at
bytecode.c:632:12
    frame #17: 0x00000001002e1570
emacs`fetch_and_exec_byte_code(fun=-> , syms_left=-> , nargs=3,
args=-> ) at eval.c:3147:10
    frame #18: 0x00000001002dc668 emacs`funcall_lambda(fun=-> ,
nargs=3, arg_vector=-> ) at eval.c:3228:11
    frame #19: 0x00000001002da8dc emacs`Ffuncall(nargs=4, args=-> ) at
eval.c:3027:11
    frame #20: 0x000000010035ead4 emacs`exec_byte_code(bytestr=-> ,
vector=-> , maxdepth=-> , args_template=-> , nargs=1, args=-> ) at
bytecode.c:632:12
    frame #21: 0x00000001002e1570
emacs`fetch_and_exec_byte_code(fun=-> , syms_left=-> , nargs=1,
args=-> ) at eval.c:3147:10
    frame #22: 0x00000001002dc668 emacs`funcall_lambda(fun=-> ,
nargs=1, arg_vector=-> ) at eval.c:3228:11
    frame #23: 0x00000001002da8dc emacs`Ffuncall(nargs=2, args=-> ) at
eval.c:3027:11
    frame #24: 0x000000010035ead4 emacs`exec_byte_code(bytestr=-> ,
vector=-> , maxdepth=-> , args_template=-> , nargs=0, args=-> ) at
bytecode.c:632:12
    frame #25: 0x00000001002e1570
emacs`fetch_and_exec_byte_code(fun=-> , syms_left=-> , nargs=0,
args=-> ) at eval.c:3147:10
    frame #26: 0x00000001002dc668 emacs`funcall_lambda(fun=-> ,
nargs=0, arg_vector=-> ) at eval.c:3228:11
    frame #27: 0x00000001002da8dc emacs`Ffuncall(nargs=1, args=-> ) at
eval.c:3027:11
    frame #28: 0x000000010035ead4 emacs`exec_byte_code(bytestr=-> ,
vector=-> , maxdepth=-> , args_template=-> , nargs=0, args=-> ) at
bytecode.c:632:12
    frame #29: 0x00000001002e1570
emacs`fetch_and_exec_byte_code(fun=-> , syms_left=-> , nargs=0,
args=-> ) at eval.c:3147:10
    frame #30: 0x00000001002dc668 emacs`funcall_lambda(fun=-> ,
nargs=0, arg_vector=-> ) at eval.c:3228:11
    frame #31: 0x00000001002da8dc emacs`Ffuncall(nargs=1, args=-> ) at
eval.c:3027:11
    frame #32: 0x000000010035ead4 emacs`exec_byte_code(bytestr=-> ,
vector=-> , maxdepth=-> , args_template=-> , nargs=1, args=-> ) at
bytecode.c:632:12
    frame #33: 0x00000001002e1570
emacs`fetch_and_exec_byte_code(fun=-> , syms_left=-> , nargs=1,
args=-> ) at eval.c:3147:10
    frame #34: 0x00000001002dc668 emacs`funcall_lambda(fun=-> ,
nargs=1, arg_vector=-> ) at eval.c:3228:11
    frame #35: 0x00000001002da8dc emacs`Ffuncall(nargs=2, args=-> ) at
eval.c:3027:11
    frame #36: 0x000000010035ead4 emacs`exec_byte_code(bytestr=-> ,
vector=-> , maxdepth=-> , args_template=-> , nargs=0, args=-> ) at
bytecode.c:632:12
    frame #37: 0x00000001002e1570
emacs`fetch_and_exec_byte_code(fun=-> , syms_left=-> , nargs=0,
args=-> ) at eval.c:3147:10
    frame #38: 0x00000001002dc668 emacs`funcall_lambda(fun=-> ,
nargs=0, arg_vector=-> ) at eval.c:3228:11
    frame #39: 0x00000001002da8dc emacs`Ffuncall(nargs=1, args=-> ) at
eval.c:3027:11
    frame #40: 0x00000001002c5138
emacs`Ffuncall_interactively(nargs=1, args=-> ) at callint.c:260:32
    frame #41: 0x00000001002dc06c
emacs`funcall_subr(subr=0x00000001005022a0, numargs=1, args=-> ) at
eval.c:3078:12
    frame #42: 0x00000001002da888 emacs`Ffuncall(nargs=2, args=-> ) at
eval.c:3023:11
    frame #43: 0x00000001002d7544 emacs`Fapply(nargs=3, args=-> ) at
eval.c:2606:12
    frame #44: 0x00000001002c561c
emacs`Fcall_interactively(function=-> , record_flag=-> , keys=-> ) at
callint.c:353:36
    frame #45: 0x00000001002dc1c8
emacs`funcall_subr(subr=0x0000000100502270, numargs=3, args=-> ) at
eval.c:3103:19
    frame #46: 0x00000001002da888 emacs`Ffuncall(nargs=4, args=-> ) at
eval.c:3023:11
    frame #47: 0x000000010035ead4 emacs`exec_byte_code(bytestr=-> ,
vector=-> , maxdepth=-> , args_template=-> , nargs=1, args=-> ) at
bytecode.c:632:12
    frame #48: 0x00000001002e1570
emacs`fetch_and_exec_byte_code(fun=-> , syms_left=-> , nargs=1,
args=-> ) at eval.c:3147:10
    frame #49: 0x00000001002dc668 emacs`funcall_lambda(fun=-> ,
nargs=1, arg_vector=-> ) at eval.c:3228:11
    frame #50: 0x00000001002da8dc emacs`Ffuncall(nargs=2, args=-> ) at
eval.c:3027:11
    frame #51: 0x00000001002db908 emacs`call1(fn=-> , arg1=-> ) at
eval.c:2883:10
    frame #52: 0x00000001001a6d5c emacs`command_loop_1 at keyboard.c:1505:13
    frame #53: 0x00000001002d387c
emacs`internal_condition_case(bfun=-> , handlers=-> , hfun=-> ) at
eval.c:1450:25
    frame #54: 0x00000001001a6200 emacs`command_loop_2(handlers=-> )
at keyboard.c:1133:11
    frame #55: 0x00000001002d2a20 emacs`internal_catch(tag=-> ,
func=-> , arg=-> ) at eval.c:1181:25
    frame #56: 0x00000001001a538c emacs`command_loop at keyboard.c:1111:2
    frame #57: 0x00000001001a5198 emacs`recursive_edit_1 at keyboard.c:720:9
    frame #58: 0x00000001001a55fc emacs`Frecursive_edit at keyboard.c:803:3
    frame #59: 0x00000001001a2138 emacs`main(argc=1,
argv=0x000000016fdff8c8) at emacs.c:2358:3
    frame #60: 0x0000000100b8908c dyld`start + 520