unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#71289: 30.0.50; cmcheckmagic aborts when tty_write_glyphs writes "Garbage collecting..." in some cases
@ 2024-05-31 10:18 Daniel Clemente
  2024-05-31 11:17 ` Eli Zaretskii
                   ` (2 more replies)
  0 siblings, 3 replies; 34+ messages in thread
From: Daniel Clemente @ 2024-05-31 10:18 UTC (permalink / raw)
  To: 71289

Running emacs --fg-daemon under gdb, and TTY emacs, with glyph debug
enabled. Using my full .emacs, which includes things like (setq
garbage-collection-messages t).

I reproduced this 2 times:

1. I opened 2 or 3 emacsclient (inside urxvt) and started resizing the
X window of one of them, and using it a bit (open org agenda). I admit
I used weird X window sizes that created a 1x1 terminal, but this
still worked. After some time playing with the X window size (but
without opening/closing X windows), this assert failed.
I was using urxvt with no customizations (i.e. I was seeing a scroll
bar etc.). In this case I used icewm (non-tiled window manager) with
no customizations.

See BT1 below.


2. I just ran emacs --fg-daemon inside gdb, and I opened my first TTY
frame, in a normal window of normal size; nothing weird (no 1x1 frames
etc). It immediately crashed; this never happened before. I'm using
wmii, urxvt (many customizations), and a command like urxvt -e
emacsclient '-nw' '-e' '(dired "~")' &

See BT2 below.


Maybe it's because of trying the display the "Garbage
collecting...done" message in a small window? (BT1) or in window which
isn't fully initialized yet? (BT2)



------- BT1 follows:

Loading erc (native compiled elisp)...
Garbage collecting...
Garbage collecting...done
Loading erc (native compiled elisp)...done
Garbage collecting...
Garbage collecting...done
Loading ‘~/.emacs’: unescaped character literals ‘?(’, ‘?)’, ‘?[’,
‘?]’ detected, ‘?\(’, ‘?\)’, ‘?\[’, ‘?\]’ expected!
[Detaching after vfork from child process 7427]
Starting Emacs daemon.
[Detaching after vfork from child process 7428]
[Detaching after vfork from child process 7429]
Garbage collecting...
Garbage collecting...done
[Detaching after vfork from child process 7434]
Package starttls is deprecated
Package tls is deprecated
Package longlines is deprecated
Package cl is deprecated
[Detaching after vfork from child process 7437]
Garbage collecting...
Garbage collecting...done

Breakpoint 1, terminate_due_to_signal (sig=6, backtrace_limit=40) at emacs.c:443
443  signal (sig, SIG_DFL);

(gdb) bt
#0  terminate_due_to_signal (sig=6, backtrace_limit=40) at emacs.c:443
#1  0x00005555556bd21b in emacs_abort () at sysdep.c:2391
#2  0x00005555556690c8 in cmcheckmagic (tty=0x555559440cd0) at cm.c:117
#3  0x000055555566d5da in tty_write_glyphs (f=0x555559804e78,
string=0x55555a7b2b20, len=89) at term.c:819
#4  0x000055555567796e in write_glyphs (f=0x555559804e78,
string=0x55555a7b1a70, len=89) at terminal.c:163
#5  0x00005555555918dd in update_frame_line (f=0x555559804e78, vpos=4,
updating_menu_p=false) at dispnew.c:5318
#6  0x00005555555909c8 in update_frame_1 (f=0x555559804e78,
force_p=true, inhibit_id_p=false, set_cursor_p=true,
updating_menu_p=false) at dispnew.c:4977
#7  0x000055555558cf32 in update_frame (f=0x555559804e78,
force_p=true, inhibit_hairy_id_p=false) at dispnew.c:3343
#8  0x00005555555cf5a2 in redisplay_internal () at xdisp.c:17464
#9  0x00005555555cfec8 in redisplay_preserve_echo_area (from_where=11)
at xdisp.c:17743
#10 0x00005555557edd9c in wait_reading_process_output (time_limit=0,
nsecs=0, read_kbd=-1, do_display=true, wait_for_cell=XIL(0),
wait_proc=0x0, just_wait_proc=0) at process.c:5585
#11 0x0000555555697f8c in kbd_buffer_get_event (kbp=0x7fffffffd168,
used_mouse_menu=0x7fffffffd7ef, end_time=0x0) at keyboard.c:4079
#12 0x0000555555693a41 in read_event_from_main_queue (end_time=0x0,
local_getcjmp=0x7fffffffd5b0, used_mouse_menu=0x7fffffffd7ef) at
keyboard.c:2330
#13 0x0000555555693d45 in read_decoded_event_from_main_queue
(end_time=0x0, local_getcjmp=0x7fffffffd5b0, prev_event=XIL(0),
used_mouse_menu=0x7fffffffd7ef) at keyboard.c:2394
#14 0x0000555555695664 in read_char (commandflag=1,
map=XIL(0x55555a1f4743), prev_event=XIL(0),
used_mouse_menu=0x7fffffffd7ef, end_time=0x0) at keyboard.c:3015
#15 0x00005555556a67ff in read_key_sequence (keybuf=0x7fffffffda00,
prompt=XIL(0), dont_downcase_last=false, can_return_switch_frame=true,
fix_current_buffer=true, prevent_redisplay=false,
    disable_text_conversion_p=false) at keyboard.c:10728
#16 0x0000555555690ee7 in command_loop_1 () at keyboard.c:1429
#17 0x000055555576c6cf in internal_condition_case (bfun=0x555555690ab8
<command_loop_1>, handlers=XIL(0x90), hfun=0x55555568ff63 <cmd_error>)
at eval.c:1613
#18 0x0000555555690696 in command_loop_2 (handlers=XIL(0x90)) at keyboard.c:1168
#19 0x000055555576bafc in internal_catch (tag=XIL(0xfc60),
func=0x55555569066c <command_loop_2>, arg=XIL(0x90)) at eval.c:1292
#20 0x0000555555690628 in command_loop () at keyboard.c:1146
#21 0x000055555568fa05 in recursive_edit_1 () at keyboard.c:754
#22 0x000055555568fc31 in Frecursive_edit () at keyboard.c:837
#23 0x000055555568b698 in main (argc=2, argv=0x7fffffffe028) at emacs.c:2621

Lisp Backtrace:
"redisplay_internal (C function)" (0x0)
(gdb)







(gdb) bt full

#0  terminate_due_to_signal (sig=6, backtrace_limit=40) at emacs.c:443
No locals.
#1  0x00005555556bd21b in emacs_abort () at sysdep.c:2391
No locals.
#2  0x00005555556690c8 in cmcheckmagic (tty=0x555559440cd0) at cm.c:117
No locals.
#3  0x000055555566d5da in tty_write_glyphs (f=0x555559804e78,
string=0x55555a7b2b20, len=89) at term.c:819
        conversion_buffer = 0x555559a45390 "Garbage
collecting...done", ' ' <repeats 104 times>, '-' <repeats 71 times>...
        coding = 0x555558e09500
        n = 89
        stringlen = 0
        tty = 0x555559440cd0
#4  0x000055555567796e in write_glyphs (f=0x555559804e78,
string=0x55555a7b1a70, len=89) at terminal.c:163
No locals.
#5  0x00005555555918dd in update_frame_line (f=0x555559804e78, vpos=4,
updating_menu_p=false) at dispnew.c:5318
        obody = 0x0
        nbody = 0x55555a7b1a70
        op1 = 0x400000011
        op2 = 0x5555596adb19
        np1 = 0x4
        nend = 0x55555a7b2b20
        tem = 21845
        osp = 0
        nsp = 0
        begmatch = 4
        endmatch = 0
        olen = 0
        nlen = 89
        current_matrix = 0x5555597e6f10
        desired_matrix = 0x5555597e6ca0
        current_row = 0x55555a1d03f0
        desired_row = 0x555559f184f0
        must_write_whole_line_p = true
        write_spaces_p = true
        colored_spaces_p = true
#6  0x00005555555909c8 in update_frame_1 (f=0x555559804e78,
force_p=true, inhibit_id_p=false, set_cursor_p=true,
updating_menu_p=false) at dispnew.c:4977
        current_matrix = 0x5555597e6f10
        desired_matrix = 0x5555597e6ca0
        i = 0
        pause_p = 85
        preempt_count = 17
#7  0x000055555558cf32 in update_frame (f=0x555559804e78,
force_p=true, inhibit_hairy_id_p=false) at dispnew.c:3343
        paused_p = false
        root_window = 0x55555a5513d0
#8  0x00005555555cf5a2 in redisplay_internal () at xdisp.c:17464
        gcscrollbars = true
        f_redisplay_flag = true
        f = 0x555559804e78
        w = 0x555559805098
        sw = 0x555559805098
        fr = 0x555559804e78
        pending = false
        must_finish = true
        match_p = true
        tlbufpos = {
--Type <RET> for more, q to quit, c to continue without paging--

          charpos = 144,
          bytepos = 146
        }
        tlendpos = {
          charpos = 0,
          bytepos = 0
        }
        number_of_visible_frames = 3
        sf = 0x555559804e78
        polling_stopped_here = true
        tail = XIL(0x55555a151ba3)
        frame = XIL(0x555559804e7d)
        MAX_HSCROLL_RETRIES = MAX_HSCROLL_RETRIES
        hscroll_retries = 0
        MAX_GARBAGED_FRAME_RETRIES = MAX_GARBAGED_FRAME_RETRIES
        garbaged_frame_retries = 0
        consider_all_windows_p = true
        update_miniwindow_p = false
        count = {
          bytes = 192
        }
#9  0x00005555555cfec8 in redisplay_preserve_echo_area (from_where=11)
at xdisp.c:17743
        count = {
          bytes = 160
        }
#10 0x00005555557edd9c in wait_reading_process_output (time_limit=0,
nsecs=0, read_kbd=-1, do_display=true, wait_for_cell=XIL(0),
wait_proc=0x0, just_wait_proc=0) at process.c:5585
        process_skipped = false
        wrapped = false
        channel_start = 21845
        child_fd = 6
        last_read_channel = 9
        channel = 1024
        nfds = -1
        Available = {
          fds_bits = {1904, 0 <repeats 15 times>}
        }
        Writeok = {
          fds_bits = {0 <repeats 16 times>}
        }
        check_write = true
        check_delay = 0
        no_avail = true
        xerrno = 4
        proc = XIL(0xa00000fff)
        timeout = {
          tv_sec = 100000,
          tv_nsec = 0
        }
        end_time = {
          tv_sec = 0,
          tv_nsec = 9
        }
        timer_delay = {
          tv_sec = 0,
          tv_nsec = 177869602

--Type <RET> for more, q to quit, c to continue without paging--

        }
        got_output_end_time = {
          tv_sec = 1717171357,
          tv_nsec = 936340967
        }
        MINIMUM = MINIMUM
        TIMEOUT = TIMEOUT
        FOREVER = FOREVER
        wait = FOREVER
        got_some_output = -1
        prev_wait_proc_nbytes_read = 0
        retry_for_async = false
        count = {
          bytes = 128
        }
        now = {
          tv_sec = 0,
          tv_nsec = -1
        }
#11 0x0000555555697f8c in kbd_buffer_get_event (kbp=0x7fffffffd168,
used_mouse_menu=0x7fffffffd7ef, end_time=0x0) at keyboard.c:4079
        do_display = true
        obj = make_fixnum(192346546)
        str = XIL(0x66586ddf)
#12 0x0000555555693a41 in read_event_from_main_queue (end_time=0x0,
local_getcjmp=0x7fffffffd5b0, used_mouse_menu=0x7fffffffd7ef) at
keyboard.c:2330
        c = XIL(0)
        save_jump = {{
            __jmpbuf = {0, 0, 0, 0, 0, 0, 0, 0},
            __mask_was_saved = 0,
            __saved_mask = {
              __val = {0 <repeats 16 times>}
            }
          }}
        kb = 0x55555957d730
        count = {
          bytes = 96
        }
#13 0x0000555555693d45 in read_decoded_event_from_main_queue
(end_time=0x0, local_getcjmp=0x7fffffffd5b0, prev_event=XIL(0),
used_mouse_menu=0x7fffffffd7ef) at keyboard.c:2394
        nextevt = XIL(0)
        frame = 0x2
        terminal = 0x100000000
        events = {XIL(0x555555f45d00), XIL(0), XIL(0),
XIL(0x7fffffffd340), make_fixnum(23456248378305), XIL(0x55699747),
XIL(0x7fffffffd370), XIL(0x5555556909b3), make_fixnum(10737418240),
          XIL(0x55555898e163), XIL(0), XIL(0), XIL(0x7fffffffd3a0),
make_fixnum(23456248388673), XIL(0), XIL(0x1ffffd3a0)}
        n = 0
#14 0x0000555555695664 in read_char (commandflag=1,
map=XIL(0x55555a1f4743), prev_event=XIL(0),
used_mouse_menu=0x7fffffffd7ef, end_time=0x0) at keyboard.c:3015
        c = XIL(0)
        local_getcjmp = {{
            __jmpbuf = {0, 8694036146570251371, 0, 140737488347200,
93824996002072, 140737354125344, 8694036146555571307,
3310777819825425515},
            __mask_was_saved = 0,
            __saved_mask = {
              __val = {140737488344592, 93824993651716,
93825043254451, 140737488344752, 93824993673997, 93825002659072, 0, 0,
140737488344656, 93824994408529, 1475744592, 140737488344752,
93824994453182,
                93825072580403, 96, 140737488344752}
            }
          }}
        save_jump = {{
            __jmpbuf = {0, 0, 0, 0, 0, 0, 0, 0},

            __mask_was_saved = 0,
            __saved_mask = {
              __val = {0 <repeats 16 times>}
            }
          }}
        tem = XIL(0x30)
        save = XIL(0x5555577c8650)
        previous_echo_area_message = XIL(0)
        also_record = XIL(0)
        reread = false
        recorded = false
        polling_stopped_here = true
        orig_kboard = 0x55555957d730
        jmpcount = {
          bytes = 96
        }
#15 0x00005555556a67ff in read_key_sequence (keybuf=0x7fffffffda00,
prompt=XIL(0), dont_downcase_last=false, can_return_switch_frame=true,
fix_current_buffer=true, prevent_redisplay=false,
    disable_text_conversion_p=false) at keyboard.c:10728
        interrupted_kboard = 0x55555957d730
        interrupted_frame = 0x555559804e78
        key = XIL(0x30)
        used_mouse_menu = false
        echo_local_start = 0
        last_real_key_start = 0
        keys_local_start = 0
        new_binding = XIL(0)
        count = {
          bytes = 96
        }
        t = 0
        echo_start = 0
        keys_start = 0
        current_binding = XIL(0x55555a1f4743)
        first_unbound = 31
        mock_input = 0
        used_mouse_menu_history = {false <repeats 30 times>}
        fkey = {
          parent = XIL(0x55555a152853),
          map = XIL(0x55555a152853),
          start = 0,
          end = 0
        }
        keytran = {
          parent = XIL(0x7ffff210cd0b),
          map = XIL(0x7ffff210cd0b),
          start = 0,
          end = 0
        }
        indec = {
          parent = XIL(0x55555a152863),
          map = XIL(0x55555a152863),
          start = 0,
          end = 0
        }
        shift_translated = false


        delayed_switch_frame = XIL(0)
        original_uppercase = XIL(0)
        original_uppercase_position = -1
        starting_buffer = 0x55555945d930
        fake_prefixed_keys = XIL(0)
        first_event = XIL(0)
        second_event = XIL(0)
#16 0x0000555555690ee7 in command_loop_1 () at keyboard.c:1429
        cmd = XIL(0x2aaa9ba1c080)
        keybuf = {XIL(0x55555a1f3963), make_fixnum(91),
make_fixnum(60), XIL(0x7ffff2133eb0), XIL(0x7fffffffdad0),
XIL(0xed30), XIL(0x55555945d930), XIL(0), XIL(0), XIL(0x555555f54a30),
XIL(0x5555557440a7),
          XIL(0x30), XIL(0x7fffffffdaf0), XIL(0x55555574b151),
XIL(0x55555945d935), XIL(0x200000000), XIL(0x30), XIL(0xed30),
XIL(0x7ffff18d8a15), XIL(0x7ffff2133eb0), XIL(0x555555767ec4),
          XIL(0x7ffff18d8a15), XIL(0x3), XIL(0xed30),
XIL(0x555555f54a30), XIL(0xed30), XIL(0x7fffffffdaf0),
XIL(0x555555f54a30), XIL(0x555555767851), XIL(0x30)}
        i = 1
        last_pt = 144
        prev_modiff = 108
        prev_buffer = 0x55555945d930
#17 0x000055555576c6cf in internal_condition_case (bfun=0x555555690ab8
<command_loop_1>, handlers=XIL(0x90), hfun=0x55555568ff63 <cmd_error>)
at eval.c:1613
        val = make_fixnum(23456248378305)
        c = 0x5555560383a0
#18 0x0000555555690696 in command_loop_2 (handlers=XIL(0x90)) at keyboard.c:1168
        val = make_fixnum(0)
#19 0x000055555576bafc in internal_catch (tag=XIL(0xfc60),
func=0x55555569066c <command_loop_2>, arg=XIL(0x90)) at eval.c:1292
        val = XIL(0x7fffffffdd10)
        c = 0x5555560bfda0
#20 0x0000555555690628 in command_loop () at keyboard.c:1146
No locals.
#21 0x000055555568fa05 in recursive_edit_1 () at keyboard.c:754
        count = {
          bytes = 32
        }
        val = make_fixnum(23456248612809)
#22 0x000055555568fc31 in Frecursive_edit () at keyboard.c:837
        count = {
          bytes = 0
        }
        buffer = XIL(0)
#23 0x000055555568b698 in main (argc=2, argv=0x7fffffffe028) at emacs.c:2621
        stack_bottom_variable = 0x0
        old_argc = 2
        dump_file = 0x0
        no_loadup = false
        junk = 0x0
        dname_arg = 0x0
        ch_to_dir = 0x0
        original_pwd = 0x0
        dump_mode = 0x0
        skip_args = 1
        temacs = 0x0
        attempt_load_pdump = true
        only_version = false
        rlim = {
          rlim_cur = 10022912,
          rlim_max = 18446744073709551615
        }
        lc_all = 0x0

        sockfd = -1
        module_assertions = false
(gdb)



(gdb) cont

Continuing.
Fatal error 6: Aborted
Backtrace:
/opt/dc/emacs/bin/emacs(+0x1691ad)[0x5555556bd1ad]
/opt/dc/emacs/bin/emacs(+0x1344a8)[0x5555556884a8]
/opt/dc/emacs/bin/emacs(+0x16921b)[0x5555556bd21b]
/opt/dc/emacs/bin/emacs(+0x1150c8)[0x5555556690c8]
/opt/dc/emacs/bin/emacs(+0x1195da)[0x55555566d5da]
/opt/dc/emacs/bin/emacs(+0x12396e)[0x55555567796e]
/opt/dc/emacs/bin/emacs(+0x3d8dd)[0x5555555918dd]
/opt/dc/emacs/bin/emacs(+0x3c9c8)[0x5555555909c8]
/opt/dc/emacs/bin/emacs(+0x38f32)[0x55555558cf32]
/opt/dc/emacs/bin/emacs(+0x7b5a2)[0x5555555cf5a2]
/opt/dc/emacs/bin/emacs(+0x7bec8)[0x5555555cfec8]
/opt/dc/emacs/bin/emacs(+0x299d9c)[0x5555557edd9c]
/opt/dc/emacs/bin/emacs(+0x143f8c)[0x555555697f8c]
/opt/dc/emacs/bin/emacs(+0x13fa41)[0x555555693a41]
/opt/dc/emacs/bin/emacs(+0x13fd45)[0x555555693d45]
/opt/dc/emacs/bin/emacs(+0x141664)[0x555555695664]
/opt/dc/emacs/bin/emacs(+0x1527ff)[0x5555556a67ff]
/opt/dc/emacs/bin/emacs(+0x13cee7)[0x555555690ee7]
/opt/dc/emacs/bin/emacs(+0x2186cf)[0x55555576c6cf]
/opt/dc/emacs/bin/emacs(+0x13c696)[0x555555690696]
/opt/dc/emacs/bin/emacs(+0x217afc)[0x55555576bafc]
/opt/dc/emacs/bin/emacs(+0x13c628)[0x555555690628]
/opt/dc/emacs/bin/emacs(+0x13ba05)[0x55555568fa05]
/opt/dc/emacs/bin/emacs(+0x13bc31)[0x55555568fc31]
/opt/dc/emacs/bin/emacs(+0x137698)[0x55555568b698]
/lib/x86_64-linux-gnu/libc.so.6(+0x2724a)[0x7ffff544624a]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0x85)[0x7ffff5446305]
/opt/dc/emacs/bin/emacs(+0x30831)[0x555555584831]

Program received signal SIGABRT, Aborted.
__pthread_kill_implementation (threadid=<optimized out>,
signo=signo@entry=6, no_tid=no_tid@entry=0) at
./nptl/pthread_kill.c:44
44 ./nptl/pthread_kill.c: No such file or directory.



------- BT2 follows:
(gdb) bt
#0  terminate_due_to_signal (sig=6, backtrace_limit=40) at emacs.c:443
#1  0x00005555556bd753 in emacs_abort () at sysdep.c:2391
#2  0x0000555555669600 in cmcheckmagic (tty=0x555559add090) at cm.c:117
#3  0x000055555566db12 in tty_write_glyphs (f=0x555559656eb8,
string=0x555559b01640, len=89) at term.c:819
#4  0x0000555555677ea6 in write_glyphs (f=0x555559656eb8,
string=0x555559b00590, len=89) at terminal.c:163
#5  0x000055555559190c in update_frame_line (f=0x555559656eb8,
vpos=23, updating_menu_p=false) at dispnew.c:5319
#6  0x0000555555590b4f in update_frame_1 (f=0x555559656eb8,
force_p=true, inhibit_id_p=true, set_cursor_p=true,
    updating_menu_p=false) at dispnew.c:5006
#7  0x000055555558cf61 in update_frame (f=0x555559656eb8,
force_p=true, inhibit_hairy_id_p=true) at dispnew.c:3344
#8  0x00005555555c9e6b in echo_area_display (update_frame_p=true) at
xdisp.c:13450
#9  0x00005555555c5e25 in message3_nolog (m=XIL(0x555559ced434)) at
xdisp.c:12348
#10 0x00005555555c5ed1 in message1_nolog (m=0x55555586f2d6 "Garbage
collecting...") at xdisp.c:12376
#11 0x00005555557323f2 in garbage_collect () at alloc.c:6587
#12 0x0000555555732189 in maybe_garbage_collect () at alloc.c:6507
#13 0x0000555555769407 in maybe_gc () at /w/emacs/src/lisp.h:5927
#14 0x00005555557709e8 in Ffuncall (nargs=2, args=0x7fffffff6c10) at eval.c:3088
#15 0x0000555555782d94 in mapcar1 (leni=5, vals=0x7fffffff6ca0,
fn=XIL(0x5555594a6cad), seq=XIL(0x555559cf4e23)) at fns.c:3346
#16 0x000055555578350b in Fmapcar (function=XIL(0x5555594a6cad),
sequence=XIL(0x555559cf4e23)) at fns.c:3466
#17 0x00007fffefe942ec in
F7265676578702d6f70742d67726f7570_regexp_opt_group_0 ()
   from /opt/dc/emacs/lib/emacs/30.0.50/native-lisp/30.0.50-3670981c/preloaded/regexp-opt-d2355c94-055998f3.eln
#18 0x0000555555770dbb in funcall_subr (subr=0x5555565608d8,
numargs=3, args=0x7fffffff7078) at eval.c:3165
#19 0x0000555555770728 in funcall_general (fun=XIL(0x5555565608dd),
numargs=3, args=0x7fffffff7078) at eval.c:3040
#20 0x0000555555770a31 in Ffuncall (nargs=4, args=0x7fffffff7070) at eval.c:3093
#21 0x00007fffefe93dd9 in
F7265676578702d6f70742d67726f7570_regexp_opt_group_0 ()
   from /opt/dc/emacs/lib/emacs/30.0.50/native-lisp/30.0.50-3670981c/preloaded/regexp-opt-d2355c94-055998f3.eln
#22 0x0000555555770dbb in funcall_subr (subr=0x5555565608d8,
numargs=1, args=0x7fffffff72d8) at eval.c:3165
#23 0x0000555555770728 in funcall_general (fun=XIL(0x5555565608dd),
numargs=1, args=0x7fffffff72d8) at eval.c:3040
#24 0x0000555555770a31 in Ffuncall (nargs=2, args=0x7fffffff72d0) at eval.c:3093
#25 0x00007fffefe94496 in
F7265676578702d6f70742d67726f7570_regexp_opt_group_0 ()
   from /opt/dc/emacs/lib/emacs/30.0.50/native-lisp/30.0.50-3670981c/preloaded/regexp-opt-d2355c94-055998f3.eln
#26 0x0000555555770dbb in funcall_subr (subr=0x5555565608d8,
numargs=1, args=0x7fffffff7578) at eval.c:3165
#27 0x0000555555770728 in funcall_general (fun=XIL(0x5555565608dd),
numargs=1, args=0x7fffffff7578) at eval.c:3040
#28 0x0000555555770a31 in Ffuncall (nargs=2, args=0x7fffffff7570) at eval.c:3093
#29 0x00007fffefe94153 in
F7265676578702d6f70742d67726f7570_regexp_opt_group_0 ()
   from /opt/dc/emacs/lib/emacs/30.0.50/native-lisp/30.0.50-3670981c/preloaded/regexp-opt-d2355c94-055998f3.eln
#30 0x0000555555770dbb in funcall_subr (subr=0x5555565608d8,
numargs=1, args=0x7fffffff77f8) at eval.c:3165
#31 0x0000555555770728 in funcall_general (fun=XIL(0x5555565608dd),
numargs=1, args=0x7fffffff77f8) at eval.c:3040
#32 0x0000555555770a31 in Ffuncall (nargs=2, args=0x7fffffff77f0) at eval.c:3093
#33 0x00007fffefe94153 in
F7265676578702d6f70742d67726f7570_regexp_opt_group_0 ()
   from /opt/dc/emacs/lib/emacs/30.0.50/native-lisp/30.0.50-3670981c/preloaded/regexp-opt-d2355c94-055998f3.eln
[…]

(gdb) xbacktrace
"Automatic GC" (0x0)
0x594a6ca8 PVEC_CLOSURE
"regexp-opt-group" (0xffff7078)
"regexp-opt-group" (0xffff72d8)
"regexp-opt-group" (0xffff7578)
"regexp-opt-group" (0xffff77f8)
"regexp-opt-group" (0xffff7a78)
"regexp-opt-group" (0xffff7cc8)
"regexp-opt-group" (0xffff7f78)
"regexp-opt-group" (0xffff81d8)
"regexp-opt-group" (0xffff8458)
"regexp-opt" (0xffff84e0)
"concat" (0xffff8690)
"list" (0xffff87f0)
"eval" (0xffff8a48)
"font-lock-compile-keyword" (0xffff8c98)
"font-lock-compile-keywords" (0xffff9018)
"font-lock-add-keywords" (0xffff90e0)
"dired-filetype-set-omit2-face" (0xffff92b0)
"dired-filetype-face-mode-func" (0xffff9670)
"run-hooks" (0xffff99b8)
"apply" (0xffff99b0)
"run-mode-hooks" (0xffff9b68)
"dired-mode" (0xffff9f98)
"dired-internal-noselect" (0xffffa218)
"dired-noselect" (0xffffa3b8)
"dired" (0xffffa420)
"progn" (0xffffa5e0)
"eval" (0xffffa838)
"server-eval-and-print" (0xffffaa10)
"server-execute" (0xf05ff038)
0x5952ea38 PVEC_CLOSURE
"server-execute-continuation" (0xffffb320)
"server--process-filter" (0xffffb508)
"server-process-pending-filters" (0xffffb690)
"server-process-filter" (0xffffb808)

(gdb) bt full
#0  terminate_due_to_signal (sig=6, backtrace_limit=40) at emacs.c:443
No locals.
#1  0x00005555556bd753 in emacs_abort () at sysdep.c:2391
No locals.
#2  0x0000555555669600 in cmcheckmagic (tty=0x555559add090) at cm.c:117
No locals.
#3  0x000055555566db12 in tty_write_glyphs (f=0x555559656eb8,
string=0x555559b01640, len=89) at term.c:819
        conversion_buffer = 0x555559630960 "   All   (4,0)      (Lisp
Interaction hs Helm Projectile yas E"
        coding = 0x55555955e1a0
        n = 62
        stringlen = 0
        tty = 0x555559add090
#4  0x0000555555677ea6 in write_glyphs (f=0x555559656eb8,
string=0x555559b00590, len=89) at terminal.c:163
No locals.
#5  0x000055555559190c in update_frame_line (f=0x555559656eb8,
vpos=23, updating_menu_p=false) at dispnew.c:5319
        obody = 0x0
        nbody = 0x555559b00590
        op1 = 0x555559cedb0d
        op2 = 0x555559b026f0
        np1 = 0x7fffffff
        nend = 0x555559b01640
        tem = 21845
        osp = 32767
        nsp = -241485384
        begmatch = 0
        endmatch = 0
        olen = 0
        nlen = 89
        current_matrix = 0x55555962dbf0
        desired_matrix = 0x5555597edb70
        current_row = 0x555559b22568
        desired_row = 0x555559b20d28
        must_write_whole_line_p = true
        write_spaces_p = true
        colored_spaces_p = true
#6  0x0000555555590b4f in update_frame_1 (f=0x555559656eb8,
force_p=true, inhibit_id_p=true, set_cursor_p=true,
    updating_menu_p=false) at dispnew.c:5006
        current_matrix = 0x55555962dbf0
        desired_matrix = 0x5555597edb70
        i = 23
        pause_p = 85
        preempt_count = 17
#7  0x000055555558cf61 in update_frame (f=0x555559656eb8,
force_p=true, inhibit_hairy_id_p=true) at dispnew.c:3344
        paused_p = false
        root_window = 0x555559195518
#8  0x00005555555c9e6b in echo_area_display (update_frame_p=true) at
xdisp.c:13450
        n = 1
        mini_window = XIL(0x555559355f3d)
        w = 0x555559355f38
        f = 0x555559656eb8
        window_height_changed_p = false
        sf = 0x555559656eb8
#9  0x00005555555c5e25 in message3_nolog (m=XIL(0x555559ced434)) at
xdisp.c:12348
        mini_window = XIL(0x555559355f3d)
        frame = XIL(0x555559656ebd)
        f = 0x555559656eb8
        sf = 0x555559656eb8
#10 0x00005555555c5ed1 in message1_nolog (m=0x55555586f2d6 "Garbage
collecting...") at xdisp.c:12376
No locals.
--Type <RET> for more, q to quit, c to continue without paging--
#11 0x00005555557323f2 in garbage_collect () at alloc.c:6587
        tail = XIL(0)
        buffer = XIL(0x5555597db9a5)
        stack_top_variable = 0 '\000'
        message_p = false
        count = {
          bytes = 1856
        }
        start = {
          tv_sec = 1717148909,
          tv_nsec = 458539226
        }
        tot_before = 18446744073709551615
        visitor = {
          visit = 0x7fffffff6aa0,
          data = 0x555555731fab <consing_threshold+116>
        }
#12 0x0000555555732189 in maybe_garbage_collect () at alloc.c:6507
No locals.
#13 0x0000555555769407 in maybe_gc () at /w/emacs/src/lisp.h:5927
No locals.
#14 0x00005555557709e8 in Ffuncall (nargs=2, args=0x7fffffff6c10) at eval.c:3088
        count = {
          bytes = 1824
        }
        val = XIL(0x7fffffff6b40)
#15 0x0000555555782d94 in mapcar1 (leni=5, vals=0x7fffffff6ca0,
fn=XIL(0x5555594a6cad), seq=XIL(0x555559cf4e23)) at fns.c:3346
        dummy = XIL(0x7fffffff6c90)
        i = 0
        tail = XIL(0x555559cf4e23)
#16 0x000055555578350b in Fmapcar (function=XIL(0x5555594a6cad),
sequence=XIL(0x555559cf4e23)) at fns.c:3466
        sa_avail = 16344
        sa_count = {
          bytes = 1824
        }
        leni = 5
        args = 0x7fffffff6ca0
        nmapped = 93825006193085
        ret = make_fixnum(0)
#17 0x00007fffefe942ec in
F7265676578702d6f70742d67726f7570_regexp_opt_group_0 ()
   from /opt/dc/emacs/lib/emacs/30.0.50/native-lisp/30.0.50-3670981c/preloaded/regexp-opt-d2355c94-055998f3.eln
No symbol table info available.
#18 0x0000555555770dbb in funcall_subr (subr=0x5555565608d8,
numargs=3, args=0x7fffffff7078) at eval.c:3165
        argbuf = {XIL(0x5555565608dd), XIL(0x7fffffff6ec0),
XIL(0x555555f45d00), XIL(0), XIL(0), XIL(0x12ffff6ee0),
          XIL(0x5555565608dd), XIL(0x7fffffff6ef0)}
        a = 0x7fffffff7078
        maxargs = 3
        fun = XIL(0x5555565608dd)
#19 0x0000555555770728 in funcall_general (fun=XIL(0x5555565608dd),
numargs=3, args=0x7fffffff7078) at eval.c:3040
        original_fun = XIL(0x664550)
#20 0x0000555555770a31 in Ffuncall (nargs=4, args=0x7fffffff7070) at eval.c:3093
        count = {
          bytes = 1792
        }
        val = XIL(0x555559ceac51)
#21 0x00007fffefe93dd9 in
F7265676578702d6f70742d67726f7570_regexp_opt_group_0 ()
   from /opt/dc/emacs/lib/emacs/30.0.50/native-lisp/30.0.50-3670981c/preloaded/regexp-opt-d2355c94-055998f3.eln
No symbol table info available.
#22 0x0000555555770dbb in funcall_subr (subr=0x5555565608d8,
numargs=1, args=0x7fffffff72d8) at eval.c:3165
[…]



(gdb) cont
Continuing.
Fatal error 6: Aborted
Backtrace:
/opt/dc/emacs/bin/emacs(+0x1696e5)[0x5555556bd6e5]
/opt/dc/emacs/bin/emacs(+0x1349e0)[0x5555556889e0]
/opt/dc/emacs/bin/emacs(+0x169753)[0x5555556bd753]
/opt/dc/emacs/bin/emacs(+0x115600)[0x555555669600]
/opt/dc/emacs/bin/emacs(+0x119b12)[0x55555566db12]
/opt/dc/emacs/bin/emacs(+0x123ea6)[0x555555677ea6]
/opt/dc/emacs/bin/emacs(+0x3d90c)[0x55555559190c]
/opt/dc/emacs/bin/emacs(+0x3cb4f)[0x555555590b4f]
/opt/dc/emacs/bin/emacs(+0x38f61)[0x55555558cf61]
/opt/dc/emacs/bin/emacs(+0x75e6b)[0x5555555c9e6b]
/opt/dc/emacs/bin/emacs(+0x71e25)[0x5555555c5e25]
/opt/dc/emacs/bin/emacs(+0x71ed1)[0x5555555c5ed1]
/opt/dc/emacs/bin/emacs(+0x1de3f2)[0x5555557323f2]
/opt/dc/emacs/bin/emacs(+0x1de189)[0x555555732189]
/opt/dc/emacs/bin/emacs(+0x215407)[0x555555769407]
/opt/dc/emacs/bin/emacs(+0x21c9e8)[0x5555557709e8]
/opt/dc/emacs/bin/emacs(+0x22ed94)[0x555555782d94]
/opt/dc/emacs/bin/emacs(+0x22f50b)[0x55555578350b]
/opt/dc/emacs/lib/emacs/30.0.50/native-lisp/30.0.50-3670981c/preloaded/regexp-opt-d2355c94-055998f3.eln(F7265676578702d6f70742d67726f7570_regexp_opt_group_0+0x9dc)[0x7fffefe942ec]
/opt/dc/emacs/bin/emacs(+0x21cdbb)[0x555555770dbb]
/opt/dc/emacs/bin/emacs(+0x21c728)[0x555555770728]
/opt/dc/emacs/bin/emacs(+0x21ca31)[0x555555770a31]
/opt/dc/emacs/lib/emacs/30.0.50/native-lisp/30.0.50-3670981c/preloaded/regexp-opt-d2355c94-055998f3.eln(F7265676578702d6f70742d67726f7570_regexp_opt_group_0+0x4c9)[0x7fffefe93dd9]
/opt/dc/emacs/bin/emacs(+0x21cdbb)[0x555555770dbb]
/opt/dc/emacs/bin/emacs(+0x21c728)[0x555555770728]
/opt/dc/emacs/bin/emacs(+0x21ca31)[0x555555770a31]
/opt/dc/emacs/lib/emacs/30.0.50/native-lisp/30.0.50-3670981c/preloaded/regexp-opt-d2355c94-055998f3.eln(F7265676578702d6f70742d67726f7570_regexp_opt_group_0+0xb86)[0x7fffefe94496]
/opt/dc/emacs/bin/emacs(+0x21cdbb)[0x555555770dbb]
/opt/dc/emacs/bin/emacs(+0x21c728)[0x555555770728]
/opt/dc/emacs/bin/emacs(+0x21ca31)[0x555555770a31]
/opt/dc/emacs/lib/emacs/30.0.50/native-lisp/30.0.50-3670981c/preloaded/regexp-opt-d2355c94-055998f3.eln(F7265676578702d6f70742d67726f7570_regexp_opt_group_0+0x843)[0x7fffefe94153]
/opt/dc/emacs/bin/emacs(+0x21cdbb)[0x555555770dbb]
/opt/dc/emacs/bin/emacs(+0x21c728)[0x555555770728]
/opt/dc/emacs/bin/emacs(+0x21ca31)[0x555555770a31]
/opt/dc/emacs/lib/emacs/30.0.50/native-lisp/30.0.50-3670981c/preloaded/regexp-opt-d2355c94-055998f3.eln(F7265676578702d6f70742d67726f7570_regexp_opt_group_0+0x843)[0x7fffefe94153]
/opt/dc/emacs/bin/emacs(+0x21cdbb)[0x555555770dbb]
/opt/dc/emacs/bin/emacs(+0x21c728)[0x555555770728]
/opt/dc/emacs/bin/emacs(+0x21ca31)[0x555555770a31]
/opt/dc/emacs/lib/emacs/30.0.50/native-lisp/30.0.50-3670981c/preloaded/regexp-opt-d2355c94-055998f3.eln(F7265676578702d6f70742d67726f7570_regexp_opt_group_0+0x843)[0x7fffefe94153]
/opt/dc/emacs/bin/emacs(+0x21cdbb)[0x555555770dbb]
/opt/dc/emacs/bin/emacs(+0x21c728)[0x555555770728]
...

Program received signal SIGABRT, Aborted.
__pthread_kill_implementation (threadid=<optimized out>,
signo=signo@entry=6, no_tid=no_tid@entry=0)
    at ./nptl/pthread_kill.c:44
44 ./nptl/pthread_kill.c: No such file or directory.
(gdb) cont
Continuing.

Program terminated with signal SIGABRT, Aborted.
The program no longer exists.




------ build info

In GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu) of 2024-05-29 built on sonn
Repository revision: d9512da49514623ef3e35524dc894c06f2c0ce20
Repository branch: master
System Description: Devuan GNU/Linux 5 (daedalus)

Configured using:
 'configure --prefix=/opt/dc/emacs/ --without-dbus --with-tiff=no --without-tiff
 --without-libsystemd --without-dbus --with-mailutils
--with-native-compilation --with-x-toolkit=no
 --without-imagemagick --without-xft --without-harfbuzz
--without-freetype --without-libotf
 --without-xwidgets --without-xpm --without-jpeg --without-gif
--without-png --without-webp
 --without-rsvg --without-cairo --without-x
--enable-checking=yes,glyphs 'CFLAGS=-g3 -O0''

Configured features:
GMP GNUTLS LCMS2 LIBSELINUX LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY
PDUMPER SECCOMP SOUND SQLITE3
THREADS XIM ZLIB

Important settings:
  value of $LANG: en_US.UTF-8
  value of $XMODIFIERS: @im=SCIM
  locale-coding-system: utf-8-unix

Major mode: Dired by name

Minor modes in effect:
  xterm-mouse-mode: t
  erc-track-mode: t
  erc-services-mode: t
  erc-ring-mode: t
  erc-netsplit-mode: t
  erc-menu-mode: t
  erc-match-mode: t
  erc-irccontrols-mode: t
  erc-noncommands-mode: t
  erc-readonly-mode: t
  erc-button-mode: t
  erc-fill-mode: t
  erc-stamp-mode: t
  erc-autojoin-mode: t
  erc-networks-mode: t
  gnus-dired-mode: t
  savehist-mode: t
  recentf-mode: t
  hexl-follow-ascii: t
  helm-mode: t
  helm-minibuffer-history-mode: t
  async-bytecomp-package-mode: t
  global-git-commit-mode: t
  server-mode: t
  jdecomp-mode: t
  projectile-mode: t
  global-semantic-decoration-mode: t
  global-semanticdb-minor-mode: t
  global-semantic-show-unmatched-syntax-mode: -1
  semantic-mode: t
  rcirc-track-minor-mode: t
  jabber-activity-mode: t
  yas-global-mode: t
  yas-minor-mode: t
  unpackaged/org-export-html-with-useful-ids-mode: t
  minibuffer-depth-indicate-mode: t
  global-so-long-mode: t
  display-time-mode: t
  global-hl-line-mode: t
  xclip-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  show-paren-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  minibuffer-regexp-mode: t
  buffer-read-only: t
  column-number-mode: t
  line-number-mode: t
  indent-tabs-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
/w/helm/helm-files hides /home/dc/.emacs.d/elpa/helm-20191101.641/helm-files
/w/helm/helm-comint hides /home/dc/.emacs.d/elpa/helm-20191101.641/helm-comint
/w/helm/helm-elisp-package hides
/home/dc/.emacs.d/elpa/helm-20191101.641/helm-elisp-package
/w/helm/helm-external hides
/home/dc/.emacs.d/elpa/helm-20191101.641/helm-external
/w/helm/helm-easymenu hides
/home/dc/.emacs.d/elpa/helm-20191101.641/helm-easymenu
/w/helm/helm-font hides /home/dc/.emacs.d/elpa/helm-20191101.641/helm-font
/w/helm/helm-imenu hides /home/dc/.emacs.d/elpa/helm-20191101.641/helm-imenu
/w/helm/helm-x-files hides /home/dc/.emacs.d/elpa/helm-20191101.641/helm-x-files
/w/helm/helm-regexp hides /home/dc/.emacs.d/elpa/helm-20191101.641/helm-regexp
/w/helm/helm-net hides /home/dc/.emacs.d/elpa/helm-20191101.641/helm-net
/w/helm/helm-ring hides /home/dc/.emacs.d/elpa/helm-20191101.641/helm-ring
/w/helm/helm-find hides /home/dc/.emacs.d/elpa/helm-20191101.641/helm-find
/w/helm/helm-misc hides /home/dc/.emacs.d/elpa/helm-20191101.641/helm-misc
/w/helm/helm-occur hides /home/dc/.emacs.d/elpa/helm-20191101.641/helm-occur
/w/helm/helm-sys hides /home/dc/.emacs.d/elpa/helm-20191101.641/helm-sys
/w/helm/helm-types hides /home/dc/.emacs.d/elpa/helm-20191101.641/helm-types
/w/helm/helm-elisp hides /home/dc/.emacs.d/elpa/helm-20191101.641/helm-elisp
/w/helm/helm-adaptive hides
/home/dc/.emacs.d/elpa/helm-20191101.641/helm-adaptive
/w/helm/helm-shell hides /home/dc/.emacs.d/elpa/helm-20191101.641/helm-shell
/w/helm/helm-id-utils hides
/home/dc/.emacs.d/elpa/helm-20191101.641/helm-id-utils
/w/helm/helm-bookmark hides
/home/dc/.emacs.d/elpa/helm-20191101.641/helm-bookmark
/w/helm/helm-mode hides /home/dc/.emacs.d/elpa/helm-20191101.641/helm-mode
/w/helm/helm-eshell hides /home/dc/.emacs.d/elpa/helm-20191101.641/helm-eshell
/w/helm/helm-dabbrev hides /home/dc/.emacs.d/elpa/helm-20191101.641/helm-dabbrev
/w/helm/helm-grep hides /home/dc/.emacs.d/elpa/helm-20191101.641/helm-grep
/w/helm/helm-color hides /home/dc/.emacs.d/elpa/helm-20191101.641/helm-color
/w/helm/helm-help hides /home/dc/.emacs.d/elpa/helm-20191101.641/helm-help
/w/helm/helm-buffers hides /home/dc/.emacs.d/elpa/helm-20191101.641/helm-buffers
/w/helm/helm-locate hides /home/dc/.emacs.d/elpa/helm-20191101.641/helm-locate
/w/helm/helm-tags hides /home/dc/.emacs.d/elpa/helm-20191101.641/helm-tags
/w/helm/helm-autoloads hides
/home/dc/.emacs.d/elpa/helm-20191101.641/helm-autoloads
/w/helm/helm-info hides /home/dc/.emacs.d/elpa/helm-20191101.641/helm-info
/w/helm/helm-semantic hides
/home/dc/.emacs.d/elpa/helm-20191101.641/helm-semantic
/w/helm/helm-config hides /home/dc/.emacs.d/elpa/helm-20191101.641/helm-config
/w/helm/helm-command hides /home/dc/.emacs.d/elpa/helm-20191101.641/helm-command
/w/helm/helm-utils hides /home/dc/.emacs.d/elpa/helm-20191101.641/helm-utils
/w/helm/helm-eval hides /home/dc/.emacs.d/elpa/helm-20191101.641/helm-eval
/w/helm/helm-for-files hides
/home/dc/.emacs.d/elpa/helm-20191101.641/helm-for-files
/w/helm/helm-man hides /home/dc/.emacs.d/elpa/helm-20191101.641/helm-man
/w/helm/helm-multi-match hides
/home/dc/.emacs.d/elpa/helm-core-20191031.1931/helm-multi-match
/w/helm/helm-lib hides /home/dc/.emacs.d/elpa/helm-core-20191031.1931/helm-lib
/w/helm/helm-source hides
/home/dc/.emacs.d/elpa/helm-core-20191031.1931/helm-source
/w/helm/helm hides /home/dc/.emacs.d/elpa/helm-core-20191031.1931/helm
/home/dc/.emacs.d/elpa/transient-20220717.1713/transient hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/transient
/w/org-mode/lisp/org-fold-core hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/org-fold-core
/w/org-mode/lisp/ob-haskell hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/ob-haskell
/w/org-mode/lisp/org-plot hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/org-plot
/w/org-mode/lisp/ox-icalendar hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/ox-icalendar
/w/org-mode/lisp/org-footnote hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/org-footnote
/w/org-mode/lisp/org-archive hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/org-archive
/w/org-mode/lisp/ob-exp hides /opt/dc/emacs/share/emacs/30.0.50/lisp/org/ob-exp
/w/org-mode/lisp/ob-octave hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/ob-octave
/w/org-mode/lisp/oc-natbib hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/oc-natbib
/w/org-mode/lisp/org-num hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/org-num
/w/org-mode/lisp/ob-processing hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/ob-processing
/w/org-mode/lisp/org-mouse hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/org-mouse
/w/org-mode/lisp/ob-core hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/ob-core
/w/org-mode/lisp/ob-awk hides /opt/dc/emacs/share/emacs/30.0.50/lisp/org/ob-awk
/w/org-mode/lisp/org-table hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/org-table
/w/org-mode/lisp/org-lint hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/org-lint
/w/org-mode/lisp/oc-basic hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/oc-basic
/w/org-mode/lisp/ob-scheme hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/ob-scheme
/w/org-mode/lisp/ox-latex hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/ox-latex
/w/org-mode/lisp/org-loaddefs hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/org-loaddefs
/w/org-mode/lisp/ob-table hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/ob-table
/w/org-mode/lisp/ob-shell hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/ob-shell
/w/org-mode/lisp/org hides /opt/dc/emacs/share/emacs/30.0.50/lisp/org/org
/w/org-mode/lisp/ol-man hides /opt/dc/emacs/share/emacs/30.0.50/lisp/org/ol-man
/w/org-mode/lisp/ol-rmail hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/ol-rmail
/w/org-mode/lisp/ox-man hides /opt/dc/emacs/share/emacs/30.0.50/lisp/org/ox-man
/w/org-mode/lisp/org-cycle hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/org-cycle
/w/org-mode/lisp/org-datetree hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/org-datetree
/w/org-mode/lisp/ol-mhe hides /opt/dc/emacs/share/emacs/30.0.50/lisp/org/ol-mhe
/w/org-mode/lisp/ob-css hides /opt/dc/emacs/share/emacs/30.0.50/lisp/org/ob-css
/w/org-mode/lisp/org-fold hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/org-fold
/w/org-mode/lisp/ob-lilypond hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/ob-lilypond
/w/org-mode/lisp/ob-comint hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/ob-comint
/w/org-mode/lisp/ob-plantuml hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/ob-plantuml
/w/org-mode/lisp/ol-bbdb hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/ol-bbdb
/w/org-mode/lisp/ox-ascii hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/ox-ascii
/w/org-mode/lisp/ob-python hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/ob-python
/w/org-mode/lisp/ob-ref hides /opt/dc/emacs/share/emacs/30.0.50/lisp/org/ob-ref
/w/org-mode/lisp/ob-js hides /opt/dc/emacs/share/emacs/30.0.50/lisp/org/ob-js
/w/org-mode/lisp/ox-md hides /opt/dc/emacs/share/emacs/30.0.50/lisp/org/ox-md
/w/org-mode/lisp/oc hides /opt/dc/emacs/share/emacs/30.0.50/lisp/org/oc
/w/org-mode/lisp/org-keys hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/org-keys
/w/org-mode/lisp/org-feed hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/org-feed
/w/org-mode/lisp/org-capture hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/org-capture
/w/org-mode/lisp/org-ctags hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/org-ctags
/w/org-mode/lisp/ob-lob hides /opt/dc/emacs/share/emacs/30.0.50/lisp/org/ob-lob
/w/org-mode/lisp/ob-forth hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/ob-forth
/w/org-mode/lisp/ob-clojure hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/ob-clojure
/w/org-mode/lisp/ob-sass hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/ob-sass
/w/org-mode/lisp/ol-eshell hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/ol-eshell
/w/org-mode/lisp/org-timer hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/org-timer
/w/org-mode/lisp/ob-R hides /opt/dc/emacs/share/emacs/30.0.50/lisp/org/ob-R
/w/org-mode/lisp/org-src hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/org-src
/w/org-mode/lisp/ox-koma-letter hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/ox-koma-letter
/w/org-mode/lisp/ob-tangle hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/ob-tangle
/w/org-mode/lisp/ob-matlab hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/ob-matlab
/w/org-mode/lisp/org-macro hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/org-macro
/w/org-mode/lisp/ob-makefile hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/ob-makefile
/w/org-mode/lisp/ox-texinfo hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/ox-texinfo
/w/org-mode/lisp/ob-org hides /opt/dc/emacs/share/emacs/30.0.50/lisp/org/ob-org
/w/org-mode/lisp/ol-docview hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/ol-docview
/w/org-mode/lisp/org-list hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/org-list
/w/org-mode/lisp/ob-eval hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/ob-eval
/w/org-mode/lisp/org-element hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/org-element
/w/org-mode/lisp/ob hides /opt/dc/emacs/share/emacs/30.0.50/lisp/org/ob
/w/org-mode/lisp/ob-sqlite hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/ob-sqlite
/w/org-mode/lisp/org-clock hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/org-clock
/w/org-mode/lisp/org-compat hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/org-compat
/w/org-mode/lisp/org-mobile hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/org-mobile
/w/org-mode/lisp/ol hides /opt/dc/emacs/share/emacs/30.0.50/lisp/org/ol
/w/org-mode/lisp/ob-groovy hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/ob-groovy
/w/org-mode/lisp/org-goto hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/org-goto
/w/org-mode/lisp/ob-emacs-lisp hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/ob-emacs-lisp
/w/org-mode/lisp/ol-eww hides /opt/dc/emacs/share/emacs/30.0.50/lisp/org/ol-eww
/w/org-mode/lisp/org-tempo hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/org-tempo
/w/org-mode/lisp/oc-csl hides /opt/dc/emacs/share/emacs/30.0.50/lisp/org/oc-csl
/w/org-mode/lisp/ob-ruby hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/ob-ruby
/w/org-mode/lisp/org-crypt hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/org-crypt
/w/org-mode/lisp/ol-irc hides /opt/dc/emacs/share/emacs/30.0.50/lisp/org/ol-irc
/w/org-mode/lisp/org-faces hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/org-faces
/w/org-mode/lisp/ob-latex hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/ob-latex
/w/org-mode/lisp/org-colview hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/org-colview
/w/org-mode/lisp/ol-bibtex hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/ol-bibtex
/w/org-mode/lisp/ob-lua hides /opt/dc/emacs/share/emacs/30.0.50/lisp/org/ob-lua
/w/org-mode/lisp/org-protocol hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/org-protocol
/w/org-mode/lisp/org-attach-git hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/org-attach-git
/w/org-mode/lisp/ob-screen hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/ob-screen
/w/org-mode/lisp/org-agenda hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/org-agenda
/w/org-mode/lisp/org-persist hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/org-persist
/w/org-mode/lisp/ob-sql hides /opt/dc/emacs/share/emacs/30.0.50/lisp/org/ob-sql
/w/org-mode/lisp/ob-gnuplot hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/ob-gnuplot
/w/org-mode/lisp/ob-sed hides /opt/dc/emacs/share/emacs/30.0.50/lisp/org/ob-sed
/w/org-mode/lisp/ol-gnus hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/ol-gnus
/w/org-mode/lisp/org-inlinetask hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/org-inlinetask
/w/org-mode/lisp/ox-html hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/ox-html
/w/org-mode/lisp/oc-biblatex hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/oc-biblatex
/w/org-mode/lisp/org-pcomplete hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/org-pcomplete
/w/org-mode/lisp/ob-perl hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/ob-perl
/w/org-mode/lisp/org-version hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/org-version
/w/org-mode/lisp/org-indent hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/org-indent
/w/org-mode/lisp/org-refile hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/org-refile
/w/org-mode/lisp/ob-julia hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/ob-julia
/w/org-mode/lisp/ol-info hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/ol-info
/w/org-mode/lisp/ol-doi hides /opt/dc/emacs/share/emacs/30.0.50/lisp/org/ol-doi
/w/org-mode/lisp/org-habit hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/org-habit
/w/org-mode/lisp/org-entities hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/org-entities
/w/org-mode/lisp/ox-publish hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/ox-publish
/w/org-mode/lisp/org-duration hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/org-duration
/w/org-mode/lisp/ob-ditaa hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/ob-ditaa
/w/org-mode/lisp/ob-dot hides /opt/dc/emacs/share/emacs/30.0.50/lisp/org/ob-dot
/w/org-mode/lisp/ob-C hides /opt/dc/emacs/share/emacs/30.0.50/lisp/org/ob-C
/w/org-mode/lisp/ox-org hides /opt/dc/emacs/share/emacs/30.0.50/lisp/org/ox-org
/w/org-mode/lisp/ox-beamer hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/ox-beamer
/w/org-mode/lisp/ob-fortran hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/ob-fortran
/w/org-mode/lisp/ob-maxima hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/ob-maxima
/w/org-mode/lisp/ob-eshell hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/ob-eshell
/w/org-mode/lisp/ol-w3m hides /opt/dc/emacs/share/emacs/30.0.50/lisp/org/ol-w3m
/w/org-mode/lisp/org-id hides /opt/dc/emacs/share/emacs/30.0.50/lisp/org/org-id
/w/org-mode/lisp/ox-odt hides /opt/dc/emacs/share/emacs/30.0.50/lisp/org/ox-odt
/w/org-mode/lisp/ob-java hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/ob-java
/w/org-mode/lisp/ob-calc hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/ob-calc
/w/org-mode/lisp/org-attach hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/org-attach
/w/org-mode/lisp/ob-ocaml hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/ob-ocaml
/w/org-mode/lisp/oc-bibtex hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/oc-bibtex
/w/org-mode/lisp/ox hides /opt/dc/emacs/share/emacs/30.0.50/lisp/org/ox
/w/org-mode/lisp/ob-lisp hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/ob-lisp
/w/org-mode/lisp/org-macs hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/org/org-macs
/w/flim/sasl hides /opt/dc/emacs/share/emacs/30.0.50/lisp/net/sasl
/home/dc/.emacs.d/elpa/hierarchy-20190425.842/hierarchy hides
/opt/dc/emacs/share/emacs/30.0.50/lisp/emacs-lisp/hierarchy

Features:
(shadow emacsbug vc-mtn misearch multi-isearch winner tramp-archive
tramp-gvfs solar cal-dst
mule-util elmo-internal elmo-multi elmo-maildir modb-standard
org-duration cal-iso vc-hg ffap vc-git
vc-dispatcher oc-basic ol-eww eww url-queue mm-url ol-rmail ol-mhe
ol-irc ol-info ol-gnus nnselect
ol-docview ol-bibtex bibtex ol-bbdb ol-w3m ol-doi org-link-doi
face-remap dired-aux xterm-keybinder
xt-mouse term/rxvt term/xterm xterm hideshow ox-texinfo erc-track
erc-services erc-ring erc-netsplit
erc-menu erc-match erc-goodies erc-pcomplete erc-button erc-fill
erc-stamp erc-join erc erc-backend
erc-networks erc-common erc-compat erc-loaddefs quail rot13 git-link
nukneval bustrofedon
dired-filetype-face dired-tar gnus-dired dired-x mime-w3m w3m-lnum w3m
w3m-hist bookmark-w3m w3m-ems
w3m-favicon w3m-image w3m-fb tab-line w3m-proc w3m-util savehist
tramp-cache time-stamp tramp-sh
recentf tree-widget em-term term ehelp esh-ext esh-proc esh-opt esh-io
esh-arg esh-module esh-groups
esh-util zone-select zone org-location-google-maps google-maps
google-maps-static
google-maps-geocode google-maps-base beancount binview calc
calc-loaddefs calc-macs hexl
taskjuggler-mode generic generic-x boxquote rect rainbow-delimiters
rainbow-mode htmlize-hack
htmlize log4j-mode oddmuse skeleton doc-view jka-compr fc
flashcard-sm5 flashcard keywiz gamegrid
tt-mode helm-mode helm-misc helm-for-files helm-bookmark helm-adaptive
magit-bookmark bookmark
fringe helm-external helm-sys helm-net helm-man helm-color helm-elisp
helm-files image-dired
image-dired-tags image-dired-external image-dired-util image-mode exif
tramp trampver
tramp-integration files-x tramp-message tramp-compat tramp-loaddefs
helm-buffers helm-occur
helm-tags helm-locate helm-grep helm-regexp helm-info helm-utils
helm-types helm-eval edebug
helm-help helm helm-global-bindings helm-easymenu helm-core
async-bytecomp helm-source
helm-multi-match helm-lib async helm-config helm-autoloads diary-lib
diary-loaddefs magit-submodule
magit-obsolete magit-blame magit-stash magit-reflog magit-bisect
magit-push magit-pull magit-fetch
magit-clone magit-remote magit-commit magit-sequence magit-notes
magit-worktree magit-tag
magit-merge magit-branch magit-reset magit-files magit-refs
magit-status magit magit-repos
magit-apply magit-wip magit-log which-func imenu magit-diff
smerge-mode diff diff-mode track-changes
git-commit log-edit pcvs-util add-log magit-core magit-autorevert
autorevert filenotify magit-margin
magit-transient magit-process with-editor server magit-mode transient
magit-git magit-base
magit-section dash chuck-mode minizinc-mode jdecomp arc-mode
archive-mode cus-edit cus-load
projectile lisp-mnt ibuf-ext semantic/dep srecode/mode
semantic/senator semantic/wisent
semantic/wisent/wisent srecode/insert srecode/filters srecode/args
ede/speedbar ede/files ede
ede/detect ede/base ede/auto ede/source eieio-speedbar speedbar dframe
eieio-custom srecode/find
srecode/map srecode/ctxt srecode/compile srecode/dictionary
srecode/fields srecode/table
semantic/decorate/mode semantic/decorate pulse srecode
semantic/db-mode semantic/idle
semantic/analyze semantic/sort semantic/scope semantic/analyze/fcn
semantic/db eieio-base
semantic/format ezimage semantic/tag-ls semantic/find semantic/ctxt
semantic/util-modes
semantic/util semantic semantic/tag semantic/lex semantic/fw
mode-local cedet rcirc offlineimap
sasl-xoauth2 oauth2 url-http url-auth url-gw nsm plstore crm
wl-template wl-fldmgr wl-score wl-demo
wl-thread wl-action wl wl-draft wl-folder elmo-nntp elmo-net
elmo-cache elmo-map elmo-dop ps-print
ps-print-loaddefs lpr elmo-filter wl-summary wl-refile wl-message
wl-mime mime-play filename
mime-edit mime-setup mail-mime-setup semi-setup smtp wl-e21
wl-highlight invisible inv-23 elmo-mime
mmelmo-buffer mmelmo-imap mmimap mmbuffer mime-view mime-conf calist
semi-def wl-address pldap
wl-util wl-vars wl-version modb-generic elmo-flag elmo-localdir elmo
elmo-signal elmo-msgdb modb
modb-entity elmo-date eword-encode mime-parse mime mmgeneric elmo-util
eword-decode mel mime-def
alist pces pces-e20 pces-20 mcs-e20 mcs-20 mcharset timezone elmo-vars
path-util elmo-version luna
std11 pccl pccl-20 ccl broken static apel-ver product jabber
jabber-truncate jabber-time
jabber-autoaway jabber-vcard-avatars jabber-chatstates jabber-events
jabber-vcard jabber-avatar
jabber-activity jabber-watch jabber-modeline jabber-ahc-presence
jabber-ahc jabber-version
jabber-ourversion jabber-muc-nick-completion hippie-exp jabber-browse
jabber-search jabber-register
jabber-roster jabber-presence jabber-muc jabber-bookmarks
jabber-private jabber-muc-nick-coloring
jabber-widget jabber-disco jabber-chat jabber-history
jabber-chatbuffer jabber-alert jabber-iq
jabber-core jabber-console sgml-mode facemenu jabber-keymap
jabber-sasl sasl sasl-anonymous
sasl-login sasl-plain fsm jabber-logon jabber-conn srv dns starttls
tls jabber-xml jabber-menu
jabber-util goto-addr hexrgb markdown-mode color thingatpt yasnippet
org-contacts gnus-art mm-uu
mml2015 mm-view mml-smime smime gnutls dig gnus-sum shr pixel-fill
kinsoku url-file svg dom
gnus-group gnus-undo gnus-start gnus-dbus dbus xml gnus-cloud nnimap
nnmail mail-source utf7 nnoo
parse-time iso8601 gnus-spec gnus-int gnus-range message sendmail
yank-media puny dired dnd
dired-loaddefs rfc822 mml mml-sec epa epg rfc6068 epg-config mm-decode
mm-bodies mm-encode
mail-parse rfc2231 rfc2047 rfc2045 ietf-drums mailabbrev gmm-utils
mailheader gnus-win gnus nnheader
mail-utils range mm-util mail-prsvr gnus-util org-crypt ob-sqlite
ob-sql ob-shell shell ob-ruby
ob-python python project compat ob-plantuml ob-perl ob-lilypond ob-js
ob-haskell ob-gnuplot ox-odt
rng-loc rng-uri rng-parse rng-match rng-dt rng-util rng-pttrn
nxml-parse nxml-ns nxml-enc xmltok
nxml-util ox-latex ox-icalendar ox-html table ox-ascii ox-publish ox
ob-dot ob-ditaa ob-C cc-mode
cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine
cc-vars cc-defs ob-R org-attach
org-protocol iimage org-clock calfw-gcal calfw-org org-capture
org-agenda calfw edmacro kmacro
holidays holiday-loaddefs cal-move org-inlinetask org-superstar
org-element org-persist xdg avl-tree
generator org-test ert-x ert pp ewoc debug backtrace org-id org-refile
org-element-ast inline org ob
ob-tangle ob-ref ob-lob ob-table ob-exp org-macro org-src sh-script
smie treesit executable
ob-comint org-pcomplete pcomplete org-list org-footnote org-faces
org-entities time-date noutline
outline ob-emacs-lisp ob-core ob-eval org-cycle org-table ol org-fold
org-fold-core org-keys oc
org-loaddefs find-func cal-menu calendar cal-loaddefs org-version
org-compat org-macs format-spec
ibuf-macs ibuffer ibuffer-loaddefs mb-depth comp comp-cstr warnings
comp-run comp-common rx advice
mwheel easy-mmode so-long longlines grep compile text-property-search
comint regexp-opt ansi-osc
ansi-color ring revbufs derived disp-table hide-mode-line time image
hl-line color-theme wid-edit
reporter xclip finder-inf elp boxquote-autoloads calfw-autoloads
calfw-gcal-autoloads
calfw-ical-autoloads calfw-org-autoloads csv-mode-autoloads
debbugs-autoloads emacsql-psql-autoloads
emacsql-autoloads emmet-mode-autoloads feature-mode-autoloads
git-link-autoloads gnuplot-autoloads
google-translate-autoloads haskell-mode-autoloads cl-extra help-mode
helm-sql-connect-autoloads
jabber-autoloads fsm-autoloads jdecomp-autoloads jedi-autoloads
jedi-core-autoloads
jinja2-mode-autoloads json-reformat-autoloads jsonian-autoloads
magit-autoloads pcase
git-commit-autoloads magit-section-autoloads mingus-autoloads libmpdee-autoloads
mmm-jinja2-autoloads mmm-mode-autoloads oauth2-autoloads
org-superstar-autoloads persist-autoloads
projectile-autoloads python-environment-autoloads
rcirc-color-autoloads srv-autoloads cl
terraform-mode-autoloads tmr-autoloads transient-autoloads
typescript-mode-autoloads
vimrc-mode-autoloads vue-html-mode-autoloads with-editor-autoloads
xclip-autoloads
xterm-keybinder-autoloads yasnippet-autoloads zone-nyan-autoloads info
tool-bar dash-autoloads
package browse-url url url-proxy url-privacy url-expand url-methods
url-history url-cookie
generate-lisp-file url-domsuf url-util mailcap url-handlers url-parse
auth-source cl-seq eieio
eieio-core cl-macs icons password-cache json subr-x map byte-opt gv
bytecomp byte-compile url-vars
cl-loaddefs cl-lib rmc iso-transl tooltip cconv eldoc paren electric
uniquify ediff-hook vc-hooks
lisp-float-type elisp-mode tabulated-list replace newcomment text-mode
lisp-mode prog-mode register
page tab-bar menu-bar rfn-eshadow isearch easymenu timer select mouse
jit-lock font-lock syntax
font-core term/tty-colors frame minibuffer nadvice seq simple
cl-generic indonesian philippine cham
georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao
korean japanese eucjp-ms cp51932
hebrew greek romanian slovak czech european ethiopic indian cyrillic
chinese composite emoji-zwj
charscript charprop case-table epa-hook jka-cmpr-hook help abbrev
obarray oclosure cl-preloaded
button loaddefs theme-loaddefs faces cus-face macroexp files window
text-properties overlay sha1 md5
base64 format env code-pages mule custom widget keymap
hashtable-print-readable backquote threads
inotify lcms2 multi-tty make-network-process native-compile emacs)

Memory information:
((conses 16 1903347 344193) (symbols 48 71414 8) (strings 32 304262
23253) (string-bytes 1 10691310)
 (vectors 16 177537) (vector-slots 8 2898934 141458) (floats 8 1570
44647) (intervals 56 11266 581)
 (buffers 984 186))





^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#71289: 30.0.50; cmcheckmagic aborts when tty_write_glyphs writes "Garbage collecting..." in some cases
  2024-05-31 10:18 bug#71289: 30.0.50; cmcheckmagic aborts when tty_write_glyphs writes "Garbage collecting..." in some cases Daniel Clemente
@ 2024-05-31 11:17 ` Eli Zaretskii
  2024-05-31 17:07   ` Daniel Clemente
  2024-05-31 17:09 ` Daniel Clemente
  2024-06-03 15:36 ` Daniel Clemente
  2 siblings, 1 reply; 34+ messages in thread
From: Eli Zaretskii @ 2024-05-31 11:17 UTC (permalink / raw)
  To: Daniel Clemente; +Cc: 71289

> From: Daniel Clemente <n142857@gmail.com>
> Date: Fri, 31 May 2024 10:18:35 +0000
> 
> Running emacs --fg-daemon under gdb, and TTY emacs, with glyph debug
> enabled. Using my full .emacs, which includes things like (setq
> garbage-collection-messages t).
> 
> I reproduced this 2 times:
> 
> 1. I opened 2 or 3 emacsclient (inside urxvt) and started resizing the
> X window of one of them, and using it a bit (open org agenda). I admit
> I used weird X window sizes that created a 1x1 terminal, but this
> still worked. After some time playing with the X window size (but
> without opening/closing X windows), this assert failed.
> I was using urxvt with no customizations (i.e. I was seeing a scroll
> bar etc.). In this case I used icewm (non-tiled window manager) with
> no customizations.
> 
> See BT1 below.
> 
> 
> 2. I just ran emacs --fg-daemon inside gdb, and I opened my first TTY
> frame, in a normal window of normal size; nothing weird (no 1x1 frames
> etc). It immediately crashed; this never happened before. I'm using
> wmii, urxvt (many customizations), and a command like urxvt -e
> emacsclient '-nw' '-e' '(dired "~")' &
> 
> See BT2 below.
> 
> 
> Maybe it's because of trying the display the "Garbage
> collecting...done" message in a small window? (BT1) or in window which
> isn't fully initialized yet? (BT2)

Thanks, but these backtraces are not enough, because they don't
explain why was emacs_abort called.  We need to see all the values
involved in this condition:

  if (curX (tty) == FrameCols (tty))
    {
      if (!MagicWrap (tty) || curY (tty) >= FrameRows (tty) - 1) <<<<<<<<<<<
	emacs_abort ();





^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#71289: 30.0.50; cmcheckmagic aborts when tty_write_glyphs writes "Garbage collecting..." in some cases
  2024-05-31 11:17 ` Eli Zaretskii
@ 2024-05-31 17:07   ` Daniel Clemente
  2024-05-31 18:17     ` Eli Zaretskii
  0 siblings, 1 reply; 34+ messages in thread
From: Daniel Clemente @ 2024-05-31 17:07 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 71289

> Thanks, but these backtraces are not enough, because they don't
> explain why was emacs_abort called.  We need to see all the values
> involved in this condition:
>
>  if (curX (tty) == FrameCols (tty))
>    {
>      if (!MagicWrap (tty) || curY (tty) >= FrameRows (tty) - 1) <<<<<<<<<<<
>        emacs_abort ();


These were the variables just before emacs_abort, and (abort==1) when aborting.

At point cmcheckmagic, ¿abort? 0. MagicWrap 1, curY 0, vs. 3 - 1. Now
tty has 3 rows, 14 cols
At point cmcheckmagic, ¿abort? 0. MagicWrap 1, curY 1, vs. 3 - 1. Now
tty has 3 rows, 14 cols
At point cmcheckmagic, ¿abort? 1. MagicWrap 1, curY 3, vs. 3 - 1. Now
tty has 3 rows, 14 cols

I got them by adding:
fprintf(stderr, "At point cmcheckmagic, ¿abort? %d. MagicWrap %d, curY
%d, vs. %d - 1. Now tty has %d rows, %d cols\n",
      (!MagicWrap (tty) || curY (tty) >= FrameRows (tty) - 1),
      MagicWrap(tty), curY(tty), FrameRows(tty),
      FrameRows(tty), FrameCols(tty));

I forgot curX, which is:
(gdb) p curX(tty)
$1 = 14

To reproduce this I had to try many random operations. The last thing
I did was increasing the size of an X window showing dired, from very
small (1 line, ~10 cols to 3x14); this works well most of the time but
this time this happened.


Backtrace.

(gdb) bt full
#0  terminate_due_to_signal (sig=6, backtrace_limit=40) at emacs.c:443
No locals.
#1  0x00005555556bdab0 in emacs_abort () at sysdep.c:2391
No locals.
#2  0x000055555566995d in cmcheckmagic (tty=0x5555572c4c90) at cm.c:124
No locals.
#3  0x000055555566de6f in tty_write_glyphs (f=0x555561525f60,
string=0x5555610141c0, len=14) at term.c:819
        conversion_buffer = 0x55555f7e9160 "x \\  3 dc   dc)
(Dired by name Helm Projectile yas) 7:39PM 0.41", ' ' <repeats 80
times>, "`UU"
        coding = 0x555559956cf0
        n = 14
        stringlen = 0
        tty = 0x5555572c4c90
#4  0x0000555555678203 in write_glyphs (f=0x555561525f60,
string=0x555561013f20, len=14) at terminal.c:163
No locals.
#5  0x000055555559194a in update_frame_line (f=0x555561525f60, vpos=3,
updating_menu_p=false)
    at dispnew.c:5321
        obody = 0x0
        nbody = 0x555561013f20
        op1 = 0x300000011
        op2 = 0x7fffffff78e0
        np1 = 0x7ffff549ed90 <__GI___fflush_unlocked+48>
        nend = 0x5555610141c0
        tem = 0
        osp = 32767
        nsp = -34592
        begmatch = 32767
        endmatch = -178330144
        olen = 0
        nlen = 14
        current_matrix = 0x555560cad240
        desired_matrix = 0x5555603cf860
        current_row = 0x555560c681c8
        desired_row = 0x55556045e7b8
        must_write_whole_line_p = true
        write_spaces_p = true
        colored_spaces_p = true
#6  0x0000555555590b8d in update_frame_1 (f=0x555561525f60,
force_p=true, inhibit_id_p=false,
    set_cursor_p=true, updating_menu_p=false) at dispnew.c:5008
        current_matrix = 0x555560cad240
        desired_matrix = 0x5555603cf860
        i = 3
        pause_p = 85
        preempt_count = 17
#7  0x000055555558cf9f in update_frame (f=0x555561525f60,
force_p=true, inhibit_hairy_id_p=false)
    at dispnew.c:3346
        paused_p = false
        root_window = 0x555560baa508
#8  0x00005555555cf876 in redisplay_internal () at xdisp.c:17478
        gcscrollbars = true
        f_redisplay_flag = true
        f = 0x555561525f60
        w = 0x555561526388
        sw = 0x555561526388
        fr = 0x555561525f60
        pending = false
        must_finish = false
        match_p = false
        tlbufpos = {
          charpos = 0,
          bytepos = 116
        }
--Type <RET> for more, q to quit, c to continue without paging--
        tlendpos = {
          charpos = 29241,
          bytepos = 29273
        }
        number_of_visible_frames = 7
        sf = 0x555561525f60
        polling_stopped_here = true
        tail = XIL(0x5555614f3903)
        frame = XIL(0x555561525f65)
        MAX_HSCROLL_RETRIES = MAX_HSCROLL_RETRIES
        hscroll_retries = 0
        MAX_GARBAGED_FRAME_RETRIES = MAX_GARBAGED_FRAME_RETRIES
        garbaged_frame_retries = 0
        consider_all_windows_p = true
        update_miniwindow_p = false
        count = {
          bytes = 2304
        }
#9  0x00005555555d01aa in redisplay_preserve_echo_area (from_where=11)
at xdisp.c:17761
        count = {
          bytes = 2272
        }
#10 0x00005555557ee631 in wait_reading_process_output (time_limit=30,
nsecs=0, read_kbd=-1,
    do_display=true, wait_for_cell=XIL(0), wait_proc=0x0,
just_wait_proc=0) at process.c:5585
        process_skipped = false
        wrapped = false
        channel_start = 0
        child_fd = 6
        last_read_channel = 13
        channel = 1024
        nfds = -1
        Available = {
          fds_bits = {8768089968, 0 <repeats 15 times>}
        }
        Writeok = {
          fds_bits = {0 <repeats 16 times>}
        }
        check_write = true
        check_delay = 1
        no_avail = true
        xerrno = 4
        proc = XIL(0xa00000fff)
        timeout = {
          tv_sec = 28,
          tv_nsec = 503054580
        }
        end_time = {
          tv_sec = 1717173578,
          tv_nsec = 474082259
        }
        timer_delay = {
          tv_sec = 0,
          tv_nsec = 502843472
        }
        got_output_end_time = {
          tv_sec = 1717173578,
          tv_nsec = 474082259
        }
        MINIMUM = MINIMUM
        TIMEOUT = TIMEOUT
        FOREVER = FOREVER
        wait = TIMEOUT
--Type <RET> for more, q to quit, c to continue without paging--
        got_some_output = -1
        prev_wait_proc_nbytes_read = 0
        retry_for_async = false
        count = {
          bytes = 2240
        }
        now = {
          tv_sec = 1717173549,
          tv_nsec = 971027679
        }
#11 0x0000555555594f26 in sit_for (timeout=make_fixnum(30),
reading=true, display_option=1)
    at dispnew.c:6321
        sec = 30
        nsec = 0
        do_display = true
        curbuf_eq_winbuf = false
        nbytes = 21845
#12 0x0000555555695ae5 in read_char (commandflag=1,
map=XIL(0x555560278023), prev_event=XIL(0),
    used_mouse_menu=0x7fffffff966f, end_time=0x0) at keyboard.c:2923
        tem0 = XIL(0x555555770001)
        timeout = 30
        count1 = {
          bytes = 2208
        }
        delay_level = 4
        buffer_size = 50
        c = XIL(0)
        local_getcjmp = {{
            __jmpbuf = {0, -8236620451292018264, 0, 140737168851264,
93825052522836, 0,
              -8236620451436721752, -2817863054631007832},
            __mask_was_saved = 0,
            __saved_mask = {
              __val = {93464216335616, 139753184, 140737245531531,
93825002663168, 0, 0, 140737488327872,
                93824993653913, 40800, 140737488327952,
93824993660639, 1, 0, 93464225410400, 96,
                93825002663168}
            }
          }}
        save_jump = {{
            __jmpbuf = {0, 0, 0, 0, 0, 0, 0, 0},
            __mask_was_saved = 0,
            __saved_mask = {
              __val = {0 <repeats 16 times>}
            }
          }}
        tem = XIL(0x5555557806e9)
        save = XIL(0x67e0)
        previous_echo_area_message = XIL(0)
        also_record = XIL(0)
        reread = false
        recorded = false
        polling_stopped_here = false
        orig_kboard = 0x555560b58160
        jmpcount = {
          bytes = 2208

        }





^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#71289: 30.0.50; cmcheckmagic aborts when tty_write_glyphs writes "Garbage collecting..." in some cases
  2024-05-31 10:18 bug#71289: 30.0.50; cmcheckmagic aborts when tty_write_glyphs writes "Garbage collecting..." in some cases Daniel Clemente
  2024-05-31 11:17 ` Eli Zaretskii
@ 2024-05-31 17:09 ` Daniel Clemente
  2024-05-31 18:26   ` Eli Zaretskii
  2024-06-03 17:44   ` Eli Zaretskii
  2024-06-03 15:36 ` Daniel Clemente
  2 siblings, 2 replies; 34+ messages in thread
From: Daniel Clemente @ 2024-05-31 17:09 UTC (permalink / raw)
  To: 71289; +Cc: Eli Zaretskii

While playing with resizing the urxvt terminal size (X window), I
found other bugs where Emacs doesn't know the real size of the
terminal, or becomes unsynchronized with the actual terminal size.
This may cause many of the other bugs I've seen (things in the style
of: the GC message wants to use 2 minibuffer lines because it thinks
there are 2 lines, but actually there's just 1, etc.).

The two resizing bugs I found (but I don't have time to research them
in detail yet) are:
- if the X terminal has 4 visible rows, FrameRows(tty) reports 4. If
3, then 3. But if it has 2 or 1 rows, Emacs still sees 3. And editing
is garbled
- if I decrease the terminal size fast, e.g. 81→71→61→51→41→31→21→11→1
lines, often Emacs doesn't notice all changes, and it may still report
that FrameRows(tty) is e.g. 31 when it went further down to 1
(31→21→11→1)

- in addition there's a more complex refresh bug (not about resizing I
think), in which the next frame I focus after having killed a frame
won't be refreshed (e.g. I can resize the X window and it doesn't
notice, new sections appear black) until I press a key or move the
mouse. It's 100% reproducible but I need to research this better
because it involves window managers and X

However I didn't see a direct crash from these issues. But maybe a GC
message in some of these conditions can cause the alert.

I may report them as separate bugs but in a while; I'm reporting too
many TTY bugs and too fast; I need time for other things.

I also saw a new type of TTY+GC error (not sure if it's the same issue
as this bug):

alloc.c:7517: Emacs fatal error: assertion failed: t->name != NULL

Breakpoint 1, terminate_due_to_signal (sig=6,
backtrace_limit=2147483647) at emacs.c:443
443      signal (sig, SIG_DFL);
(gdb) bt
#0  terminate_due_to_signal (sig=6, backtrace_limit=2147483647) at emacs.c:443
#1  0x000055555573591a in die (msg=0x55555586f838 "t->name != NULL",
file=0x55555586e97e "alloc.c", line=7517) at alloc.c:8082
#2  0x00005555557346e8 in mark_terminals () at alloc.c:7517
#3  0x000055555573276c in garbage_collect () at alloc.c:6603
#4  0x00005555557324b0 in maybe_garbage_collect () at alloc.c:6507
#5  0x000055555576972e in maybe_gc () at /w/emacs/src/lisp.h:5927
#6  0x0000555555770d0f in Ffuncall (nargs=3, args=0x7fffffffcd60) at eval.c:3088
#7  0x000055555576d1f3 in internal_condition_case_n
(bfun=0x555555770be2 <Ffuncall>, nargs=3, args=0x7fffffffcd60,
handlers=XIL(0x30),
    hfun=0x555555770dd8 <safe_eval_handler>) at eval.c:1693
#8  0x0000555555770e96 in safe_funcall (nargs=3, args=0x7fffffffcd60)
at eval.c:3121
#9  0x000055555569992f in timer_check_2 (timers=XIL(0x5555618fec33),
idle_timers=XIL(0x5555618fec93)) at keyboard.c:4680
#10 0x0000555555699fa6 in timer_check () at keyboard.c:4851
#11 0x00005555557ee0d7 in wait_reading_process_output (time_limit=30,
nsecs=0, read_kbd=-1, do_display=true, wait_for_cell=XIL(0),
wait_proc=0x0,
    just_wait_proc=0) at process.c:5429
#12 0x0000555555594f0b in sit_for (timeout=make_fixnum(30),
reading=true, display_option=1) at dispnew.c:6320
#13 0x0000555555695aaf in read_char (commandflag=1,
map=XIL(0x555560403353), prev_event=XIL(0),
used_mouse_menu=0x7fffffffd6df, end_time=0x0)
    at keyboard.c:2923
#14 0x00005555556a705e in read_key_sequence (keybuf=0x7fffffffd8f0,
prompt=XIL(0), dont_downcase_last=false, can_return_switch_frame=true,
    fix_current_buffer=true, prevent_redisplay=false,
disable_text_conversion_p=false) at keyboard.c:10728
#15 0x0000555555691746 in command_loop_1 () at keyboard.c:1429
#16 0x000055555576cf2e in internal_condition_case (bfun=0x555555691317
<command_loop_1>, handlers=XIL(0x90), hfun=0x5555556907c2 <cmd_error>)
    at eval.c:1613
#17 0x0000555555690ef5 in command_loop_2 (handlers=XIL(0x90)) at keyboard.c:1168
#18 0x000055555576c35b in internal_catch (tag=XIL(0xfc60),
func=0x555555690ecb <command_loop_2>, arg=XIL(0x90)) at eval.c:1292
#19 0x0000555555690e87 in command_loop () at keyboard.c:1146
#20 0x0000555555690264 in recursive_edit_1 () at keyboard.c:754
#21 0x0000555555690490 in Frecursive_edit () at keyboard.c:837
#22 0x000055555568bef7 in main (argc=2, argv=0x7fffffffdf18) at emacs.c:2621

Lisp Backtrace:
"Automatic GC" (0x0)
"apply" (0xffffcd68)
(gdb) frame 2
#2  0x00005555557346e8 in mark_terminals () at alloc.c:7517
7517          eassert (t->name != NULL);
(gdb) list
7512    mark_terminals (void)
7513    {
7514      struct terminal *t;
7515      for (t = terminal_list; t; t = t->next_terminal)
7516        {
7517          eassert (t->name != NULL);
7518    #ifdef HAVE_WINDOW_SYSTEM
7519          /* If a terminal object is reachable from a stacpro'ed object,
7520         it might have been marked already.  Make sure the image cache
7521         gets marked.  */
(gdb) p *t
$1 = {
  header = {
    size = -4611686018158710780
  },
  param_alist = XIL(0x555560405553),
  charset_list = XIL(0x7ffff20cc973),
  Vselection_alist = XIL(0),
  glyph_code_table = XIL(0x30),
  next_terminal = 0x5555607377d0,
  id = 89,
  reference_count = 1,
  type = output_termcap,
  name = 0x0,
  kboard = 0x5555613e5290,
  display_info = {
    tty = 0x5555610f7470,
    x = 0x5555610f7470,
    w32 = 0x5555610f7470,
    ns = 0x5555610f7470,
    pgtk = 0x5555610f7470,
    haiku = 0x5555610f7470,
    android = 0x5555610f7470
  },
  terminal_coding = 0x555560fc7090,
  keyboard_coding = 0x5555601bd1c0,
  rif = 0x0,
  cursor_to_hook = 0x55555566caa9 <tty_cursor_to>,
  raw_cursor_to_hook = 0x55555566cb85 <tty_raw_cursor_to>,
  clear_to_end_hook = 0x55555566cc47 <tty_clear_to_end>,
  clear_frame_hook = 0x55555566cd8a <tty_clear_frame>,
  clear_end_of_line_hook = 0x55555566cebf <tty_clear_end_of_line>,
  ins_del_lines_hook = 0x55555566e884 <tty_ins_del_lines>,
  insert_glyphs_hook = 0x55555566e14d <tty_insert_glyphs>,
  write_glyphs_hook = 0x55555566da86 <tty_write_glyphs>,
  delete_glyphs_hook = 0x55555566e5ff <tty_delete_glyphs>,
  ring_bell_hook = 0x55555566b913 <tty_ring_bell>,
  toggle_invisible_pointer_hook = 0x0,
  reset_terminal_modes_hook = 0x55555566be3e <tty_reset_terminal_modes>,
  set_terminal_modes_hook = 0x55555566bb56 <tty_set_terminal_modes>,
  update_begin_hook = 0x0,
  update_end_hook = 0x55555566c11b <tty_update_end>,
  set_terminal_window_hook = 0x55555566c1c2 <tty_set_terminal_window>,
  defined_color_hook = 0x55555567b346 <tty_defined_color>,
  query_frame_background_color = 0x0,
  mouse_position_hook = 0x0,
  get_focus_frame = 0x0,
  focus_frame_hook = 0x0,
  frame_rehighlight_hook = 0x0,
  frame_raise_lower_hook = 0x0,
  frame_visible_invisible_hook = 0x0,
  fullscreen_hook = 0x0,
  iconify_frame_hook = 0x0,
  set_window_size_hook = 0x0,
  set_frame_offset_hook = 0x0,
  set_frame_alpha_hook = 0x0,
  set_new_font_hook = 0x0,
  set_bitmap_icon_hook = 0x0,
  implicit_set_name_hook = 0x0,
  menu_show_hook = 0x555555674ccf <tty_menu_show>,
  popup_dialog_hook = 0x0,
  change_tab_bar_height_hook = 0x0,
--Type <RET> for more, q to quit, c to continue without paging--
  change_tool_bar_height_hook = 0x0,
  set_vertical_scroll_bar_hook = 0x0,
  set_horizontal_scroll_bar_hook = 0x0,
  set_scroll_bar_default_width_hook = 0x0,
  set_scroll_bar_default_height_hook = 0x0,
  condemn_scroll_bars_hook = 0x0,
  redeem_scroll_bar_hook = 0x0,
  judge_scroll_bars_hook = 0x0,
  read_socket_hook = 0x5555556a0938 <tty_read_avail_input>,
  frame_up_to_date_hook = 0x0,
  buffer_flipping_unblocked_hook = 0x0,
  get_string_resource_hook = 0x0,
  delete_frame_hook = 0x555555675a1d <tty_free_frame_resources>,
  delete_terminal_hook = 0x555555677738 <delete_tty>,
  toolkit_position_hook = 0x0
}

(gdb) p *terminal_list
$3 = {
  header = {
    size = -4611686018158710780
  },
  param_alist = XIL(0x55555fee8403),
  charset_list = XIL(0x7ffff20cc973),
  Vselection_alist = XIL(0),
  glyph_code_table = XIL(0x30),
  next_terminal = 0x555560e35800,
  id = 92,
  reference_count = 1,
  type = output_termcap,
  name = 0x55555ff67d90 "/dev/pts/25",
  kboard = 0x55555fae1fd0,
  display_info = {
    tty = 0x555560338010,
    x = 0x555560338010,
    w32 = 0x555560338010,
    ns = 0x555560338010,
    pgtk = 0x555560338010,
    haiku = 0x555560338010,
    android = 0x555560338010
  },
  terminal_coding = 0x55556071ba30,
  keyboard_coding = 0x55555fe518f0,
  rif = 0x0,
  cursor_to_hook = 0x55555566caa9 <tty_cursor_to>,
  raw_cursor_to_hook = 0x55555566cb85 <tty_raw_cursor_to>,
  clear_to_end_hook = 0x55555566cc47 <tty_clear_to_end>,
  clear_frame_hook = 0x55555566cd8a <tty_clear_frame>,
  clear_end_of_line_hook = 0x55555566cebf <tty_clear_end_of_line>,
  ins_del_lines_hook = 0x55555566e884 <tty_ins_del_lines>,
  insert_glyphs_hook = 0x55555566e14d <tty_insert_glyphs>,
  write_glyphs_hook = 0x55555566da86 <tty_write_glyphs>,
  delete_glyphs_hook = 0x55555566e5ff <tty_delete_glyphs>,
  ring_bell_hook = 0x55555566b913 <tty_ring_bell>,
  toggle_invisible_pointer_hook = 0x0,
  reset_terminal_modes_hook = 0x55555566be3e <tty_reset_terminal_modes>,
  set_terminal_modes_hook = 0x55555566bb56 <tty_set_terminal_modes>,
  update_begin_hook = 0x0,
  update_end_hook = 0x55555566c11b <tty_update_end>,
  set_terminal_window_hook = 0x55555566c1c2 <tty_set_terminal_window>,
  defined_color_hook = 0x55555567b346 <tty_defined_color>,
  query_frame_background_color = 0x0,
  mouse_position_hook = 0x0,
  get_focus_frame = 0x0,
  focus_frame_hook = 0x0,
  frame_rehighlight_hook = 0x0,
  frame_raise_lower_hook = 0x0,
  frame_visible_invisible_hook = 0x0,
  fullscreen_hook = 0x0,
  iconify_frame_hook = 0x0,
  set_window_size_hook = 0x0,
  set_frame_offset_hook = 0x0,
  set_frame_alpha_hook = 0x0,
  set_new_font_hook = 0x0,
  set_bitmap_icon_hook = 0x0,
  implicit_set_name_hook = 0x0,
  menu_show_hook = 0x555555674ccf <tty_menu_show>,
  popup_dialog_hook = 0x0,
--Type <RET> for more, q to quit, c to continue without paging--
  change_tab_bar_height_hook = 0x0,
  change_tool_bar_height_hook = 0x0,
  set_vertical_scroll_bar_hook = 0x0,
  set_horizontal_scroll_bar_hook = 0x0,
  set_scroll_bar_default_width_hook = 0x0,
  set_scroll_bar_default_height_hook = 0x0,
  condemn_scroll_bars_hook = 0x0,
  redeem_scroll_bar_hook = 0x0,
  judge_scroll_bars_hook = 0x0,
  read_socket_hook = 0x5555556a0938 <tty_read_avail_input>,
  frame_up_to_date_hook = 0x0,
  buffer_flipping_unblocked_hook = 0x0,
  get_string_resource_hook = 0x0,
  delete_frame_hook = 0x555555675a1d <tty_free_frame_resources>,
  delete_terminal_hook = 0x555555677738 <delete_tty>,
  toolkit_position_hook = 0x0
}
(gdb) p t->terminal_list
There is no member named terminal_list.
(gdb) p t->next_terminal
$4 = (struct terminal *) 0x5555607377d0
(gdb) p (struct terminal*) t->next_terminal
$5 = (struct terminal *) 0x5555607377d0
(gdb) pp (struct terminal*) t->next_terminal
A syntax error in expression, near `'.
(gdb) p (struct terminal*) t->next_terminal
$6 = (struct terminal *) 0x5555607377d0
(gdb) p *((struct terminal*) t->next_terminal)
$7 = {
  header = {
    size = -4611686018158710780
  },
  param_alist = XIL(0x55555fc70803),
  charset_list = XIL(0x7ffff20cc973),
  Vselection_alist = XIL(0),
  glyph_code_table = XIL(0),
  next_terminal = 0x55556066a918,
  id = 27,
  reference_count = 1,
  type = output_termcap,
  name = 0x55555f922a80 "/dev/pts/18",
  kboard = 0x55555f52d030,
  display_info = {
    tty = 0x55555fae8700,
    x = 0x55555fae8700,
    w32 = 0x55555fae8700,
    ns = 0x55555fae8700,
    pgtk = 0x55555fae8700,
    haiku = 0x55555fae8700,
    android = 0x55555fae8700
  },
  terminal_coding = 0x55555e549f50,
  keyboard_coding = 0x55555a6b3d50,
  rif = 0x0,
  cursor_to_hook = 0x55555566caa9 <tty_cursor_to>,
  raw_cursor_to_hook = 0x55555566cb85 <tty_raw_cursor_to>,
  clear_to_end_hook = 0x55555566cc47 <tty_clear_to_end>,
  clear_frame_hook = 0x55555566cd8a <tty_clear_frame>,
  clear_end_of_line_hook = 0x55555566cebf <tty_clear_end_of_line>,
  ins_del_lines_hook = 0x55555566e884 <tty_ins_del_lines>,
  insert_glyphs_hook = 0x55555566e14d <tty_insert_glyphs>,
  write_glyphs_hook = 0x55555566da86 <tty_write_glyphs>,
  delete_glyphs_hook = 0x55555566e5ff <tty_delete_glyphs>,
  ring_bell_hook = 0x55555566b913 <tty_ring_bell>,
  toggle_invisible_pointer_hook = 0x0,
  reset_terminal_modes_hook = 0x55555566be3e <tty_reset_terminal_modes>,
  set_terminal_modes_hook = 0x55555566bb56 <tty_set_terminal_modes>,
  update_begin_hook = 0x0,
  update_end_hook = 0x55555566c11b <tty_update_end>,
  set_terminal_window_hook = 0x55555566c1c2 <tty_set_terminal_window>,
  defined_color_hook = 0x55555567b346 <tty_defined_color>,
  query_frame_background_color = 0x0,
  mouse_position_hook = 0x0,
  get_focus_frame = 0x0,
  focus_frame_hook = 0x0,
  frame_rehighlight_hook = 0x0,
  frame_raise_lower_hook = 0x0,
  frame_visible_invisible_hook = 0x0,
  fullscreen_hook = 0x0,
  iconify_frame_hook = 0x0,
  set_window_size_hook = 0x0,
  set_frame_offset_hook = 0x0,
  set_frame_alpha_hook = 0x0,
  set_new_font_hook = 0x0,
  set_bitmap_icon_hook = 0x0,
  implicit_set_name_hook = 0x0,
  menu_show_hook = 0x555555674ccf <tty_menu_show>,
  popup_dialog_hook = 0x0,
--Type <RET> for more, q to quit, c to continue without paging--
  change_tab_bar_height_hook = 0x0,
  change_tool_bar_height_hook = 0x0,
  set_vertical_scroll_bar_hook = 0x0,
  set_horizontal_scroll_bar_hook = 0x0,
  set_scroll_bar_default_width_hook = 0x0,
  set_scroll_bar_default_height_hook = 0x0,
  condemn_scroll_bars_hook = 0x0,
  redeem_scroll_bar_hook = 0x0,
  judge_scroll_bars_hook = 0x0,
  read_socket_hook = 0x5555556a0938 <tty_read_avail_input>,
  frame_up_to_date_hook = 0x0,
  buffer_flipping_unblocked_hook = 0x0,
  get_string_resource_hook = 0x0,
  delete_frame_hook = 0x555555675a1d <tty_free_frame_resources>,
  delete_terminal_hook = 0x555555677738 <delete_tty>,
  toolkit_position_hook = 0x0
}
(gdb) p t
$8 = (struct terminal *) 0x55556092b4e0
(gdb) p t->next_terminal
$9 = (struct terminal *) 0x5555607377d0
(gdb) p terminal_list
$10 = (struct terminal *) 0x55556146dcc0
(gdb)





^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#71289: 30.0.50; cmcheckmagic aborts when tty_write_glyphs writes "Garbage collecting..." in some cases
  2024-05-31 17:07   ` Daniel Clemente
@ 2024-05-31 18:17     ` Eli Zaretskii
  2024-06-03 15:35       ` Daniel Clemente
  0 siblings, 1 reply; 34+ messages in thread
From: Eli Zaretskii @ 2024-05-31 18:17 UTC (permalink / raw)
  To: Daniel Clemente; +Cc: 71289

> From: Daniel Clemente <n142857@gmail.com>
> Date: Fri, 31 May 2024 17:07:45 +0000
> Cc: 71289@debbugs.gnu.org
> 
> > Thanks, but these backtraces are not enough, because they don't
> > explain why was emacs_abort called.  We need to see all the values
> > involved in this condition:
> >
> >  if (curX (tty) == FrameCols (tty))
> >    {
> >      if (!MagicWrap (tty) || curY (tty) >= FrameRows (tty) - 1) <<<<<<<<<<<
> >        emacs_abort ();
> 
> 
> These were the variables just before emacs_abort, and (abort==1) when aborting.
> 
> At point cmcheckmagic, ¿abort? 0. MagicWrap 1, curY 0, vs. 3 - 1. Now
> tty has 3 rows, 14 cols
> At point cmcheckmagic, ¿abort? 0. MagicWrap 1, curY 1, vs. 3 - 1. Now
> tty has 3 rows, 14 cols
> At point cmcheckmagic, ¿abort? 1. MagicWrap 1, curY 3, vs. 3 - 1. Now
> tty has 3 rows, 14 cols

So you are saying that the terminal lies to us?  It has 3 rows, but
somehow wraps the cursor to the 4th row?  What are the window and
frame dimensions at this point?





^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#71289: 30.0.50; cmcheckmagic aborts when tty_write_glyphs writes "Garbage collecting..." in some cases
  2024-05-31 17:09 ` Daniel Clemente
@ 2024-05-31 18:26   ` Eli Zaretskii
  2024-06-03 15:56     ` Daniel Clemente
  2024-06-03 17:44   ` Eli Zaretskii
  1 sibling, 1 reply; 34+ messages in thread
From: Eli Zaretskii @ 2024-05-31 18:26 UTC (permalink / raw)
  To: Daniel Clemente; +Cc: 71289

> From: Daniel Clemente <n142857@gmail.com>
> Date: Fri, 31 May 2024 17:09:29 +0000
> Cc: Eli Zaretskii <eliz@gnu.org>
> 
> While playing with resizing the urxvt terminal size (X window), I
> found other bugs where Emacs doesn't know the real size of the
> terminal, or becomes unsynchronized with the actual terminal size.
> This may cause many of the other bugs I've seen (things in the style
> of: the GC message wants to use 2 minibuffer lines because it thinks
> there are 2 lines, but actually there's just 1, etc.).
> 
> The two resizing bugs I found (but I don't have time to research them
> in detail yet) are:
> - if the X terminal has 4 visible rows, FrameRows(tty) reports 4. If
> 3, then 3. But if it has 2 or 1 rows, Emacs still sees 3. And editing
> is garbled
> - if I decrease the terminal size fast, e.g. 81→71→61→51→41→31→21→11→1
> lines, often Emacs doesn't notice all changes, and it may still report
> that FrameRows(tty) is e.g. 31 when it went further down to 1
> (31→21→11→1)
> 
> - in addition there's a more complex refresh bug (not about resizing I
> think), in which the next frame I focus after having killed a frame
> won't be refreshed (e.g. I can resize the X window and it doesn't
> notice, new sections appear black) until I press a key or move the
> mouse. It's 100% reproducible but I need to research this better
> because it involves window managers and X
> 
> However I didn't see a direct crash from these issues. But maybe a GC
> message in some of these conditions can cause the alert.
> 
> I may report them as separate bugs but in a while; I'm reporting too
> many TTY bugs and too fast; I need time for other things.
> 
> I also saw a new type of TTY+GC error (not sure if it's the same issue
> as this bug):

Please investigate what happens with our SIGWINCH handler (in
dispnew.c) in these cases.





^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#71289: 30.0.50; cmcheckmagic aborts when tty_write_glyphs writes "Garbage collecting..." in some cases
  2024-05-31 18:17     ` Eli Zaretskii
@ 2024-06-03 15:35       ` Daniel Clemente
  2024-06-03 16:21         ` Eli Zaretskii
  0 siblings, 1 reply; 34+ messages in thread
From: Daniel Clemente @ 2024-06-03 15:35 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 71289

[-- Attachment #1: Type: text/plain, Size: 11166 bytes --]

>> > At point cmcheckmagic, ¿abort? 1. MagicWrap 1, curY 3, vs. 3 - 1. Now
>> tty has 3 rows, 14 cols
>
> So you are saying that the terminal lies to us?  It has 3 rows, but
> somehow wraps the cursor to the 4th row?  What are the window and
> frame dimensions at this point?

I don't know enough to say whether the terminal is providing wrong numbers.
But it seems that the positions and terminal dimensions aren't wrong,
they're just outdated. They were right a moment ago (i.e. the terminal was
really as large as reported) but I was resizing the window during a slow
operation (GC) that was trying to display a message due to
garbage-collection-messages t, and it seems that the GC message is using
outdated information about the terminal size. That's my hypothesis.

I have reproduced this in a more drastic way, e.g. the cursor in line 14
and the terminal being 4.

At point cmcheckmagic, ¿abort? 1. MagicWrap 1, curY 13, vs. 4 - 1. Now tty
has 4 rows, 80 cols


> What are the window and
> frame dimensions at this point?

(I'm using the example mentioned above: 13, vs. 4 - 1).
The frame seems 4 lines 80 columns.
I'm not sure how to obtain the window dimensions from gdb, since there are
several fields. Here are two attempts to get it, but total_cols/total_lines
are 0 so it seems I'm not looking at the right fields.

(gdb) bt
#0  terminate_due_to_signal (sig=6, backtrace_limit=40) at emacs.c:443
#1  0x00005555556bdde1 in emacs_abort () at sysdep.c:2391
#2  0x0000555555669c8e in cmcheckmagic (tty=0x5555620ec360) at cm.c:124
#3  0x000055555566e1a0 in tty_write_glyphs (f=0x555562caa780,
string=0x55555fb81720, len=80) at term.c:819
#4  0x0000555555678534 in write_glyphs (f=0x555562caa780,
string=0x55555fb80820, len=80) at terminal.c:163
#5  0x0000555555591958 in update_frame_line (f=0x555562caa780, vpos=13,
updating_menu_p=false) at dispnew.c:5321
#6  0x0000555555590a43 in update_frame_1 (f=0x555562caa780, force_p=true,
inhibit_id_p=true, set_cursor_p=true,
    updating_menu_p=false) at dispnew.c:4980
#7  0x000055555558cfad in update_frame (f=0x555562caa780, force_p=true,
inhibit_hairy_id_p=true) at dispnew.c:3346
#8  0x00005555555ca441 in echo_area_display (update_frame_p=true) at
xdisp.c:13487
#9  0x00005555555c63fb in message3_nolog (m=XIL(0x55555fcf7e54)) at
xdisp.c:12385
#10 0x00005555555c64a7 in message1_nolog (m=0x55555586f976 "Garbage
collecting...") at xdisp.c:12413
#11 0x0000555555732a80 in garbage_collect () at alloc.c:6587
#12 0x0000555555732817 in maybe_garbage_collect () at alloc.c:6507
#13 0x0000555555769a95 in maybe_gc () at /w/emacs/src/lisp.h:5927
#14 0x000055555576f4d7 in eval_sub (form=XIL(0x5555616dda13)) at eval.c:2502
#15 0x000055555576a6f5 in Fprogn (body=XIL(0)) at eval.c:439
#16 0x000055555576a725 in prog_ignore (body=XIL(0x5555616dd8f3)) at
eval.c:450
#17 0x000055555576c30a in Fwhile (args=XIL(0x5555616dd803)) at eval.c:1130
#18 0x000055555576f82d in eval_sub (form=XIL(0x5555616dd7f3)) at eval.c:2549
#19 0x000055555576a6f5 in Fprogn (body=XIL(0x5555616dd923)) at eval.c:439
#20 0x000055555576beb8 in FletX (args=XIL(0x5555616dd7a3)) at eval.c:1042
#21 0x000055555576f82d in eval_sub (form=XIL(0x5555616dd793)) at eval.c:2549

(gdb) frame 3
#3  0x000055555566e1a0 in tty_write_glyphs (f=0x555562caa780,
string=0x55555fb81720, len=80) at term.c:819
(gdb) p *f
$1 = {
  header = {
    size = 4611686018595348501
  },
  name = XIL(0x55555ffbf4a4),
  icon_name = XIL(0),
[…]
  text_cols = 80,
  text_lines = 4,
  text_width = 80,
  text_height = 4,
  total_cols = 80,
  total_lines = 4,
  pixel_width = 80,
  pixel_height = 4,
  new_width = -1,
  new_height = -1,
[…]

(gdb) p *((struct window*) f->selected_window)
$6 = {
  header = {
    size = 6152702861785432064
  },
  frame = XIL(0x55),
  next = XIL(0x5562caa9a5000000),
  prev = XIL(0x556252b675000055),
  parent = XIL(0xfff21ef0c7000055),
  normal_lines = XIL(0xfff2ba75bf00007f),
  normal_cols = XIL(0x1a00007f),
  new_total = XIL(0),
  new_normal = XIL(0x1a000000),
  new_pixel = XIL(0x5559e3af55000000),
  contents = XIL(0x5559e3af55000055),
  old_buffer = XIL(0x555f92c855000055),
  start = XIL(0x5559d0c41d000055),
  pointm = XIL(0x55604735d5000055),
  old_pointm = XIL(0xa000055),
  temslot = XIL(0),
  vertical_scroll_bar = XIL(0x30000000),
  vertical_scroll_bar_type = XIL(0),
  horizontal_scroll_bar = XIL(0x30000000),
  horizontal_scroll_bar_type = XIL(0),
  display_table = XIL(0),
  dedicated = XIL(0),
  combination_limit = XIL(0x5562913c43000000),
  window_parameters = XIL(0x30000055),
  cursor_type = XIL(0x555fcf7c94000000),
  mode_line_help_echo = XIL(0x5562966770000055),
  current_matrix = 0x5562a39930000055,
  desired_matrix = 0x55641a3233000055,
  prev_buffers = XIL(0x55),
  next_buffers = XIL(0x3cb000000),
  use_time = 3019898880,
  sequence_number = 3103784960,
  change_stamp = 117440512,
  pixel_left = 0,
  pixel_top = 117440512,
  left_col = 1342177280,
  top_line = 100663296,
  pixel_width = 100663296,
  pixel_height = 335544320,
  old_pixel_width = 100663296,
  old_pixel_height = 318767104,
  old_body_pixel_width = 1342177280,
  old_body_pixel_height = 100663296,
  total_cols = 0,
  total_lines = 0,
  hscroll = 0,
  min_hscroll = 0,
  hscroll_whole = 0,
  last_modified = 0,
  last_overlay_modified = 4144676995072,
  last_point = 3548213411840,
  last_mark = 0,
  base_line_number = 0,
  base_line_pos = -16777216,
  column_number_displayed = 72057594071482367,
  nrows_scale_factor = 16777216,
  ncols_scale_factor = 150994944,
  cursor = {
    x = 16777216,
--Type <RET> for more, q to quit, c to continue without paging--
    y = 150994944,
    hpos = 0,
    vpos = 0
  },
  phys_cursor = {
    x = 0,
    y = 0,
    hpos = 0,
    vpos = 0
  },
  output_cursor = {
    x = 0,
    y = 0,
    hpos = 150994944,
    vpos = -16777216
  },
  last_cursor_vpos = -1,
  left_fringe_width = 16777215,
  right_fringe_width = 0,
  left_margin_cols = -16777216,
  right_margin_cols = -1,
  scroll_bar_width = 33554431,
  scroll_bar_height = -16777216,
  mode_line_height = -1,
  header_line_height = -2080374785,
  tab_line_height = 352,
  window_end_pos = 1441151881060548608,
  window_end_vpos = 260,
  mini = false,
  horizontal = false,
  update_mode_line = false,
  last_had_star = false,
  start_at_line_beg = false,
  force_start = false,
  optional_new_start = false,
  phys_cursor_on_p = false,
  cursor_off_p = false,
  last_cursor_off_p = false,
  must_be_updated_p = false,
  pseudo_window_p = false,
  fringes_outside_margins = false,
  fringes_persistent = false,
  scroll_bars_persistent = false,
  window_end_valid = false,
  redisplay = false,
  suspend_auto_hscroll = false,
  preserve_vscroll_p = false,
  vscroll = 419430400,
  window_end_bytepos = 281543696187392
}
(gdb) p *((struct window*) f->root_window)
$7 = {
  header = {
    size = 6152702861785432064
  },
  frame = XIL(0x55620a01ed000055),
  next = XIL(0x55),
  prev = XIL(0),
  parent = XIL(0xfff2ba41a7000000),
  normal_lines = XIL(0xfff2ba419f00007f),
  normal_cols = XIL(0x3600007f),
  new_total = XIL(0),
  new_normal = XIL(0x36000000),
  new_pixel = XIL(0x5562caa9a5000000),
  contents = XIL(0x55599fab25000055),
  old_buffer = XIL(0x55),
  start = XIL(0),
  pointm = XIL(0),
  old_pointm = XIL(0x2000000),
  temslot = XIL(0),
  vertical_scroll_bar = XIL(0x30000000),
  vertical_scroll_bar_type = XIL(0),
  horizontal_scroll_bar = XIL(0x30000000),
  horizontal_scroll_bar_type = XIL(0),
  display_table = XIL(0),
  dedicated = XIL(0),
  combination_limit = XIL(0),
  window_parameters = XIL(0x30000000),
  cursor_type = XIL(0),
  mode_line_help_echo = XIL(0),
  current_matrix = 0x0,
  desired_matrix = 0x555d5785a3000000,
  prev_buffers = XIL(0x55),
  next_buffers = XIL(0x290000000),
  use_time = 3003121664,
  sequence_number = 100663296,
  change_stamp = 0,
  pixel_left = 0,
  pixel_top = 0,
  left_col = 1342177280,
  top_line = 218103808,
  pixel_width = 1207959552,
  pixel_height = 805306368,
  old_pixel_width = 1207959552,
  old_pixel_height = 788529152,
  old_body_pixel_width = 1342177280,
  old_body_pixel_height = 218103808,
  total_cols = 0,
  total_lines = 0,
  hscroll = 0,
  min_hscroll = 0,
  hscroll_whole = 36758880256,
  last_modified = 3741319168,
  last_overlay_modified = 1599271337984,
  last_point = 1589456666624,
  last_mark = 18740150272,
  base_line_number = 0,
  base_line_pos = 989855744,
  column_number_displayed = 72057594054705152,
  nrows_scale_factor = 0,
  ncols_scale_factor = 0,
  cursor = {
    x = 0,
--Type <RET> for more, q to quit, c to continue without paging--
    y = 0,
    hpos = 0,
    vpos = 0
  },
  phys_cursor = {
    x = 0,
    y = 0,
    hpos = 0,
    vpos = 0
  },
  output_cursor = {
    x = 0,
    y = 0,
    hpos = 0,
    vpos = -16777216
  },
  last_cursor_vpos = -1,
  left_fringe_width = 16777215,
  right_fringe_width = 0,
  left_margin_cols = -16777216,
  right_margin_cols = -1,
  scroll_bar_width = 33554431,
  scroll_bar_height = -16777216,
  mode_line_height = -1,
  header_line_height = 16777215,
  tab_line_height = 0,
  window_end_pos = 1152921504606846976,
  window_end_vpos = 0,
  mini = false,
  horizontal = false,
  update_mode_line = false,
  last_had_star = false,
  start_at_line_beg = false,
  force_start = false,
  optional_new_start = false,
  phys_cursor_on_p = false,
  cursor_off_p = false,
  last_cursor_off_p = false,
  must_be_updated_p = false,
  pseudo_window_p = false,
  fringes_outside_margins = false,
  fringes_persistent = false,
  scroll_bars_persistent = false,
  window_end_valid = false,
  redisplay = false,
  suspend_auto_hscroll = false,
  preserve_vscroll_p = false,
  vscroll = 1191182336,
  window_end_bytepos = 6152702647217422336
}




On Fri, 31 May 2024 at 18:18, Eli Zaretskii <eliz@gnu.org> wrote:

> > From: Daniel Clemente <n142857@gmail.com>
> > Date: Fri, 31 May 2024 17:07:45 +0000
> > Cc: 71289@debbugs.gnu.org
> >
> > > Thanks, but these backtraces are not enough, because they don't
> > > explain why was emacs_abort called.  We need to see all the values
> > > involved in this condition:
> > >
> > >  if (curX (tty) == FrameCols (tty))
> > >    {
> > >      if (!MagicWrap (tty) || curY (tty) >= FrameRows (tty) - 1)
> <<<<<<<<<<<
> > >        emacs_abort ();
> >
> >
> > These were the variables just before emacs_abort, and (abort==1) when
> aborting.
> >
> > At point cmcheckmagic, ¿abort? 0. MagicWrap 1, curY 0, vs. 3 - 1. Now
> > tty has 3 rows, 14 cols
> > At point cmcheckmagic, ¿abort? 0. MagicWrap 1, curY 1, vs. 3 - 1. Now
> > tty has 3 rows, 14 cols
> > At point cmcheckmagic, ¿abort? 1. MagicWrap 1, curY 3, vs. 3 - 1. Now
> > tty has 3 rows, 14 cols
>
> So you are saying that the terminal lies to us?  It has 3 rows, but
> somehow wraps the cursor to the 4th row?  What are the window and
> frame dimensions at this point?
>

[-- Attachment #2: Type: text/html, Size: 13090 bytes --]

^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#71289: 30.0.50; cmcheckmagic aborts when tty_write_glyphs writes "Garbage collecting..." in some cases
  2024-05-31 10:18 bug#71289: 30.0.50; cmcheckmagic aborts when tty_write_glyphs writes "Garbage collecting..." in some cases Daniel Clemente
  2024-05-31 11:17 ` Eli Zaretskii
  2024-05-31 17:09 ` Daniel Clemente
@ 2024-06-03 15:36 ` Daniel Clemente
  2024-06-03 16:25   ` Eli Zaretskii
  2 siblings, 1 reply; 34+ messages in thread
From: Daniel Clemente @ 2024-06-03 15:36 UTC (permalink / raw)
  To: 71289; +Cc: Eli Zaretskii

Many of the backtraces I'm sending (more below) point to the same
issue: resizing the terminal while the GC messages are being displayed
can make the asserts fail.
Depending on the time I 'catch' it it shows an error or another in the
backtrace.


I still don't have a way to reproduce this, but the following recipe
seems to improve the chances:
(setq garbage-collection-messages t)

Then run some operation that clearly triggers GC. For instance I'm
using this formula (better ideas welcome):
(setq gc-cons-threshold 100000)
(cl-loop for i from 3000000 downto 1 do (+ 2.00 (+ 2.0 (+ 2.0 (+ 2.0
(+ 2.0 2.0))))))

While that operation is running (you'll repeatedly see "Garbage
collecting" "… done"), resize the terminal constantly until it
crashes.
But sometimes I can't reproduce it at all with this method!
And never could I in emacs -Q

But I'm getting tired of manually testing. I may have to automate the resizing.

Anyway this is a very rare bug which probably only happens when GC
messages are enabled, in TTY emacs, and while resizing the terminal.
An obvious workaround if this affects others is disabling
garbage-collection-messages, which seems buggy.
Maybe the problem is in message3_nolog.


Here's are two backtraces of two crashes in different points that I
didn't report yet. I suspect they are all this same bug because they
involve GC.

dispnew.c:3155: Emacs fatal error: assertion failed: vpos >= 0 && vpos
<= FRAME_TOTAL_LINES (XFRAME (w->frame))

Breakpoint 1, terminate_due_to_signal (sig=6,
backtrace_limit=2147483647) at emacs.c:443
443  signal (sig, SIG_DFL);
(gdb) bt
#0  terminate_due_to_signal (sig=6, backtrace_limit=2147483647) at emacs.c:443
#1  0x0000555555735c81 in die (msg=0x55555584e908 "vpos >= 0 && vpos
<= FRAME_TOTAL_LINES (XFRAME (w->frame))",
    file=0x55555584e231 "dispnew.c", line=3155) at alloc.c:8082
#2  0x000055555558cc96 in window_to_frame_vpos (w=0x555556559190,
vpos=26) at dispnew.c:3155
#3  0x0000555555590ea9 in update_frame_1 (f=0x5555560374b8,
force_p=true, inhibit_id_p=true, set_cursor_p=true,
    updating_menu_p=false) at dispnew.c:5089
#4  0x000055555558cfad in update_frame (f=0x5555560374b8,
force_p=true, inhibit_hairy_id_p=true) at dispnew.c:3346
#5  0x00005555555ca441 in echo_area_display (update_frame_p=true) at
xdisp.c:13487
#6  0x00005555555c63fb in message3_nolog (m=XIL(0x555557424cf4)) at
xdisp.c:12385
#7  0x00005555555c97d8 in restore_message () at xdisp.c:13166
#8  0x0000555555732cd2 in garbage_collect () at alloc.c:6690
#9  0x0000555555732817 in maybe_garbage_collect () at alloc.c:6507
#10 0x0000555555769a95 in maybe_gc () at /w/emacs/src/lisp.h:5927
#11 0x000055555576f4d7 in eval_sub (form=XIL(0x555556d39bf3)) at eval.c:2502








dispnew.c:2649: Emacs fatal error: assertion failed: glyph_row_slice_p
(window_row, frame_row)

Breakpoint 1, terminate_due_to_signal (sig=6,
backtrace_limit=2147483647) at emacs.c:443
443  signal (sig, SIG_DFL);
(gdb) bt
#0  terminate_due_to_signal (sig=6, backtrace_limit=2147483647) at emacs.c:443
#1  0x0000555555735c81 in die (msg=0x55555584e838 "glyph_row_slice_p
(window_row, frame_row)",
    file=0x55555584e231 "dispnew.c", line=2649) at alloc.c:8082
#2  0x000055555558b5f3 in build_frame_matrix_from_leaf_window
(frame_matrix=0x55555607fc20, w=0x555556037970)
    at dispnew.c:2649
#3  0x000055555558b10f in build_frame_matrix_from_window_tree
(matrix=0x55555607fc20, w=0x555556037970) at dispnew.c:2538
#4  0x000055555558b0a4 in build_frame_matrix (f=0x5555560374b8) at
dispnew.c:2522
#5  0x000055555558cf68 in update_frame (f=0x5555560374b8,
force_p=true, inhibit_hairy_id_p=true) at dispnew.c:3336
#6  0x00005555555ca441 in echo_area_display (update_frame_p=true) at
xdisp.c:13487
#7  0x00005555555c63fb in message3_nolog (m=XIL(0x555559663284)) at
xdisp.c:12385
#8  0x00005555555c64a7 in message1_nolog (m=0x55555586f976 "Garbage
collecting...") at xdisp.c:12413
#9  0x0000555555732a80 in garbage_collect () at alloc.c:6587
#10 0x0000555555732817 in maybe_garbage_collect () at alloc.c:6507
#11 0x0000555555769a95 in maybe_gc () at /w/emacs/src/lisp.h:5927
#12 0x000055555576f4d7 in eval_sub (form=XIL(0x555559b8e323)) at eval.c:2502
#13 0x000055555576a6f5 in Fprogn (body=XIL(0)) at eval.c:439
#14 0x000055555576a725 in prog_ignore (body=XIL(0x555559b8e3c3)) at eval.c:450
#15 0x000055555576c30a in Fwhile (args=XIL(0x555559b8e453)) at eval.c:1130
#16 0x000055555576f82d in eval_sub (form=XIL(0x555559b8e463)) at eval.c:2549
#17 0x000055555576a6f5 in Fprogn (body=XIL(0x555559b8e393)) at eval.c:439
#18 0x000055555576beb8 in FletX (args=XIL(0x555559b8e4b3)) at eval.c:1042
#19 0x000055555576f82d in eval_sub (form=XIL(0x555559b8e4c3)) at eval.c:2549
#20 0x000055555576f2ad in Feval (form=XIL(0x555559b8e4c3),
lexical=XIL(0)) at eval.c:2462
#21 0x0000555555771416 in funcall_subr (subr=0x555555ec5a80 <Seval>,
numargs=2, args=0x7fffffffc8c8) at eval.c:3163
#22 0x0000555555770db6 in funcall_general (fun=XIL(0x555555ec5a85),
numargs=2, args=0x7fffffffc8c8) at eval.c:3040
#23 0x00005555557710bf in Ffuncall (nargs=3, args=0x7fffffffc8c0) at eval.c:3093
#24 0x00007ffff1488d94 in
F656c6973702d2d6576616c2d6c6173742d73657870_elisp__eval_last_sexp_0 ()
   from /opt/dc/emacs/bin/../lib/emacs/30.0.50/native-lisp/30.0.50-3670981c/preloaded/elisp-mode-90dbfe40-73c5a2ea.eln
#25 0x00005555557713ef in funcall_subr (subr=0x7ffff1d49010,
numargs=1, args=0x7ffff05ff038) at eval.c:3161
#26 0x00005555557cd7bc in exec_byte_code (fun=XIL(0x5555599b90fd),
args_template=0, nargs=0, args=0x7fffffffcfd0)
    at bytecode.c:812
#27 0x0000555555771a68 in funcall_lambda (fun=XIL(0x5555599b90fd),
nargs=0, arg_vector=0x7fffffffcfd0) at eval.c:3252
#28 0x0000555555770e02 in funcall_general (fun=XIL(0x5555599b90fd),
numargs=0, args=0x7fffffffcfd0) at eval.c:3044
#29 0x00005555557710bf in Ffuncall (nargs=1, args=0x7fffffffcfc8) at eval.c:3093
#30 0x000055555576937e in call0 (fn=XIL(0x5555599b90fd)) at
/w/emacs/src/lisp.h:3515
#31 0x000055555576cbe2 in Fhandler_bind_1 (nargs=3,
args=0x7fffffffd050) at eval.c:1478
#32 0x00007ffff14892c4 in F6576616c2d6c6173742d73657870_eval_last_sexp_0 ()
   from /opt/dc/emacs/bin/../lib/emacs/30.0.50/native-lisp/30.0.50-3670981c/preloaded/elisp-mode-90dbfe40-73c5a2ea.eln
#33 0x00005555557713ef in funcall_subr (subr=0x7ffff1d056e0,
numargs=1, args=0x7fffffffd330) at eval.c:3161
#34 0x0000555555770db6 in funcall_general (fun=XIL(0x7ffff1d056e5),
numargs=1, args=0x7fffffffd330) at eval.c:3040
#35 0x00005555557710bf in Ffuncall (nargs=2, args=0x7fffffffd328) at eval.c:3093
#36 0x00005555557656ec in Ffuncall_interactively (nargs=2,
args=0x7fffffffd328) at callint.c:250
#37 0x000055555577164f in funcall_subr (subr=0x555555ec4d00
<Sfuncall_interactively>, numargs=2, args=0x7fffffffd328)
    at eval.c:3184
#38 0x0000555555770db6 in funcall_general (fun=XIL(0x555555ec4d05),
numargs=2, args=0x7fffffffd328) at eval.c:3040
#39 0x00005555557710bf in Ffuncall (nargs=3, args=0x7fffffffd320) at eval.c:3093
#40 0x0000555555767d88 in Fcall_interactively
(function=XIL(0x2aaa9bdbe9b0), record_flag=XIL(0),
    keys=XIL(0x5555596dec2d)) at callint.c:789
#41 0x00007ffff16848fd in F636f6d6d616e642d65786563757465_command_execute_0 ()
   from /opt/dc/emacs/bin/../lib/emacs/30.0.50/native-lisp/30.0.50-3670981c/preloaded/simple-fab5b0cf-651091ae.eln
#42 0x0000555555771484 in funcall_subr (subr=0x7ffff212eff8,
numargs=1, args=0x7fffffffda98) at eval.c:3167
#43 0x0000555555770db6 in funcall_general (fun=XIL(0x7ffff212effd),
numargs=1, args=0x7fffffffda98) at eval.c:3040
#44 0x00005555557710bf in Ffuncall (nargs=2, args=0x7fffffffda90) at eval.c:3093
#45 0x0000555555691eb7 in command_loop_1 () at keyboard.c:1550
#46 0x000055555576d295 in internal_condition_case (bfun=0x55555569167e
<command_loop_1>, handlers=XIL(0x90),
    hfun=0x555555690b29 <cmd_error>) at eval.c:1613
#47 0x000055555569125c in command_loop_2 (handlers=XIL(0x90)) at keyboard.c:1168
#48 0x000055555576c6c2 in internal_catch (tag=XIL(0xfc60),
func=0x555555691232 <command_loop_2>, arg=XIL(0x90))
    at eval.c:1292
#49 0x00005555556911ee in command_loop () at keyboard.c:1146
#50 0x00005555556905cb in recursive_edit_1 () at keyboard.c:754
#51 0x00005555556907f7 in Frecursive_edit () at keyboard.c:837
--Type <RET> for more, q to quit, c to continue without paging--q
Quit
(gdb) xbacktrace
DCL: step0 in handle_window_change_signal, sig 28
DCL: handle_window_change_signal, tty
"Automatic GC" (0x0)
"while" (0xffffc430)
"let*" (0xffffc630)
"eval" (0xffffc8c8)
"elisp--eval-last-sexp" (0xf05ff038)
0x599b90f8 PVEC_CLOSURE
"eval-last-sexp" (0xffffd330)
"funcall-interactively" (0xffffd328)
"command-execute" (0xffffda98)
(gdb) bt full
#0  terminate_due_to_signal (sig=6, backtrace_limit=2147483647) at emacs.c:443
No locals.
#1  0x0000555555735c81 in die (msg=0x55555584e838 "glyph_row_slice_p
(window_row, frame_row)",
    file=0x55555584e231 "dispnew.c", line=2649) at alloc.c:8082
No locals.
#2  0x000055555558b5f3 in build_frame_matrix_from_leaf_window
(frame_matrix=0x55555607fc20, w=0x555556037970)
    at dispnew.c:2649
        frame_row = 0x555559e21520
        window_row = 0x55555a498010
        current_row_p = false
        window_matrix = 0x55555925ac50
        window_y = 0
        frame_y = 12
        right_border_glyph = {
          ch = 0,
          face_id = 0
        }
#3  0x000055555558b10f in build_frame_matrix_from_window_tree
(matrix=0x55555607fc20, w=0x555556037970) at dispnew.c:2538
No locals.
#4  0x000055555558b0a4 in build_frame_matrix (f=0x5555560374b8) at
dispnew.c:2522
        i = 13
#5  0x000055555558cf68 in update_frame (f=0x5555560374b8,
force_p=true, inhibit_hairy_id_p=true) at dispnew.c:3336
        paused_p = false
        root_window = 0x555556082ac0
#6  0x00005555555ca441 in echo_area_display (update_frame_p=true) at
xdisp.c:13487
        n = 0
        mini_window = XIL(0x555556037975)
        w = 0x555556037970
        f = 0x5555560374b8
        window_height_changed_p = false
        sf = 0x5555560374b8
#7  0x00005555555c63fb in message3_nolog (m=XIL(0x555559663284)) at
xdisp.c:12385
        mini_window = XIL(0x555556037975)
        frame = XIL(0x5555560374bd)
        f = 0x5555560374b8
        sf = 0x5555560374b8
#8  0x00005555555c64a7 in message1_nolog (m=0x55555586f976 "Garbage
collecting...") at xdisp.c:12413
No locals.
#9  0x0000555555732a80 in garbage_collect () at alloc.c:6587
        tail = XIL(0)
        buffer = XIL(0x555557a3418d)
        stack_top_variable = 0 '\000'
        message_p = true
        count = {
          bytes = 480
        }
        start = {
          tv_sec = 1717410695,
          tv_nsec = 985484457
        }
        tot_before = 18446744073709551615
        visitor = {
          visit = 0x7fffffffc180,
          data = 0x555555732639 <consing_threshold+116>
        }





^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#71289: 30.0.50; cmcheckmagic aborts when tty_write_glyphs writes "Garbage collecting..." in some cases
  2024-05-31 18:26   ` Eli Zaretskii
@ 2024-06-03 15:56     ` Daniel Clemente
  2024-06-03 16:03       ` Eli Zaretskii
  0 siblings, 1 reply; 34+ messages in thread
From: Daniel Clemente @ 2024-06-03 15:56 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 71289

[-- Attachment #1: Type: text/plain, Size: 2340 bytes --]

> Please investigate what happens with our SIGWINCH handler (in
> dispnew.c) in these cases.

In the case mentioned above, in which: after killing a frame and resizing
another one, new sections appear black.
I reported it as bug #71343, since it's not related to GC like this bug.


On Fri, 31 May 2024 at 18:27, Eli Zaretskii <eliz@gnu.org> wrote:

> > From: Daniel Clemente <n142857@gmail.com>
> > Date: Fri, 31 May 2024 17:09:29 +0000
> > Cc: Eli Zaretskii <eliz@gnu.org>
> >
> > While playing with resizing the urxvt terminal size (X window), I
> > found other bugs where Emacs doesn't know the real size of the
> > terminal, or becomes unsynchronized with the actual terminal size.
> > This may cause many of the other bugs I've seen (things in the style
> > of: the GC message wants to use 2 minibuffer lines because it thinks
> > there are 2 lines, but actually there's just 1, etc.).
> >
> > The two resizing bugs I found (but I don't have time to research them
> > in detail yet) are:
> > - if the X terminal has 4 visible rows, FrameRows(tty) reports 4. If
> > 3, then 3. But if it has 2 or 1 rows, Emacs still sees 3. And editing
> > is garbled
> > - if I decrease the terminal size fast, e.g. 81→71→61→51→41→31→21→11→1
> > lines, often Emacs doesn't notice all changes, and it may still report
> > that FrameRows(tty) is e.g. 31 when it went further down to 1
> > (31→21→11→1)
> >
> > - in addition there's a more complex refresh bug (not about resizing I
> > think), in which the next frame I focus after having killed a frame
> > won't be refreshed (e.g. I can resize the X window and it doesn't
> > notice, new sections appear black) until I press a key or move the
> > mouse. It's 100% reproducible but I need to research this better
> > because it involves window managers and X
> >
> > However I didn't see a direct crash from these issues. But maybe a GC
> > message in some of these conditions can cause the alert.
> >
> > I may report them as separate bugs but in a while; I'm reporting too
> > many TTY bugs and too fast; I need time for other things.
> >
> > I also saw a new type of TTY+GC error (not sure if it's the same issue
> > as this bug):
>
> Please investigate what happens with our SIGWINCH handler (in
> dispnew.c) in these cases.
>

[-- Attachment #2: Type: text/html, Size: 3082 bytes --]

^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#71289: 30.0.50; cmcheckmagic aborts when tty_write_glyphs writes "Garbage collecting..." in some cases
  2024-06-03 15:56     ` Daniel Clemente
@ 2024-06-03 16:03       ` Eli Zaretskii
  2024-06-03 16:28         ` Daniel Clemente
  0 siblings, 1 reply; 34+ messages in thread
From: Eli Zaretskii @ 2024-06-03 16:03 UTC (permalink / raw)
  To: Daniel Clemente; +Cc: 71289

> From: Daniel Clemente <n142857@gmail.com>
> Date: Mon, 3 Jun 2024 15:56:17 +0000
> Cc: 71289@debbugs.gnu.org
> 
> > Please investigate what happens with our SIGWINCH handler (in
> > dispnew.c) in these cases.
> 
> In the case mentioned above, in which: after killing a frame and resizing another one, new sections appear
> black.
> I reported it as bug #71343, since it's not related to GC like this bug.

I'm not sure I understand: is this related to this bug in some way?

Bug#71343 seems to describe a GUI frame (if not, what does the
window-manager have to do with it?).  While here we are talking about
TTY frames, right?  And killing frames is not involved in this bug
report, right?  Or what am I missing?





^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#71289: 30.0.50; cmcheckmagic aborts when tty_write_glyphs writes "Garbage collecting..." in some cases
  2024-06-03 15:35       ` Daniel Clemente
@ 2024-06-03 16:21         ` Eli Zaretskii
  0 siblings, 0 replies; 34+ messages in thread
From: Eli Zaretskii @ 2024-06-03 16:21 UTC (permalink / raw)
  To: Daniel Clemente; +Cc: 71289

> From: Daniel Clemente <n142857@gmail.com>
> Date: Mon, 3 Jun 2024 15:35:20 +0000
> Cc: 71289@debbugs.gnu.org
> 
> > So you are saying that the terminal lies to us?  It has 3 rows, but
> > somehow wraps the cursor to the 4th row?  What are the window and
> > frame dimensions at this point?
> 
> I don't know enough to say whether the terminal is providing wrong numbers.
> But it seems that the positions and terminal dimensions aren't wrong, they're just outdated. They were right a
> moment ago (i.e. the terminal was really as large as reported) but I was resizing the window during a slow
> operation (GC) that was trying to display a message due to garbage-collection-messages t, and it seems that
> the GC message is using outdated information about the terminal size. That's my hypothesis.

That hypothesis needs to be explained.  Which is why I asked to
investigate what happens when the SIGWINCH handler is called.

> > What are the window and
> > frame dimensions at this point?
> 
> (I'm using the example mentioned above: 13, vs. 4 - 1). 
> The frame seems 4 lines 80 columns.
> I'm not sure how to obtain the window dimensions from gdb, since there are several fields. Here are two
> attempts to get it, but total_cols/total_lines are 0 so it seems I'm not looking at the right fields.

We determine the actual dimensions of the frame in the SIGWINCH
handler, and the new dimensions are recorded by the signal handler in
f->new_width and f->new_height, see change_frame_size_1.





^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#71289: 30.0.50; cmcheckmagic aborts when tty_write_glyphs writes "Garbage collecting..." in some cases
  2024-06-03 15:36 ` Daniel Clemente
@ 2024-06-03 16:25   ` Eli Zaretskii
  2024-06-03 16:55     ` Daniel Clemente
  2024-06-05 13:52     ` Daniel Clemente
  0 siblings, 2 replies; 34+ messages in thread
From: Eli Zaretskii @ 2024-06-03 16:25 UTC (permalink / raw)
  To: Daniel Clemente; +Cc: 71289

> From: Daniel Clemente <n142857@gmail.com>
> Date: Mon, 3 Jun 2024 15:36:05 +0000
> Cc: Eli Zaretskii <eliz@gnu.org>
> 
> I still don't have a way to reproduce this, but the following recipe
> seems to improve the chances:
> (setq garbage-collection-messages t)
> 
> Then run some operation that clearly triggers GC. For instance I'm
> using this formula (better ideas welcome):
> (setq gc-cons-threshold 100000)
> (cl-loop for i from 3000000 downto 1 do (+ 2.00 (+ 2.0 (+ 2.0 (+ 2.0
> (+ 2.0 2.0))))))
> 
> While that operation is running (you'll repeatedly see "Garbage
> collecting" "… done"), resize the terminal constantly until it
> crashes.

It doesn't crash for me.

> But sometimes I can't reproduce it at all with this method!
> And never could I in emacs -Q

So maybe you could bisect your init files and find the
customization(s) which make the reproduction possible?  Because I
cannot reproduce any of this here, no matter what I try.





^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#71289: 30.0.50; cmcheckmagic aborts when tty_write_glyphs writes "Garbage collecting..." in some cases
  2024-06-03 16:03       ` Eli Zaretskii
@ 2024-06-03 16:28         ` Daniel Clemente
  2024-06-03 16:36           ` Eli Zaretskii
  0 siblings, 1 reply; 34+ messages in thread
From: Daniel Clemente @ 2024-06-03 16:28 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 71289

> Bug#71343 seems to describe a GUI frame (if not, what does the
> window-manager have to do with it?).  While here we are talking about
> TTY frames, right?  And killing frames is not involved in this bug
> report, right?  Or what am I missing?

This one (bug 71289) seems to be about crashes involving GC messages
and resizing the terminal.
I don't know the root cause; it could be some bug in the redisplay code.
I started thinking about other redisplay bugs and filed bug#71343, but
that one isn't related to this bug because it's not about GC. The
other 2 issues I mentioned may or not be related, I don't know.

In all reports I'm using TTY frames, i.e. Emacs compiled without X
support; it's not GUI frames.  But I'm running them inside a urxvt
window in X with a window manager.  I wanted a simpler and smaller
Emacs without any X support, but I still run it in X.

Killing frames is not involved or necessary for the current bug report (#71289).

On Mon, 3 Jun 2024 at 16:03, Eli Zaretskii <eliz@gnu.org> wrote:
>
> > From: Daniel Clemente <n142857@gmail.com>
> > Date: Mon, 3 Jun 2024 15:56:17 +0000
> > Cc: 71289@debbugs.gnu.org
> >
> > > Please investigate what happens with our SIGWINCH handler (in
> > > dispnew.c) in these cases.
> >
> > In the case mentioned above, in which: after killing a frame and resizing another one, new sections appear
> > black.
> > I reported it as bug #71343, since it's not related to GC like this bug.
>
> I'm not sure I understand: is this related to this bug in some way?
>
> Bug#71343 seems to describe a GUI frame (if not, what does the
> window-manager have to do with it?).  While here we are talking about
> TTY frames, right?  And killing frames is not involved in this bug
> report, right?  Or what am I missing?





^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#71289: 30.0.50; cmcheckmagic aborts when tty_write_glyphs writes "Garbage collecting..." in some cases
  2024-06-03 16:28         ` Daniel Clemente
@ 2024-06-03 16:36           ` Eli Zaretskii
  2024-06-03 16:51             ` Daniel Clemente
  0 siblings, 1 reply; 34+ messages in thread
From: Eli Zaretskii @ 2024-06-03 16:36 UTC (permalink / raw)
  To: Daniel Clemente; +Cc: 71289

> From: Daniel Clemente <n142857@gmail.com>
> Date: Mon, 3 Jun 2024 16:28:11 +0000
> Cc: 71289@debbugs.gnu.org
> 
> > Bug#71343 seems to describe a GUI frame (if not, what does the
> > window-manager have to do with it?).  While here we are talking about
> > TTY frames, right?  And killing frames is not involved in this bug
> > report, right?  Or what am I missing?
> 
> This one (bug 71289) seems to be about crashes involving GC messages
> and resizing the terminal.

AFAIR, almost all of the bugs you submitted have something to do with
GC messages, so the above doesn't help in any way to make this one
stand out, or am I confused?

> I don't know the root cause; it could be some bug in the redisplay code.
> I started thinking about other redisplay bugs and filed bug#71343, but
> that one isn't related to this bug because it's not about GC. The
> other 2 issues I mentioned may or not be related, I don't know.
> 
> In all reports I'm using TTY frames, i.e. Emacs compiled without X
> support; it's not GUI frames.  But I'm running them inside a urxvt
> window in X with a window manager.  I wanted a simpler and smaller
> Emacs without any X support, but I still run it in X.

So how is the window manager relevant here?





^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#71289: 30.0.50; cmcheckmagic aborts when tty_write_glyphs writes "Garbage collecting..." in some cases
  2024-06-03 16:36           ` Eli Zaretskii
@ 2024-06-03 16:51             ` Daniel Clemente
  0 siblings, 0 replies; 34+ messages in thread
From: Daniel Clemente @ 2024-06-03 16:51 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 71289

> >
> > > Bug#71343 seems to describe a GUI frame (if not, what does the
> > > window-manager have to do with it?).  While here we are talking about
> > > TTY frames, right?  And killing frames is not involved in this bug
> > > report, right?  Or what am I missing?
> >
> > This one (bug 71289) seems to be about crashes involving GC messages
> > and resizing the terminal.
>
> AFAIR, almost all of the bugs you submitted have something to do with
> GC messages, so the above doesn't help in any way to make this one
> stand out, or am I confused?

Bug 71343 has nothing to do with GC.

This one (bug 71289) does. I don't know what you mean by stand out; it
doesn't need to stand out.
But each bug is different, e.g.:
- 71176 was a bug about GC messages not working well when
opening+closing frames, in some conditions
- this one (71289) is about GC messages not working well when resizing
the terminal, in some conditions


> > In all reports I'm using TTY frames, i.e. Emacs compiled without X
> > support; it's not GUI frames.  But I'm running them inside a urxvt
> > window in X with a window manager.  I wanted a simpler and smaller
> > Emacs without any X support, but I still run it in X.
>
> So how is the window manager relevant here?

Here (bug 71289) you need a window manager to resize the window (the X
window that is running emacsclient).
The particular window manager you use isn't important, in fact I saw
the same errors happen in wmii and icewm.  Saying this is important,
because I was afraid that the problems could come from wmii (wmii
failing to communicate that an X window has been resized). But the
window manager isn't at fault in this bug 71289.





^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#71289: 30.0.50; cmcheckmagic aborts when tty_write_glyphs writes "Garbage collecting..." in some cases
  2024-06-03 16:25   ` Eli Zaretskii
@ 2024-06-03 16:55     ` Daniel Clemente
  2024-06-03 17:39       ` Eli Zaretskii
  2024-06-05 13:52     ` Daniel Clemente
  1 sibling, 1 reply; 34+ messages in thread
From: Daniel Clemente @ 2024-06-03 16:55 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 71289

> > But sometimes I can't reproduce it at all with this method!
> > And never could I in emacs -Q
>
> So maybe you could bisect your init files and find the
> customization(s) which make the reproduction possible?  Because I
> cannot reproduce any of this here, no matter what I try.

I tried but it took too long to evaluate each version, because I don't
have a formula to reproduce this. Sometimes I could crash it in
seconds, sometimes I couldn't in minutes.
I'll try to reproduce it in a faster way.





^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#71289: 30.0.50; cmcheckmagic aborts when tty_write_glyphs writes "Garbage collecting..." in some cases
  2024-06-03 16:55     ` Daniel Clemente
@ 2024-06-03 17:39       ` Eli Zaretskii
  2024-06-05 13:50         ` Daniel Clemente
  0 siblings, 1 reply; 34+ messages in thread
From: Eli Zaretskii @ 2024-06-03 17:39 UTC (permalink / raw)
  To: Daniel Clemente; +Cc: 71289

> From: Daniel Clemente <n142857@gmail.com>
> Date: Mon, 3 Jun 2024 16:55:25 +0000
> Cc: 71289@debbugs.gnu.org
> 
> > > But sometimes I can't reproduce it at all with this method!
> > > And never could I in emacs -Q
> >
> > So maybe you could bisect your init files and find the
> > customization(s) which make the reproduction possible?  Because I
> > cannot reproduce any of this here, no matter what I try.
> 
> I tried but it took too long to evaluate each version, because I don't
> have a formula to reproduce this. Sometimes I could crash it in
> seconds, sometimes I couldn't in minutes.
> I'll try to reproduce it in a faster way.

Please update from Git before trying anything else wrt this bug.  I
installed a simple baind-aid that is intended to avoid problems with
frame dimensions while we have an unhandled SIGWINCH.





^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#71289: 30.0.50; cmcheckmagic aborts when tty_write_glyphs writes "Garbage collecting..." in some cases
  2024-05-31 17:09 ` Daniel Clemente
  2024-05-31 18:26   ` Eli Zaretskii
@ 2024-06-03 17:44   ` Eli Zaretskii
  2024-06-05 13:51     ` Daniel Clemente
  1 sibling, 1 reply; 34+ messages in thread
From: Eli Zaretskii @ 2024-06-03 17:44 UTC (permalink / raw)
  To: Daniel Clemente; +Cc: 71289

> From: Daniel Clemente <n142857@gmail.com>
> Date: Fri, 31 May 2024 17:09:29 +0000
> Cc: Eli Zaretskii <eliz@gnu.org>
> 
> I also saw a new type of TTY+GC error (not sure if it's the same issue
> as this bug):
> 
> alloc.c:7517: Emacs fatal error: assertion failed: t->name != NULL
> 
> Breakpoint 1, terminate_due_to_signal (sig=6,
> backtrace_limit=2147483647) at emacs.c:443
> 443      signal (sig, SIG_DFL);
> (gdb) bt
> #0  terminate_due_to_signal (sig=6, backtrace_limit=2147483647) at emacs.c:443
> #1  0x000055555573591a in die (msg=0x55555586f838 "t->name != NULL",
> file=0x55555586e97e "alloc.c", line=7517) at alloc.c:8082
> #2  0x00005555557346e8 in mark_terminals () at alloc.c:7517

If this was while you only resized the terminal, how come a terminal
was deleted?  Any idea what would cause this?





^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#71289: 30.0.50; cmcheckmagic aborts when tty_write_glyphs writes "Garbage collecting..." in some cases
  2024-06-03 17:39       ` Eli Zaretskii
@ 2024-06-05 13:50         ` Daniel Clemente
  2024-06-05 15:06           ` Eli Zaretskii
  0 siblings, 1 reply; 34+ messages in thread
From: Daniel Clemente @ 2024-06-05 13:50 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 71289

> Please update from Git before trying anything else wrt this bug.  I
> installed a simple baind-aid that is intended to avoid problems with
> frame dimensions while we have an unhandled SIGWINCH.

Thanks for the code.

With it (running on 799f78a92c6c31f4d181390523b83d036020ede1 with no
other changes), I still see the same types of crash that I already
reported: in tty_write_glyphs (see BT1 below) and in
build_frame_matrix_from_leaf_window (see BT2 below).
However they don't mention GC now.


BT1

[Detaching after vfork from child process 2902]
[Detaching after vfork from child process 2903]
[Detaching after vfork from child process 3039]
Garbage collecting...
When done with this frame, type C-x 5 0

Breakpoint 1, terminate_due_to_signal (sig=6, backtrace_limit=40) at emacs.c:443
443      signal (sig, SIG_DFL);
(gdb) cont
Continuing.
Fatal error 6: Aborted
Backtrace:
/opt/dc/emacs/bin/emacs(+0x169205)[0x5555556bd205]
/opt/dc/emacs/bin/emacs(+0x134500)[0x555555688500]
/opt/dc/emacs/bin/emacs(+0x169273)[0x5555556bd273]
/opt/dc/emacs/bin/emacs(+0x11511e)[0x55555566911e]
/opt/dc/emacs/bin/emacs(+0x119632)[0x55555566d632]
/opt/dc/emacs/bin/emacs(+0x1239c6)[0x5555556779c6]
/opt/dc/emacs/bin/emacs(+0x3d8f7)[0x5555555918f7]
/opt/dc/emacs/bin/emacs(+0x3c9e2)[0x5555555909e2]
/opt/dc/emacs/bin/emacs(+0x38f4c)[0x55555558cf4c]
/opt/dc/emacs/bin/emacs(+0x7b5c9)[0x5555555cf5c9]
/opt/dc/emacs/bin/emacs(+0x7befd)[0x5555555cfefd]
/opt/dc/emacs/bin/emacs(+0x299dbc)[0x5555557eddbc]
/opt/dc/emacs/bin/emacs(+0x40ee0)[0x555555594ee0]
/opt/dc/emacs/bin/emacs(+0x1412a8)[0x5555556952a8]
/opt/dc/emacs/bin/emacs(+0x152857)[0x5555556a6857]
/opt/dc/emacs/bin/emacs(+0x13cf3f)[0x555555690f3f]
/opt/dc/emacs/bin/emacs(+0x21873d)[0x55555576c73d]
/opt/dc/emacs/bin/emacs(+0x13c6ee)[0x5555556906ee]
/opt/dc/emacs/bin/emacs(+0x217b6a)[0x55555576bb6a]
/opt/dc/emacs/bin/emacs(+0x13c680)[0x555555690680]
/opt/dc/emacs/bin/emacs(+0x13ba5d)[0x55555568fa5d]
/opt/dc/emacs/bin/emacs(+0x13bc89)[0x55555568fc89]
/opt/dc/emacs/bin/emacs(+0x1376f0)[0x55555568b6f0]
/lib/x86_64-linux-gnu/libc.so.6(+0x2724a)[0x7ffff544624a]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0x85)[0x7ffff5446305]
/opt/dc/emacs/bin/emacs(+0x30831)[0x555555584831]

Program received signal SIGABRT, Aborted.
__pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6,
    no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44
44    ./nptl/pthread_kill.c: No such file or directory.
(gdb) bt
#0  __pthread_kill_implementation (threadid=<optimized out>,
signo=signo@entry=6,
    no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44
#1  0x00007ffff54a9e8f in __pthread_kill_internal (signo=6,
threadid=<optimized out>)
    at ./nptl/pthread_kill.c:78
#2  0x00007ffff545afb2 in __GI_raise (sig=6) at ../sysdeps/posix/raise.c:26
#3  0x000055555568854c in terminate_due_to_signal (sig=6, backtrace_limit=40)
    at emacs.c:480
#4  0x00005555556bd273 in emacs_abort () at sysdep.c:2391
#5  0x000055555566911e in cmcheckmagic (tty=0x55556112ed70) at cm.c:121
#6  0x000055555566d632 in tty_write_glyphs (f=0x55556112e470,
string=0x55556150b540,
    len=80) at term.c:819
#7  0x00005555556779c6 in write_glyphs (f=0x55556112e470,
string=0x55556150a640, len=80)
    at terminal.c:163
#8  0x00005555555918f7 in update_frame_line (f=0x55556112e470, vpos=13,
    updating_menu_p=false) at dispnew.c:5320
#9  0x00005555555909e2 in update_frame_1 (f=0x55556112e470, force_p=true,
    inhibit_id_p=false, set_cursor_p=true, updating_menu_p=false) at
dispnew.c:4979
#10 0x000055555558cf4c in update_frame (f=0x55556112e470, force_p=true,
    inhibit_hairy_id_p=false) at dispnew.c:3345
#11 0x00005555555cf5c9 in redisplay_internal () at xdisp.c:17464
#12 0x00005555555cfefd in redisplay_preserve_echo_area (from_where=11)
at xdisp.c:17747
#13 0x00005555557eddbc in wait_reading_process_output (time_limit=127, nsecs=0,
    read_kbd=-1, do_display=true, wait_for_cell=XIL(0), wait_proc=0x0,
just_wait_proc=0)
    at process.c:5585
#14 0x0000555555594ee0 in sit_for (timeout=make_fixnum(127), reading=true,
    display_option=1) at dispnew.c:6329
#15 0x00005555556952a8 in read_char (commandflag=1, map=XIL(0x555563b0c373),
    prev_event=XIL(0), used_mouse_menu=0x7fffffffd6df, end_time=0x0)
at keyboard.c:2923
#16 0x00005555556a6857 in read_key_sequence (keybuf=0x7fffffffd8f0,
prompt=XIL(0),
    dont_downcase_last=false, can_return_switch_frame=true,
fix_current_buffer=true,
    prevent_redisplay=false, disable_text_conversion_p=false) at
keyboard.c:10728
#17 0x0000555555690f3f in command_loop_1 () at keyboard.c:1429
#18 0x000055555576c73d in internal_condition_case (bfun=0x555555690b10
<command_loop_1>,
    handlers=XIL(0x90), hfun=0x55555568ffbb <cmd_error>) at eval.c:1613
#19 0x00005555556906ee in command_loop_2 (handlers=XIL(0x90)) at keyboard.c:1168
#20 0x000055555576bb6a in internal_catch (tag=XIL(0xfc90),
    func=0x5555556906c4 <command_loop_2>, arg=XIL(0x90)) at eval.c:1292
#21 0x0000555555690680 in command_loop () at keyboard.c:1146
#22 0x000055555568fa5d in recursive_edit_1 () at keyboard.c:754
#23 0x000055555568fc89 in Frecursive_edit () at keyboard.c:837
#24 0x000055555568b6f0 in main (argc=2, argv=0x7fffffffdf18) at emacs.c:2625

Lisp Backtrace:
"redisplay_internal (C function)" (0x0)



BT2:

dispnew.c:2649: Emacs fatal error: assertion failed:
delayed_size_change || glyph_row_slice_p (window_row, frame_row)

Breakpoint 1, terminate_due_to_signal (sig=6,
backtrace_limit=2147483647) at emacs.c:443
443  signal (sig, SIG_DFL);
(gdb) bt
#0  terminate_due_to_signal (sig=6, backtrace_limit=2147483647) at emacs.c:443
#1  0x0000555555735b51 in die (
    msg=0x55555584e838 "delayed_size_change || glyph_row_slice_p
(window_row, frame_row)",
    file=0x55555584e231 "dispnew.c", line=2649) at alloc.c:8082
#2  0x000055555558b5fe in build_frame_matrix_from_leaf_window
(frame_matrix=0x5555590db110,
    w=0x555559588548) at dispnew.c:2649
#3  0x000055555558b10f in build_frame_matrix_from_window_tree
(matrix=0x5555590db110,
    w=0x555559588548) at dispnew.c:2538
#4  0x000055555558b0a4 in build_frame_matrix (f=0x5555593233b0) at
dispnew.c:2522
#5  0x000055555558cf82 in update_frame (f=0x5555593233b0,
force_p=true, inhibit_hairy_id_p=false)
    at dispnew.c:3338
#6  0x00005555555cf9fe in redisplay_internal () at xdisp.c:17501
#7  0x00005555555cd5d3 in redisplay () at xdisp.c:16599
#8  0x000055555569522f in read_char (commandflag=1,
map=XIL(0x555559d4aca3), prev_event=XIL(0),
    used_mouse_menu=0x7fffffffd6df, end_time=0x0) at keyboard.c:2678
#9  0x00005555556a727f in read_key_sequence (keybuf=0x7fffffffd8f0,
prompt=XIL(0),
    dont_downcase_last=false, can_return_switch_frame=true,
fix_current_buffer=true,
    prevent_redisplay=false, disable_text_conversion_p=false) at
keyboard.c:10728
#10 0x0000555555691967 in command_loop_1 () at keyboard.c:1429
#11 0x000055555576d165 in internal_condition_case (bfun=0x555555691538
<command_loop_1>,
    handlers=XIL(0x90), hfun=0x5555556909e3 <cmd_error>) at eval.c:1613
#12 0x0000555555691116 in command_loop_2 (handlers=XIL(0x90)) at keyboard.c:1168
#13 0x000055555576c592 in internal_catch (tag=XIL(0xfc90),
func=0x5555556910ec <command_loop_2>,
    arg=XIL(0x90)) at eval.c:1292
#14 0x00005555556910a8 in command_loop () at keyboard.c:1146
#15 0x0000555555690485 in recursive_edit_1 () at keyboard.c:754
#16 0x00005555556906b1 in Frecursive_edit () at keyboard.c:837
#17 0x000055555568c118 in main (argc=2, argv=0x7fffffffdf18) at emacs.c:2625

Lisp Backtrace:
"redisplay_internal (C function)" (0x0)
(gdb) bt full
#0  terminate_due_to_signal (sig=6, backtrace_limit=2147483647) at emacs.c:443
No locals.
#1  0x0000555555735b51 in die (
    msg=0x55555584e838 "delayed_size_change || glyph_row_slice_p
(window_row, frame_row)",
    file=0x55555584e231 "dispnew.c", line=2649) at alloc.c:8082
No locals.
#2  0x000055555558b5fe in build_frame_matrix_from_leaf_window
(frame_matrix=0x5555590db110,
    w=0x555559588548) at dispnew.c:2649
        frame_row = 0x55555ea81bc0
        window_row = 0x55555ad0f560
        current_row_p = false
        window_matrix = 0x5555606d5ca0
        window_y = 0
        frame_y = 6
        right_border_glyph = {
          ch = 0,
          face_id = 0
        }
#3  0x000055555558b10f in build_frame_matrix_from_window_tree
(matrix=0x5555590db110,
    w=0x555559588548) at dispnew.c:2538
No locals.
#4  0x000055555558b0a4 in build_frame_matrix (f=0x5555593233b0) at
dispnew.c:2522
        i = 7
#5  0x000055555558cf82 in update_frame (f=0x5555593233b0,
force_p=true, inhibit_hairy_id_p=false)
    at dispnew.c:3338
        paused_p = false
        root_window = 0x55555a922718
#6  0x00005555555cf9fe in redisplay_internal () at xdisp.c:17501
        gcscrollbars = true
        f_redisplay_flag = true
        f = 0x5555593233b0
        w = 0x55555979b9b8
        sw = 0x55555979b9b8
        fr = 0x5555593233b0
        pending = false
        must_finish = true
        match_p = true
        tlbufpos = {
          charpos = 0,
          bytepos = 2398
        }
        tlendpos = {
          charpos = 612164,
          bytepos = 621585
        }
        number_of_visible_frames = 2
        sf = 0x5555593233b0
        polling_stopped_here = true
        tail = XIL(0x5555594a6dd3)
        frame = XIL(0x5555593233b5)
        MAX_HSCROLL_RETRIES = MAX_HSCROLL_RETRIES
        hscroll_retries = 0
        MAX_GARBAGED_FRAME_RETRIES = MAX_GARBAGED_FRAME_RETRIES
        garbaged_frame_retries = 0
        consider_all_windows_p = true
        update_miniwindow_p = true
        count = {
          bytes = 96
        }
#7  0x00005555555cd5d3 in redisplay () at xdisp.c:16599
No locals.
#8  0x000055555569522f in read_char (commandflag=1,
map=XIL(0x555559d4aca3), prev_event=XIL(0),
    used_mouse_menu=0x7fffffffd6df, end_time=0x0) at keyboard.c:2678
--Type <RET> for more, q to quit, c to continue without paging--
        echo_current = true
        c = XIL(0)
        local_getcjmp = {{
            __jmpbuf = {93825042211488, 93825034828643,
140737488344272, 93824994276319, 48,
              93825042211488, 93825002663072, 0},
            __mask_was_saved = 0,
            __saved_mask = {
              __val = {140737488344320, 93824993654404,
93825034828611, 140737488344480,
                93824993676685, 93825002663072, 0, 0, 140737488344384,
93824994411239, 1471451152,
                140737488344480, 93824994455892, 93825067691187, 96,
140737488344480}
            }
          }}
        save_jump = {{
            __jmpbuf = {140737488344160, 93824994294759,
93825063578261, 10092931733, 0, 37152,
              140737488344352, 140737254736672},
            __mask_was_saved = 1502997141,
            __saved_mask = {
              __val = {10034, 0, 37152, 93825002700224, 37152,
140737488344160, 57276693952,
                93825063578261, 140737488344176, 93824994274948,
93825063578261, 140737488344208,
                93824994275044, 93824994265917, 93825063578261, 140737488344272}
            }
          }}
        tem = XIL(0x30)
        save = XIL(0x555557535ef0)
        previous_echo_area_message = XIL(0)
        also_record = XIL(0)
        reread = false
        recorded = false
        polling_stopped_here = false
        orig_kboard = 0x555558e79b00
        jmpcount = {
          bytes = 0
        }
#9  0x00005555556a727f in read_key_sequence (keybuf=0x7fffffffd8f0,
prompt=XIL(0),
    dont_downcase_last=false, can_return_switch_frame=true,
fix_current_buffer=true,
    prevent_redisplay=false, disable_text_conversion_p=false) at
keyboard.c:10728
        interrupted_kboard = 0x555558e79b00
        interrupted_frame = 0x5555593233b0
        key = XIL(0x555559d4cbd3)
        used_mouse_menu = false
        echo_local_start = 0
        last_real_key_start = 0
        keys_local_start = 0
        new_binding = XIL(0)
        count = {
          bytes = 96
        }
        t = 0
        echo_start = 0
        keys_start = 0
        current_binding = XIL(0x555559d4aca3)
        first_unbound = 31
        mock_input = 0
        used_mouse_menu_history = {false <repeats 30 times>}
        fkey = {
          parent = XIL(0x5555594a6123),
          map = XIL(0x5555594a6123),
          start = 0,
          end = 0
        }
        keytran = {
          parent = XIL(0x7ffff210d433),
          map = XIL(0x7ffff210d433),
--Type <RET> for more, q to quit, c to continue without paging--
          start = 0,
          end = 0
        }
        indec = {
          parent = XIL(0x5555594a6113),
          map = XIL(0x5555594a6113),
          start = 0,
          end = 0
        }
        shift_translated = false
        delayed_switch_frame = XIL(0)
        original_uppercase = XIL(0)
        original_uppercase_position = -1
        starting_buffer = 0x55555995ea90
        fake_prefixed_keys = XIL(0x555559d4b013)
        first_event = XIL(0)
        second_event = XIL(0)
#10 0x0000555555691967 in command_loop_1 () at keyboard.c:1429
        cmd = XIL(0x2aaa9bd8fa68)
        keybuf = {XIL(0xafe0), XIL(0x555559d4cbd3), make_fixnum(60),
make_fixnum(53),
          make_fixnum(126), make_fixnum(49), make_fixnum(126), XIL(0),
XIL(0), XIL(0x555555f55a00),
          XIL(0x555555744b3d), XIL(0x30), XIL(0x7fffffffd9e0),
XIL(0x55555574bbe7),
          XIL(0x555560452f85), XIL(0x200000000), XIL(0x30),
XIL(0xed60), XIL(0x7ffff18ef975),
          XIL(0x7ffff21346f0), make_fixnum(23456248603222),
XIL(0x7ffff18ef975), XIL(0x3),
          XIL(0xed60), XIL(0x555555f55a00), XIL(0xed60),
XIL(0x7fffffffd9e0), XIL(0x555555f55a00),
          XIL(0x5555557682e7), XIL(0x30)}
        i = 2
        last_pt = 2508
        prev_modiff = 18813
        prev_buffer = 0x55555995ea90
#11 0x000055555576d165 in internal_condition_case (bfun=0x555555691538
<command_loop_1>,
    handlers=XIL(0x90), hfun=0x5555556909e3 <cmd_error>) at eval.c:1613
        val = make_fixnum(23456248378977)
        c = 0x555556048380
#12 0x0000555555691116 in command_loop_2 (handlers=XIL(0x90)) at keyboard.c:1168
        val = make_fixnum(0)
#13 0x000055555576c592 in internal_catch (tag=XIL(0xfc90),
func=0x5555556910ec <command_loop_2>,
    arg=XIL(0x90)) at eval.c:1292
        val = XIL(0x7fffffffdc00)
        c = 0x5555560c0d90
#14 0x00005555556910a8 in command_loop () at keyboard.c:1146
No locals.
#15 0x0000555555690485 in recursive_edit_1 () at keyboard.c:754
        count = {
          bytes = 32
        }
        val = XIL(0x5555557729bc)
#16 0x00005555556906b1 in Frecursive_edit () at keyboard.c:837
        count = {
          bytes = 0
        }
        buffer = XIL(0)
#17 0x000055555568c118 in main (argc=2, argv=0x7fffffffdf18) at emacs.c:2625
        stack_bottom_variable = 0x0
        old_argc = 2
        dump_file = 0x0
        no_loadup = false
        junk = 0x0
        dname_arg = 0x0
        ch_to_dir = 0x0
        original_pwd = 0x0
        dump_mode = 0x0
        skip_args = 1
--Type <RET> for more, q to quit, c to continue without paging--
        temacs = 0x0
        attempt_load_pdump = true
        only_version = false
        rlim = {
          rlim_cur = 10022912,
          rlim_max = 18446744073709551615
        }
        lc_all = 0x0
        sockfd = -1
        module_assertions = false
(gdb)




(gdb) p delayed_size_change
$1 = false


On Mon, 3 Jun 2024 at 17:40, Eli Zaretskii <eliz@gnu.org> wrote:
>
> > From: Daniel Clemente <n142857@gmail.com>
> > Date: Mon, 3 Jun 2024 16:55:25 +0000
> > Cc: 71289@debbugs.gnu.org
> >
> > > > But sometimes I can't reproduce it at all with this method!
> > > > And never could I in emacs -Q
> > >
> > > So maybe you could bisect your init files and find the
> > > customization(s) which make the reproduction possible?  Because I
> > > cannot reproduce any of this here, no matter what I try.
> >
> > I tried but it took too long to evaluate each version, because I don't
> > have a formula to reproduce this. Sometimes I could crash it in
> > seconds, sometimes I couldn't in minutes.
> > I'll try to reproduce it in a faster way.
>
> Please update from Git before trying anything else wrt this bug.  I
> installed a simple baind-aid that is intended to avoid problems with
> frame dimensions while we have an unhandled SIGWINCH.





^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#71289: 30.0.50; cmcheckmagic aborts when tty_write_glyphs writes "Garbage collecting..." in some cases
  2024-06-03 17:44   ` Eli Zaretskii
@ 2024-06-05 13:51     ` Daniel Clemente
  2024-06-06  7:55       ` Eli Zaretskii
  0 siblings, 1 reply; 34+ messages in thread
From: Daniel Clemente @ 2024-06-05 13:51 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 71289

> > I also saw a new type of TTY+GC error (not sure if it's the same issue
> > as this bug):
> >
> > alloc.c:7517: Emacs fatal error: assertion failed: t->name != NULL
> >
> > Breakpoint 1, terminate_due_to_signal (sig=6,
> > backtrace_limit=2147483647) at emacs.c:443
> > 443      signal (sig, SIG_DFL);
> > (gdb) bt
> > #0  terminate_due_to_signal (sig=6, backtrace_limit=2147483647) at emacs.c:443
> > #1  0x000055555573591a in die (msg=0x55555586f838 "t->name != NULL",
> > file=0x55555586e97e "alloc.c", line=7517) at alloc.c:8082
> > #2  0x00005555557346e8 in mark_terminals () at alloc.c:7517
>
> If this was while you only resized the terminal, how come a terminal
> was deleted?  Any idea what would cause this?

I assume that it's t->name == NULL what tells you that a terminal was deleted.
But apparently this terminal wasn't fully deleted, because it's in the
terminal_list.  If delete_terminal had run, shouldn't it have removed
it from the list?
So I don't know what happened. reference_count is still 1.

I might have actually tried to close an X window while I testing; I
can't remember. I'm collecting many backtraces and I wasn't very
careful in this one.
This backtrace may be a different bug; if you want I file it
separately. But since it happened during GC, it could also be due to
the same problems as this one (71289).
I don't know how to reproduce it.
Unless it clearly shows a defect, we can ignore this backtrace until
it happens again.





^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#71289: 30.0.50; cmcheckmagic aborts when tty_write_glyphs writes "Garbage collecting..." in some cases
  2024-06-03 16:25   ` Eli Zaretskii
  2024-06-03 16:55     ` Daniel Clemente
@ 2024-06-05 13:52     ` Daniel Clemente
  1 sibling, 0 replies; 34+ messages in thread
From: Daniel Clemente @ 2024-06-05 13:52 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 71289

> So maybe you could bisect your init files and find the
> customization(s) which make the reproduction possible?  Because I
> cannot reproduce any of this here, no matter what I try.

I'm trying to reproduce it again and again, and I can't find the way,
not even with my full .emacs. Yesterday it happened (I just posted
here BT1 and BT2) but today I can't, so I guess there are other
factors apart from GC and resizing.
I'll keep trying to use emacs normally and I guess then it should
happen when I least expect it.

For reference: I automated an automated continuous X window resizer:
EC=$(xdotool search --name '^\*E\* \.emacs') && echo $EC && while :;
do for height_px in `seq 275 -25 10`; do xdotool windowsize $EC
$((height_px+5)) $height_px; sleep 0.001; done;   for height_px in
`seq 1 25 400`; do xdotool windowsize $EC $((height_px+5)) $height_px;
sleep 0.1; done;     sleep 0.3 && done

And I keep trying to cause GC, with things like:
;; (cl-loop for i from 300000 downto 1 do (+ 2.00 (+ 2.0 (+ 2.0 (+ 2.0
(+ 2.0 2.0))))))
;; (cl-loop for j from 100 downto 1 do (progn (cl-loop for i from
30000 downto 1 do (+ 2.00 (+ 2.0 (+ 2.0 (+ 2.0 (+ 2.0 2.0))))))
(sit-for 1)))
;; (cl-loop for i from 3000000 downto 1 do (garbage-collect))

But this formula hasn't ever worked yet, so I guess I'm missing other factors.





^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#71289: 30.0.50; cmcheckmagic aborts when tty_write_glyphs writes "Garbage collecting..." in some cases
  2024-06-05 13:50         ` Daniel Clemente
@ 2024-06-05 15:06           ` Eli Zaretskii
  2024-06-05 16:43             ` Eli Zaretskii
  2024-06-06 12:34             ` Daniel Clemente
  0 siblings, 2 replies; 34+ messages in thread
From: Eli Zaretskii @ 2024-06-05 15:06 UTC (permalink / raw)
  To: Daniel Clemente; +Cc: 71289

> From: Daniel Clemente <n142857@gmail.com>
> Date: Wed, 5 Jun 2024 13:50:48 +0000
> Cc: 71289@debbugs.gnu.org
> 
> With it (running on 799f78a92c6c31f4d181390523b83d036020ede1 with no
> other changes), I still see the same types of crash that I already
> reported: in tty_write_glyphs (see BT1 below) and in
> build_frame_matrix_from_leaf_window (see BT2 below).
> However they don't mention GC now.

So it is not exactly the same type of crash.

In what scenario does this happen now?  IOW, what did you do to
trigger those crashes?

I'd like to ask you to run that scenario with a watchpoint on the
variable delayed_size_change, and the following two watchpoint
commands:

  bt 5
  continue

I hope the backtraces produced by this will explain who resets the
delayed_size_change flag, seemingly prematurely(?), and might suggest
ideas for a solution.  (I have an idea already, but would like to see
some data to make sure the idea is solid.)

It is best to run GDB in a separate terminal for this experiment.
IOW, start Emacs, attach GDB to it from another terminal, say "set
height 0" to let GDB scroll the output freely, then set up the
watchpoint with the commands, and run Emacs with your recipe.

Thanks.





^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#71289: 30.0.50; cmcheckmagic aborts when tty_write_glyphs writes "Garbage collecting..." in some cases
  2024-06-05 15:06           ` Eli Zaretskii
@ 2024-06-05 16:43             ` Eli Zaretskii
  2024-06-06 12:36               ` Daniel Clemente
  2024-06-06 12:34             ` Daniel Clemente
  1 sibling, 1 reply; 34+ messages in thread
From: Eli Zaretskii @ 2024-06-05 16:43 UTC (permalink / raw)
  To: n142857; +Cc: 71289

> Date: Wed, 05 Jun 2024 18:06:49 +0300
> From: Eli Zaretskii <eliz@gnu.org>
> Cc: 71289@debbugs.gnu.org
> 
> > From: Daniel Clemente <n142857@gmail.com>
> > Date: Wed, 5 Jun 2024 13:50:48 +0000
> > Cc: 71289@debbugs.gnu.org
> > 
> > With it (running on 799f78a92c6c31f4d181390523b83d036020ede1 with no
> > other changes), I still see the same types of crash that I already
> > reported: in tty_write_glyphs (see BT1 below) and in
> > build_frame_matrix_from_leaf_window (see BT2 below).
> > However they don't mention GC now.
> 
> So it is not exactly the same type of crash.
> 
> In what scenario does this happen now?  IOW, what did you do to
> trigger those crashes?
> 
> I'd like to ask you to run that scenario with a watchpoint on the
> variable delayed_size_change, and the following two watchpoint
> commands:
> 
>   bt 5
>   continue
> 
> I hope the backtraces produced by this will explain who resets the
> delayed_size_change flag, seemingly prematurely(?), and might suggest
> ideas for a solution.  (I have an idea already, but would like to see
> some data to make sure the idea is solid.)

I decided to go with my idea anyway, so please update from Git before
trying next, and if the problem is still there, try answering my
questions above.

Thanks.





^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#71289: 30.0.50; cmcheckmagic aborts when tty_write_glyphs writes "Garbage collecting..." in some cases
  2024-06-05 13:51     ` Daniel Clemente
@ 2024-06-06  7:55       ` Eli Zaretskii
  0 siblings, 0 replies; 34+ messages in thread
From: Eli Zaretskii @ 2024-06-06  7:55 UTC (permalink / raw)
  To: Daniel Clemente; +Cc: 71289

> From: Daniel Clemente <n142857@gmail.com>
> Date: Wed, 5 Jun 2024 13:51:43 +0000
> Cc: 71289@debbugs.gnu.org
> 
> > > I also saw a new type of TTY+GC error (not sure if it's the same issue
> > > as this bug):
> > >
> > > alloc.c:7517: Emacs fatal error: assertion failed: t->name != NULL
> > >
> > > Breakpoint 1, terminate_due_to_signal (sig=6,
> > > backtrace_limit=2147483647) at emacs.c:443
> > > 443      signal (sig, SIG_DFL);
> > > (gdb) bt
> > > #0  terminate_due_to_signal (sig=6, backtrace_limit=2147483647) at emacs.c:443
> > > #1  0x000055555573591a in die (msg=0x55555586f838 "t->name != NULL",
> > > file=0x55555586e97e "alloc.c", line=7517) at alloc.c:8082
> > > #2  0x00005555557346e8 in mark_terminals () at alloc.c:7517
> >
> > If this was while you only resized the terminal, how come a terminal
> > was deleted?  Any idea what would cause this?
> 
> I assume that it's t->name == NULL what tells you that a terminal was deleted.

Yes.

> But apparently this terminal wasn't fully deleted, because it's in the
> terminal_list.  If delete_terminal had run, shouldn't it have removed
> it from the list?

It should have, yes.

> So I don't know what happened. reference_count is still 1.

What's more important, kboard, keyboard_coding, and terminal_coding
are not NULL.  Which means delete_terminal_internal was never run for
this terminal.  I don't understand how that could happen, given the
backtrace you show.

I found some unsafe code in delete_terminal and installed a fix.  I
cannot explain how that code could have caused the assertion violation
inside mark_terminals, but maybe it did.





^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#71289: 30.0.50; cmcheckmagic aborts when tty_write_glyphs writes "Garbage collecting..." in some cases
  2024-06-05 15:06           ` Eli Zaretskii
  2024-06-05 16:43             ` Eli Zaretskii
@ 2024-06-06 12:34             ` Daniel Clemente
  2024-06-06 14:53               ` Eli Zaretskii
  1 sibling, 1 reply; 34+ messages in thread
From: Daniel Clemente @ 2024-06-06 12:34 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 71289

> So it is not exactly the same type of crash.
>
> In what scenario does this happen now?  IOW, what did you do to
> trigger those crashes?
>

I don't remember how the previous 2 crashes (BT1, BT2) happened. But I
just learnt to reproduce BT2 (in check_matrix_pointers), after 2 days
not being able to reproduce it.

The key to reproduce it to have 2 Emacs windows inside the frame:
1. Open emacs (no need for emacsclient) with -Q. No need to set
garbage-collection-messages to t
2. Do C-x 2 to have 2 windows, one above one below
3. Resize the X window to make it very small, (1 line or so)
4. It should immediately crash.

(gdb) bt full
#0  terminate_due_to_signal (sig=6, backtrace_limit=40) at emacs.c:443
No locals.
#1  0x00005555556bd41b in emacs_abort () at sysdep.c:2391
No locals.
#2  0x000055555558cb33 in check_matrix_pointers (window_matrix=0x5555588efa10,
    frame_matrix=0x5555595855c0) at dispnew.c:3129
        i = 0
        j = 0
#3  0x000055555558ca52 in check_window_matrix_pointers (w=0x5555591f66b8)
    at dispnew.c:3098
        f = 0x555558008768
#4  0x000055555558c9df in check_window_matrix_pointers (w=0x555559452b90)
    at dispnew.c:3094
No locals.
#5  0x000055555558c9df in check_window_matrix_pointers (w=0x55555960d2d8)
    at dispnew.c:3094
No locals.
#6  0x000055555558d10e in update_frame (f=0x555558008768, force_p=true,
    inhibit_hairy_id_p=false) at dispnew.c:3359
        paused_p = false
        root_window = 0x55555960d2d8
#7  0x00005555555cf68a in redisplay_internal () at xdisp.c:17464
        gcscrollbars = true
        f_redisplay_flag = true
        f = 0x555558008768
        w = 0x5555598dcd00
        sw = 0x5555598dcd00
        fr = 0x555558008768
        pending = false
        must_finish = true
        match_p = true
        tlbufpos = {
          charpos = 0,
          bytepos = 2275
        }
        tlendpos = {
          charpos = 614309,
          bytepos = 623747
        }
        number_of_visible_frames = 2
        sf = 0x555558008768
        polling_stopped_here = true
        tail = XIL(0x555558f6ae43)
        frame = XIL(0x55555800876d)
        MAX_HSCROLL_RETRIES = MAX_HSCROLL_RETRIES
        hscroll_retries = 0
        MAX_GARBAGED_FRAME_RETRIES = MAX_GARBAGED_FRAME_RETRIES
        garbaged_frame_retries = 0
        consider_all_windows_p = true
        update_miniwindow_p = true
        count = {
          bytes = 192
        }
#8  0x00005555555cffb0 in redisplay_preserve_echo_area (from_where=12)
at xdisp.c:17743
        count = {
          bytes = 160
        }
#9  0x00005555557eed00 in wait_reading_process_output (time_limit=0, nsecs=0,

> In what scenario does this happen now?  IOW, what did you do to
> trigger those crashes?
>
> I'd like to ask you to run that scenario with a watchpoint on the
> variable delayed_size_change, and the following two watchpoint
> commands:
>
>   bt 5
>   continue
>

Thanks, that's a very good way to track changes. I'll do it when I can
reproduce the crash/assert. Right now it seems to work fine (opening a
new frame: false→true then immediately true→false).



On Wed, 5 Jun 2024 at 15:06, Eli Zaretskii <eliz@gnu.org> wrote:
>
> > From: Daniel Clemente <n142857@gmail.com>
> > Date: Wed, 5 Jun 2024 13:50:48 +0000
> > Cc: 71289@debbugs.gnu.org
> >
> > With it (running on 799f78a92c6c31f4d181390523b83d036020ede1 with no
> > other changes), I still see the same types of crash that I already
> > reported: in tty_write_glyphs (see BT1 below) and in
> > build_frame_matrix_from_leaf_window (see BT2 below).
> > However they don't mention GC now.
>
> So it is not exactly the same type of crash.
>
> In what scenario does this happen now?  IOW, what did you do to
> trigger those crashes?
>
> I'd like to ask you to run that scenario with a watchpoint on the
> variable delayed_size_change, and the following two watchpoint
> commands:
>
>   bt 5
>   continue
>
> I hope the backtraces produced by this will explain who resets the
> delayed_size_change flag, seemingly prematurely(?), and might suggest
> ideas for a solution.  (I have an idea already, but would like to see
> some data to make sure the idea is solid.)
>
> It is best to run GDB in a separate terminal for this experiment.
> IOW, start Emacs, attach GDB to it from another terminal, say "set
> height 0" to let GDB scroll the output freely, then set up the
> watchpoint with the commands, and run Emacs with your recipe.
>
> Thanks.





^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#71289: 30.0.50; cmcheckmagic aborts when tty_write_glyphs writes "Garbage collecting..." in some cases
  2024-06-05 16:43             ` Eli Zaretskii
@ 2024-06-06 12:36               ` Daniel Clemente
  0 siblings, 0 replies; 34+ messages in thread
From: Daniel Clemente @ 2024-06-06 12:36 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 71289

I'm trying your new code (including the delete_terminals part), thanks.

I just posted a reproduction step for BT2, in another thread here.

I'll try to repeat the other backtraces.

I'm working on many crashes and redisplay bugs at the same time and
they're piling up, and it's getting messy, sorry.

I've seen a new redisplay issue but I can't pinpoint yet where did it
come from, or to which bug it's related.
In rare cases, not only the Emacs frame doesn't use the full size of
the terminal (after resizing the X window) (I consider this to be bug
71343), but also:
- it won't correct itself even after a keypress. I still see the black areas
- the text becomes garbled, e.g. the current line (the line I'm
editing) appears below the cursor, and the situation affects new
frames too, and the solution is to restart Emacs

I can handle it as part of 71343, which I'm still researching.



On Wed, 5 Jun 2024 at 16:43, Eli Zaretskii <eliz@gnu.org> wrote:
>
> > Date: Wed, 05 Jun 2024 18:06:49 +0300
> > From: Eli Zaretskii <eliz@gnu.org>
> > Cc: 71289@debbugs.gnu.org
> >
> > > From: Daniel Clemente <n142857@gmail.com>
> > > Date: Wed, 5 Jun 2024 13:50:48 +0000
> > > Cc: 71289@debbugs.gnu.org
> > >
> > > With it (running on 799f78a92c6c31f4d181390523b83d036020ede1 with no
> > > other changes), I still see the same types of crash that I already
> > > reported: in tty_write_glyphs (see BT1 below) and in
> > > build_frame_matrix_from_leaf_window (see BT2 below).
> > > However they don't mention GC now.
> >
> > So it is not exactly the same type of crash.
> >
> > In what scenario does this happen now?  IOW, what did you do to
> > trigger those crashes?
> >
> > I'd like to ask you to run that scenario with a watchpoint on the
> > variable delayed_size_change, and the following two watchpoint
> > commands:
> >
> >   bt 5
> >   continue
> >
> > I hope the backtraces produced by this will explain who resets the
> > delayed_size_change flag, seemingly prematurely(?), and might suggest
> > ideas for a solution.  (I have an idea already, but would like to see
> > some data to make sure the idea is solid.)
>
> I decided to go with my idea anyway, so please update from Git before
> trying next, and if the problem is still there, try answering my
> questions above.
>
> Thanks.





^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#71289: 30.0.50; cmcheckmagic aborts when tty_write_glyphs writes "Garbage collecting..." in some cases
  2024-06-06 12:34             ` Daniel Clemente
@ 2024-06-06 14:53               ` Eli Zaretskii
  2024-06-06 15:23                 ` Daniel Clemente
  2024-06-06 18:06                 ` Daniel Clemente
  0 siblings, 2 replies; 34+ messages in thread
From: Eli Zaretskii @ 2024-06-06 14:53 UTC (permalink / raw)
  To: Daniel Clemente; +Cc: 71289

> From: Daniel Clemente <n142857@gmail.com>
> Date: Thu, 6 Jun 2024 12:34:34 +0000
> Cc: 71289@debbugs.gnu.org
> 
> The key to reproduce it to have 2 Emacs windows inside the frame:
> 1. Open emacs (no need for emacsclient) with -Q. No need to set
> garbage-collection-messages to t
> 2. Do C-x 2 to have 2 windows, one above one below
> 3. Resize the X window to make it very small, (1 line or so)
> 4. It should immediately crash.
> 
> (gdb) bt full
> #0  terminate_due_to_signal (sig=6, backtrace_limit=40) at emacs.c:443
> No locals.
> #1  0x00005555556bd41b in emacs_abort () at sysdep.c:2391
> No locals.
> #2  0x000055555558cb33 in check_matrix_pointers (window_matrix=0x5555588efa10,
>     frame_matrix=0x5555595855c0) at dispnew.c:3129
>         i = 0
>         j = 0
> #3  0x000055555558ca52 in check_window_matrix_pointers (w=0x5555591f66b8)
>     at dispnew.c:3098
>         f = 0x555558008768
> #4  0x000055555558c9df in check_window_matrix_pointers (w=0x555559452b90)
>     at dispnew.c:3094
> No locals.
> #5  0x000055555558c9df in check_window_matrix_pointers (w=0x55555960d2d8)
>     at dispnew.c:3094
> No locals.
> #6  0x000055555558d10e in update_frame (f=0x555558008768, force_p=true,
>     inhibit_hairy_id_p=false) at dispnew.c:3359
>         paused_p = false
>         root_window = 0x55555960d2d8

I see a different abort, for which I've now installed a fix.  To try
to fix the above one, I need some additional data:

  (gdb) frame 2
  (gdb) p window_matrix->rows->glyphs[0]
  (gdb) p frame_matrix->rows->glyphs[0]
  (gdb) p frame_matrix->rows->glyphs[2]
  (gdb) p window_matrix->nrows
  (gdb) p frame_matrix->nrows





^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#71289: 30.0.50; cmcheckmagic aborts when tty_write_glyphs writes "Garbage collecting..." in some cases
  2024-06-06 14:53               ` Eli Zaretskii
@ 2024-06-06 15:23                 ` Daniel Clemente
  2024-06-06 16:13                   ` Eli Zaretskii
  2024-06-06 18:06                 ` Daniel Clemente
  1 sibling, 1 reply; 34+ messages in thread
From: Daniel Clemente @ 2024-06-06 15:23 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 71289

> I see a different abort, for which I've now installed a fix.  To try
> to fix the above one, I need some additional data:
>
>   (gdb) frame 2
>   (gdb) p window_matrix->rows->glyphs[0]
>   (gdb) p frame_matrix->rows->glyphs[0]
>   (gdb) p frame_matrix->rows->glyphs[2]
>   (gdb) p window_matrix->nrows
>   (gdb) p frame_matrix->nrows

Right now if I run the C-x 2 and resize scenario, I get this other
backtrace with build_frame_matrix_from_leaf_window, it's not the one
you requested (the one in check_matrix_pointers), but does it help?
This is with your latest patch.

(gdb) bt

#0  terminate_due_to_signal (sig=6, backtrace_limit=2147483647) at emacs.c:443
#1  0x00005555557352d1 in die (msg=0x55555584e780
"frame_size_change_delayed (XFRAME (w->frame)) || glyph_row_slice_p
(window_row, frame_row)", file=0x55555584e231 "dispnew.c", line=2646)
at alloc.c:8082
#2  0x000055555558b5d1 in build_frame_matrix_from_leaf_window
(frame_matrix=0x55555602bdd0, w=0x5555560596e8) at dispnew.c:2646
#3  0x000055555558b094 in build_frame_matrix_from_window_tree
(matrix=0x55555602bdd0, w=0x5555560596e8) at dispnew.c:2535
#4  0x000055555558b07f in build_frame_matrix_from_window_tree
(matrix=0x55555602bdd0, w=0x5555561dc308) at dispnew.c:2533
#5  0x000055555558b029 in build_frame_matrix (f=0x5555560594c8) at
dispnew.c:2519
#6  0x000055555558cf9f in update_frame (f=0x5555560594c8,
force_p=true, inhibit_hairy_id_p=false) at dispnew.c:3335
#7  0x00005555555cf68a in redisplay_internal () at xdisp.c:17464
#8  0x00005555555cffbe in redisplay_preserve_echo_area (from_where=11)
at xdisp.c:17747
#9  0x00005555557edf64 in wait_reading_process_output (time_limit=30,
nsecs=0, read_kbd=-1, do_display=true, wait_for_cell=XIL(0),
wait_proc=0x0, just_wait_proc=0) at process.c:5585


(gdb) frame 2

#2  0x000055555558b5d1 in build_frame_matrix_from_leaf_window
(frame_matrix=0x55555602bdd0, w=0x5555560596e8) at dispnew.c:2646
2646          eassert (frame_size_change_delayed (XFRAME (w->frame))
(gdb) lisp

Undefined command: "lisp".  Try "help".
(gdb) list

2641            }
2642
2643    #ifdef GLYPH_DEBUG
2644          /* Window row window_y must be a slice of frame row
2645             frame_y.  */
2646          eassert (frame_size_change_delayed (XFRAME (w->frame))
2647               || glyph_row_slice_p (window_row, frame_row));
2648
2649          /* If rows are in sync, we don't have to copy glyphs because
2650             frame and window share glyphs.  */
(gdb) p window_matrix

$1 = (struct glyph_matrix *) 0x55555602c2b0
(gdb) p window_matrix->rows->glyphs[0]

$2 = (struct glyph *) 0x7ffff033f4c0
(gdb) xpr
xpr            xprintbytestr  xprintstr      xprintsym      xprocess
(gdb) p window_matrix->rows->glyphs[0]

$3 = (struct glyph *) 0x7ffff033f4c0
(gdb) p frame_matrix->rows->glyphs[0]

$4 = (struct glyph *) 0x7ffff02cf010
(gdb) p frame_matrix->rows->glyphs[2]

$5 = (struct glyph *) 0x7ffff02cf4f0
(gdb)  p window_matrix->nrows

$6 = 2
(gdb) p frame_matrix->nrows

$7 = 6
(gdb)

And from another run:

(gdb) p window_matrix->rows->glyphs[0]
$8 = (struct glyph *) 0x7ffff2ac92e0
(gdb) p window_matrix->rows->glyphs[0]
$9 = (struct glyph *) 0x7ffff2ac92e0
(gdb) pgx window_matrix->rows->glyphs[0]
CHAR[6] pos=160 blev=0,btyp=L w=1 a+d=0+0 MB
(gdb) p window_matrix->rows->glyphs[0]
$10 = (struct glyph *) 0x7ffff2ac92e0
(gdb) pgx window_matrix->rows->glyphs[0]
CHAR[6] pos=160 blev=0,btyp=L w=1 a+d=0+0 MB
(gdb) p frame_matrix->rows->glyphs[0]
$11 = (struct glyph *) 0x7ffff2a59010
(gdb) pgx frame_matrix->rows->glyphs[0]
CHAR[F] str=0xf2223b2f[0] blev=0,btyp=L w=1 a+d=0+0 face=10
(gdb) p frame_matrix->rows->glyphs[2]
$12 = (struct glyph *) 0x7ffff2a59340
(gdb) pgx frame_matrix->rows->glyphs[2]
CHAR[ ] str=0xf2385987[-1] blev=0,btyp=B w=1 a+d=0+0 face=10
(gdb) p window_matrix->nrows
$13 = 2
(gdb) p frame_matrix->nrows
$14 = 8
(gdb)





^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#71289: 30.0.50; cmcheckmagic aborts when tty_write_glyphs writes "Garbage collecting..." in some cases
  2024-06-06 15:23                 ` Daniel Clemente
@ 2024-06-06 16:13                   ` Eli Zaretskii
  2024-06-06 16:44                     ` Daniel Clemente
  0 siblings, 1 reply; 34+ messages in thread
From: Eli Zaretskii @ 2024-06-06 16:13 UTC (permalink / raw)
  To: Daniel Clemente; +Cc: 71289

> From: Daniel Clemente <n142857@gmail.com>
> Date: Thu, 6 Jun 2024 15:23:33 +0000
> Cc: 71289@debbugs.gnu.org
> 
> Right now if I run the C-x 2 and resize scenario, I get this other
> backtrace with build_frame_matrix_from_leaf_window, it's not the one
> you requested (the one in check_matrix_pointers), but does it help?
> This is with your latest patch.

When you do "C-x 2", does Emacs divide the root window horizontally or
vertically?  Are the windows one above the other or are they side by
side?





^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#71289: 30.0.50; cmcheckmagic aborts when tty_write_glyphs writes "Garbage collecting..." in some cases
  2024-06-06 16:13                   ` Eli Zaretskii
@ 2024-06-06 16:44                     ` Daniel Clemente
  0 siblings, 0 replies; 34+ messages in thread
From: Daniel Clemente @ 2024-06-06 16:44 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 71289

> When you do "C-x 2", does Emacs divide the root window horizontally or
> vertically?  Are the windows one above the other or are they side by
> side?

One above the other.
It doesn't crash if I divide them left/right. I can even use the
auto-resizer loop and it doesn't crash, but as soon as I do C-x 2, it
crashes.





^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#71289: 30.0.50; cmcheckmagic aborts when tty_write_glyphs writes "Garbage collecting..." in some cases
  2024-06-06 14:53               ` Eli Zaretskii
  2024-06-06 15:23                 ` Daniel Clemente
@ 2024-06-06 18:06                 ` Daniel Clemente
  2024-06-07  6:11                   ` Eli Zaretskii
  1 sibling, 1 reply; 34+ messages in thread
From: Daniel Clemente @ 2024-06-06 18:06 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 71289

> I see a different abort, for which I've now installed a fix.  To try
> to fix the above one, I need some additional data:

In an Emacs build with this patch, I can't see the minibuffer anymore,
also not while I type. Happens with -Q, with and without daemon.
I didn't have time to test this thoroughly or to find where it came from.

On Thu, 6 Jun 2024 at 14:53, Eli Zaretskii <eliz@gnu.org> wrote:
>
> > From: Daniel Clemente <n142857@gmail.com>
> > Date: Thu, 6 Jun 2024 12:34:34 +0000
> > Cc: 71289@debbugs.gnu.org
> >
> > The key to reproduce it to have 2 Emacs windows inside the frame:
> > 1. Open emacs (no need for emacsclient) with -Q. No need to set
> > garbage-collection-messages to t
> > 2. Do C-x 2 to have 2 windows, one above one below
> > 3. Resize the X window to make it very small, (1 line or so)
> > 4. It should immediately crash.
> >
> > (gdb) bt full
> > #0  terminate_due_to_signal (sig=6, backtrace_limit=40) at emacs.c:443
> > No locals.
> > #1  0x00005555556bd41b in emacs_abort () at sysdep.c:2391
> > No locals.
> > #2  0x000055555558cb33 in check_matrix_pointers (window_matrix=0x5555588efa10,
> >     frame_matrix=0x5555595855c0) at dispnew.c:3129
> >         i = 0
> >         j = 0
> > #3  0x000055555558ca52 in check_window_matrix_pointers (w=0x5555591f66b8)
> >     at dispnew.c:3098
> >         f = 0x555558008768
> > #4  0x000055555558c9df in check_window_matrix_pointers (w=0x555559452b90)
> >     at dispnew.c:3094
> > No locals.
> > #5  0x000055555558c9df in check_window_matrix_pointers (w=0x55555960d2d8)
> >     at dispnew.c:3094
> > No locals.
> > #6  0x000055555558d10e in update_frame (f=0x555558008768, force_p=true,
> >     inhibit_hairy_id_p=false) at dispnew.c:3359
> >         paused_p = false
> >         root_window = 0x55555960d2d8
>
> I see a different abort, for which I've now installed a fix.  To try
> to fix the above one, I need some additional data:
>
>   (gdb) frame 2
>   (gdb) p window_matrix->rows->glyphs[0]
>   (gdb) p frame_matrix->rows->glyphs[0]
>   (gdb) p frame_matrix->rows->glyphs[2]
>   (gdb) p window_matrix->nrows
>   (gdb) p frame_matrix->nrows





^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#71289: 30.0.50; cmcheckmagic aborts when tty_write_glyphs writes "Garbage collecting..." in some cases
  2024-06-06 18:06                 ` Daniel Clemente
@ 2024-06-07  6:11                   ` Eli Zaretskii
  2024-06-07  6:42                     ` Daniel Clemente
  0 siblings, 1 reply; 34+ messages in thread
From: Eli Zaretskii @ 2024-06-07  6:11 UTC (permalink / raw)
  To: Daniel Clemente; +Cc: 71289

> From: Daniel Clemente <n142857@gmail.com>
> Date: Thu, 6 Jun 2024 18:06:16 +0000
> Cc: 71289@debbugs.gnu.org
> 
> > I see a different abort, for which I've now installed a fix.  To try
> > to fix the above one, I need some additional data:
> 
> In an Emacs build with this patch, I can't see the minibuffer anymore,
> also not while I type. Happens with -Q, with and without daemon.

Sorry about that, late-night thinko.  Should be fixed now.





^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#71289: 30.0.50; cmcheckmagic aborts when tty_write_glyphs writes "Garbage collecting..." in some cases
  2024-06-07  6:11                   ` Eli Zaretskii
@ 2024-06-07  6:42                     ` Daniel Clemente
  2024-06-07  6:47                       ` Eli Zaretskii
  0 siblings, 1 reply; 34+ messages in thread
From: Daniel Clemente @ 2024-06-07  6:42 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 71289

> > In an Emacs build with this patch, I can't see the minibuffer anymore,
> > also not while I type. Happens with -Q, with and without daemon.
>
> Sorry about that, late-night thinko.  Should be fixed now.

It is, thanks.
The build_frame_matrix_from_leaf_window crash still happens.





^ permalink raw reply	[flat|nested] 34+ messages in thread

* bug#71289: 30.0.50; cmcheckmagic aborts when tty_write_glyphs writes "Garbage collecting..." in some cases
  2024-06-07  6:42                     ` Daniel Clemente
@ 2024-06-07  6:47                       ` Eli Zaretskii
  0 siblings, 0 replies; 34+ messages in thread
From: Eli Zaretskii @ 2024-06-07  6:47 UTC (permalink / raw)
  To: Daniel Clemente; +Cc: 71289

> From: Daniel Clemente <n142857@gmail.com>
> Date: Fri, 7 Jun 2024 06:42:13 +0000
> Cc: 71289@debbugs.gnu.org
> 
> > > In an Emacs build with this patch, I can't see the minibuffer anymore,
> > > also not while I type. Happens with -Q, with and without daemon.
> >
> > Sorry about that, late-night thinko.  Should be fixed now.
> 
> It is, thanks.
> The build_frame_matrix_from_leaf_window crash still happens.

That's another problem.  There seems to be some disconnect, time-wise,
in reallocating frame matrices and sub-allocating window matrices from
the frame matrices, and the crash happens when the check is done
in-between those two.

This will need more work.  Patches and relevant data are welcome.





^ permalink raw reply	[flat|nested] 34+ messages in thread

end of thread, other threads:[~2024-06-07  6:47 UTC | newest]

Thread overview: 34+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-05-31 10:18 bug#71289: 30.0.50; cmcheckmagic aborts when tty_write_glyphs writes "Garbage collecting..." in some cases Daniel Clemente
2024-05-31 11:17 ` Eli Zaretskii
2024-05-31 17:07   ` Daniel Clemente
2024-05-31 18:17     ` Eli Zaretskii
2024-06-03 15:35       ` Daniel Clemente
2024-06-03 16:21         ` Eli Zaretskii
2024-05-31 17:09 ` Daniel Clemente
2024-05-31 18:26   ` Eli Zaretskii
2024-06-03 15:56     ` Daniel Clemente
2024-06-03 16:03       ` Eli Zaretskii
2024-06-03 16:28         ` Daniel Clemente
2024-06-03 16:36           ` Eli Zaretskii
2024-06-03 16:51             ` Daniel Clemente
2024-06-03 17:44   ` Eli Zaretskii
2024-06-05 13:51     ` Daniel Clemente
2024-06-06  7:55       ` Eli Zaretskii
2024-06-03 15:36 ` Daniel Clemente
2024-06-03 16:25   ` Eli Zaretskii
2024-06-03 16:55     ` Daniel Clemente
2024-06-03 17:39       ` Eli Zaretskii
2024-06-05 13:50         ` Daniel Clemente
2024-06-05 15:06           ` Eli Zaretskii
2024-06-05 16:43             ` Eli Zaretskii
2024-06-06 12:36               ` Daniel Clemente
2024-06-06 12:34             ` Daniel Clemente
2024-06-06 14:53               ` Eli Zaretskii
2024-06-06 15:23                 ` Daniel Clemente
2024-06-06 16:13                   ` Eli Zaretskii
2024-06-06 16:44                     ` Daniel Clemente
2024-06-06 18:06                 ` Daniel Clemente
2024-06-07  6:11                   ` Eli Zaretskii
2024-06-07  6:42                     ` Daniel Clemente
2024-06-07  6:47                       ` Eli Zaretskii
2024-06-05 13:52     ` Daniel Clemente

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).