Subject: bug#78444: 30.1; Crash in GC (vector_marked_p)

From: George P <[email-masked]>
Date: Fri, 27 Jun 2025 13:34:35 -0400

I quickly got hit with an eassert error:

Thread 1 "emacs" received signal SIGABRT, Aborted.
0x0000155550f95d1c in __pthread_kill_implementation () from
/nix/store/b8iyqbryrgpmpyxwhxvq8346iy8989pj-glibc-2.40-66/lib/libc.so.6
(gdb) bt full
#0  0x0000155550f95d1c in __pthread_kill_implementation () from
/nix/store/b8iyqbryrgpmpyxwhxvq8346iy8989pj-glibc-2.40-66/lib/libc.so.6
No symbol table info available.
#1  0x0000155550f3d406 in raise () from
/nix/store/b8iyqbryrgpmpyxwhxvq8346iy8989pj-glibc-2.40-66/lib/libc.so.6
No symbol table info available.
#2  0x000000000055d058 in terminate_due_to_signal (sig=sig@entry=6,
backtrace_limit=backtrace_limit@entry=2147483647) at emacs.c:480
No locals.
#3  0x00000000005c9d0f in die (msg=msg@entry=0x6de4a6 "PROCESSP (a)",
file=file@entry=0x6de49c "process.h", line=line@entry=224) at alloc.c:8082
No locals.
#4  0x000000000064ac0a in XPROCESS (a=a@entry=0x1608a6d5) at
/build/source/src/process.h:224
No locals.
#5  0x000000000065698c in wait_reading_process_output
(time_limit=<optimized out>, nsecs=nsecs@entry=0, read_kbd=-1,
do_display=do_display@entry=true, wait_for_cell=wait_for_cell@entry=0x0,
wait_proc=wait_proc@entry=0x0, just_wait_proc=0) at process.c:5640
        adaptive_nsecs = 0
        tls_nfds = <optimized out>
        tls_available = {fds_bits = {0 <repeats 16 times>}}
        process_skipped = false
        wrapped = <optimized out>
        channel_start = <optimized out>
        child_fd = <optimized out>
        last_read_channel = 77
        channel = 104
        nfds = <optimized out>
        Available = {fds_bits = {124601399811210536, 48946122590086, 0,
1293025946894336, 0 <repeats 12 times>}}
        Writeok = {fds_bits = {0 <repeats 16 times>}}
        check_write = true
        check_delay = 7
        no_avail = false
        xerrno = 11
        proc = 0x1608a6d5
        timeout = {tv_sec = 0, tv_nsec = 0}
        end_time = <optimized out>
        timer_delay = <optimized out>
        got_output_end_time = <optimized out>
        MINIMUM = MINIMUM
        TIMEOUT = TIMEOUT
        FOREVER = FOREVER
        wait = TIMEOUT
        got_some_output = -1
        prev_wait_proc_nbytes_read = 0
        retry_for_async = false
        count = <optimized out>
        now = <optimized out>
#6  0x000000000042e29d in sit_for (timeout=<optimized out>,
reading=reading@entry=true, display_option=display_option@entry=1) at
dispnew.c:6334
        sec = 30
        nsec = 0
        do_display = true
        curbuf_eq_winbuf = true
        nbytes = <optimized out>
#7  0x0000000000571596 in read_char (commandflag=1, map=map@entry=0x151c1a43,
prev_event=0x0, used_mouse_menu=used_mouse_menu@entry=0x7fffffffe0bb,
end_time=end_time@entry=0x0) at keyboard.c:2923
        tem0 = <optimized out>
        timeout = 30
        count1 = <optimized out>
        delay_level = <optimized out>
        buffer_size = <optimized out>
--Type <RET> for more, q to quit, c to continue without paging--
        c = 0x0
        local_getcjmp = {{__jmpbuf = {15314689, -699694258234688859, 0,
115828560, 15314689, 0, 699736925183572645, -699737622314845531},
__mask_was_saved = 0, __saved_mask = {__val = {6154657, 23456138665496,
6179254, 114125264, 6154140, 98800080, 6179787, 23456147011547, 111186179,
111186163, 5751620, 0,
                4624168144, 0, 329200853, 0}}}}
        save_jump = {{__jmpbuf = {0, 0, 0, 0, 0, 0, 0, 0}, __mask_was_saved
= 0, __saved_mask = {__val = {0 <repeats 16 times>}}}}
        tem = <optimized out>
        save = <optimized out>
        previous_echo_area_message = 0x0
        also_record = 0x0
        reread = false
        recorded = false
        polling_stopped_here = false
        orig_kboard = 0x6e76750
        jmpcount = <optimized out>
#8  0x0000000000572b49 in read_key_sequence
(keybuf=keybuf@entry=0x7fffffffe1e0,
prompt=prompt@entry=0x0, dont_downcase_last=dont_downcase_last@entry=false,
can_return_switch_frame=can_return_switch_frame@entry=true,
fix_current_buffer=fix_current_buffer@entry=true,
prevent_redisplay=prevent_redisplay@entry=false,
    disable_text_conversion_p=false) at keyboard.c:10743
        interrupted_kboard = 0x6e76750
        interrupted_frame = 0x6f33890
        key = <optimized out>
        used_mouse_menu = false
        echo_local_start = 0
        last_real_key_start = 0
        keys_local_start = 0
        new_binding = <optimized out>
        count = <optimized out>
        t = 0
        echo_start = 0
        keys_start = 0
        current_binding = 0x151c1a43
        first_unbound = 31
        mock_input = 0
        used_mouse_menu_history = {false <repeats 30 times>}
        fkey = {parent = 0x1960e83, map = 0x1960e83, start = 0, end = 0}
        keytran = {parent = 0x15554f4ec51b, map = 0x15554f4ec51b, start =
0, end = 0}
        indec = {parent = 0x1960ec3, map = 0x1960ec3, start = 0, end = 0}
        shift_translated = false
        delayed_switch_frame = 0x0
        original_uppercase = 0x7fffffffe100
        original_uppercase_position = -1
        disabled_conversion = false
        starting_buffer = 0x139f34d0
        fake_prefixed_keys = 0x0
        first_event = 0x0
        second_event = <optimized out>
#9  0x000000000057414a in command_loop_1 () at keyboard.c:1429
        cmd = <optimized out>
        keybuf = {0x1fe, 0x139f34d5, 0xfa2, 0x5e548a
<set_default_internal+544>, 0x7fffffffe260, 0x2, 0x30, 0x139f34d5, 0x0,
0x5f770b <do_one_unbind+377>, 0x60, 0x0, 0x0, 0x0, 0x0, 0x5f921e
<unbind_to+105>, 0xb, 0x111c0, 0x30, 0x139f34d5, 0x7bc0,
0x5a1274cca7484900, 0xe9af40 <globals>, 0x120d4e93, 0x60,
          0x567429 <cmd_error+382>, 0x0, 0x5a1274cca7484900, 0x60,
0x15554ede7dd3}
        i = <optimized out>
        last_pt = <optimized out>
        prev_modiff = 639
        prev_buffer = 0x139f34d0
#10 0x00000000005f7fc4 in internal_condition_case (bfun=bfun@entry=0x573ef2
<command_loop_1>, handlers=handlers@entry=0x90, hfun=hfun@entry=0x5672ab
<cmd_error>) at eval.c:1613
        val = <optimized out>
--Type <RET> for more, q to quit, c to continue without paging--
        c = 0xfb7c60
#11 0x000000000055ec49 in command_loop_2 (handlers=handlers@entry=0x90) at
keyboard.c:1168
        val = <optimized out>
#12 0x00000000005f7ea8 in internal_catch (tag=tag@entry=0x122d0,
func=func@entry=0x55ec2f <command_loop_2>, arg=arg@entry=0x90) at
eval.c:1292
        val = <optimized out>
        c = 0x1048f40
#13 0x000000000055ec06 in command_loop () at keyboard.c:1146
No locals.
#14 0x0000000000566dec in recursive_edit_1 () at keyboard.c:754
        count = <optimized out>
        val = <optimized out>
#15 0x000000000056717b in Frecursive_edit () at keyboard.c:837
        count = <optimized out>
        buffer = <optimized out>
#16 0x000000000055e48a in main (argc=<optimized out>, argv=<optimized out>)
at emacs.c:2635
        stack_bottom_variable = 0x155553f77458 <_gnutls_lib_state>
        old_argc = <optimized out>
        dump_file = 0x0
        no_loadup = false
        junk = 0x0
        dname_arg = 0x0
        ch_to_dir = 0x0
        original_pwd = 0x0
        dump_mode = <optimized out>
        skip_args = 1
        temacs = 0x0
        attempt_load_pdump = <optimized out>
        only_version = false
        rlim = {rlim_cur = 18446744073709551615, rlim_max =
18446744073709551615}
        lc_all = <optimized out>
        sockfd = -1
        module_assertions = <optimized out>