* bug#75199: 30.0.93; Emacs crashes when completing with corfu @ 2024-12-30 13:02 Zhengyi Fu [not found] ` <handler.75199.B.17355638041034.ack@debbugs.gnu.org> 2024-12-30 14:40 ` bug#75199: 30.0.93; Emacs crashes when completing with corfu Eli Zaretskii 0 siblings, 2 replies; 12+ messages in thread From: Zhengyi Fu @ 2024-12-30 13:02 UTC (permalink / raw) To: 75199 Hi. Emacs built without Cairo steadily crashes when trying to complete symbols with Corfu. Steps to reproduce: 1. emacs -Q -l path/to/corfu.el 2. M-x corfu-mode 3. Try completing a simple by pressing C-M-i I got the following backtrace from GDB by reproducing the bug after evaluating (x-synchronize t): (gdb) br x_error_quitter Breakpoint 1 at 0x550530: file xterm.c, line 27111. (gdb) r Starting program: /home/zhengyi/src/emacs/src/emacs -Q -l \~/.emacs.d/straight/repos/corfu/corfu.el [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib64/libthread_db.so.1". [New Thread 0x7ffff13fe6c0 (LWP 15400)] [New Thread 0x7ffff0a6e6c0 (LWP 15401)] [New Thread 0x7fffebfff6c0 (LWP 15402)] [New Thread 0x7fffeb66f6c0 (LWP 15403)] Thread 1 "emacs" hit Breakpoint 1, x_error_quitter (display=0xe19910, event=0x0) at xterm.c:27111 27111 if (event->error_code == BadName) (gdb) bt full #0 x_error_quitter (display=0xe19910, event=0x0) at xterm.c:27111 buf = '\000' <repeats 255 times> buf1 = '\000' <repeats 272 times>... #1 0x000000000055076b in x_error_handler (display=0xe19910, event=0x7fffffffba70) at xterm.c:27090 stack = <optimized out> dpyinfo = <optimized out> fail = <optimized out> last = <optimized out> #2 0x00007ffff7cc047b in _XError () at /lib64/libX11.so.6 #3 0x00007ffff7cc0577 in ??? () at /lib64/libX11.so.6 #4 0x00007ffff7cc062d in ??? () at /lib64/libX11.so.6 #5 0x00007ffff7cc22dd in _XReply () at /lib64/libX11.so.6 #6 0x00007ffff7cc265b in XSync () at /lib64/libX11.so.6 #7 0x00007ffff7cc26fb in ??? () at /lib64/libX11.so.6 #8 0x00007ffff7c9ae83 in XCreatePixmap () at /lib64/libX11.so.6 #9 0x00007ffff7c9f10b in XCreatePixmapFromBitmapData () at /lib64/libX11.so.6 #10 0x0000000000546e20 in x_draw_fringe_bitmap (w=<optimized out>, row=<optimized out>, p=0x7fffffffbfd0) at xterm.c:7993 clipmask = 0 image_rect = {x = 1, y = 18, width = 8, height = 0} px = 0 pixmap = <optimized out> gcv = {function = -16576, plane_mask = 25570016, foreground = 0, background = 26339856, line_width = 0, line_style = 0, cap_style = -137583546, join_style = 32767, fill_style = 0, fill_rule = 1, arc_mode = 25570016, tile = 206158430240, stipple = 140737488338992, ts_x_origin = -16544, ts_y_origin = 32767, font = 5533212596374081280, subwindow_mode = -16528, graphics_exposures = 32767, clip_x_origin = 7277729, clip_y_origin = 0, clip_mask = 25266384, dash_offset = 0, dashes = 0 '\000'} bg = {pixel = 0, red = 0, green = 0, blue = 0, flags = 0 '\000', pad = 0 '\000'} picture = 0 attrs = {repeat = 0, alpha_map = 0, alpha_x_origin = 0, alpha_y_origin = 0, clip_x_origin = 0, clip_y_origin = 0, clip_mask = 0, graphics_exposures = 0, subwindow_mode = 0, poly_edge = 0, poly_mode = 0, dither = 0, component_alpha = 0} py = 0 drawable = 13631722 bits = 0x192bfe0 "" depth = 32 background = 4290834431 dest = {x = 1, y = 18, width = 8, height = 0} pwidth = 8 pheight = 0 f = 0x1925768 display = 0xe19910 gc = 0x190b4b0 face = 0x190a4c0 clip_rect = {x = 1, y = 1, width = 256, height = 35} #11 0x00000000006b95f0 in draw_fringe_bitmap_1 (w=w@entry=0x1925a18, row=row@entry=0x1699ca0, left_p=left_p@entry=1, overlay=<optimized out>, which=<optimized out>, which@entry=0) at fringe.c:711 f = 0x1925768 p = {which = 26, bits = 0x192bfe0, wd = 8, h = 0, dh = 0, x = 1, y = 18, bx = 1, nx = 8, by = 1, ny = 35, cursor_p = false, overlay_p = false, face = 0x190a4c0} fb = <optimized out> period = <optimized out> face_id = <optimized out> offset = <optimized out> header_line_height = <optimized out> #12 0x00000000006ba8b3 in draw_fringe_bitmap (w=w@entry=0x1925a18, row=row@entry=0x1699ca0, left_p=left_p@entry=1) at fringe.c:880 overlay = <optimized out> #13 0x00000000006bab0b in draw_row_fringe_bitmaps (w=w@entry=0x1925a18, row=row@entry=0x1699ca0) at fringe.c:901 #14 0x00000000006bac39 in draw_window_fringes (w=w@entry=0x1925a18, no_fringe_p=no_fringe_p@entry=true) at fringe.c:949 row = 0x1699ca0 yb = 350 nrows = <optimized out> y = 0 rn = 0 updated_p = <optimized out> window_buffer = <optimized out> oldbuf = <optimized out> #15 0x00000000004764ad in gui_update_window_end (w=0x1925a18, cursor_on_p=true, mouse_face_overwritten_p=<optimized out>) at dispnew.c:3948 f = 0x1925768 #16 0x0000000000476e2c in update_window (w=w@entry=0x1925a18, force_p=<optimized out>, force_p@entry=true) at dispnew.c:3869 end = <optimized out> tab_line_row = <optimized out> mouse_face_overwritten_p = false n_updated = <optimized out> mode_line_row = <optimized out> changed_p = <optimized out> invisible_rows_marked = <optimized out> row = <optimized out> header_line_row = <optimized out> yb = <optimized out> desired_matrix = <optimized out> paused_p = <optimized out> preempt_count = <optimized out> rif = <optimized out> #17 0x00000000004783bb in update_window_tree (w=w@entry=0x1925a18, force_p=force_p@entry=true) at dispnew.c:3491 paused_p = false #18 0x000000000047865b in update_frame (f=f@entry=0x1925768, force_p=true, force_p@entry=false, inhibit_hairy_id_p=inhibit_hairy_id_p@entry=false) at dispnew.c:3326 paused_p = <optimized out> root_window = 0x1925a18 #19 0x00000000004bda3e in redisplay_internal () at xdisp.c:17468 gcscrollbars = <optimized out> f_redisplay_flag = <optimized out> f = 0x1925768 w = <optimized out> sw = <optimized out> fr = <optimized out> pending = <optimized out> must_finish = <optimized out> match_p = <optimized out> tlbufpos = {charpos = <optimized out>, bytepos = <optimized out>} tlendpos = {charpos = <optimized out>, bytepos = <optimized out>} number_of_visible_frames = <optimized out> sf = <optimized out> polling_stopped_here = true tail = 0x17449c3 frame = <optimized out> hscroll_retries = <optimized out> garbaged_frame_retries = 0 consider_all_windows_p = <optimized out> update_miniwindow_p = <optimized out> count = {bytes = <optimized out>} retry = <optimized out> retry_frame = <optimized out> #20 0x00000000004beb45 in redisplay () at xdisp.c:16563 #21 0x000000000059558f in read_char (commandflag=1, map=map@entry=0x18d6403, prev_event=0x0, used_mouse_menu=used_mouse_menu@entry=0x7fffffffdcab, end_time=end_time@entry=0x0) at keyboard.c:2678 echo_current = true c = 0x0 local_getcjmp = {{__jmpbuf = {25122933, 37728, 754, 1, 48000, 3, 1, 6859535}, __mask_was_saved = 0, __saved_mask = {__val = {140737256524659, 48000, 48000, 0, 4611686018528051200, 4611686019484352512, 3, 24638176, 6859535, 24638179, 4295015296, 48000, 140737260365637, 48000, 754, 188}}}} save_jump = {{__jmpbuf = {0, 6319211, 140737260365632, 140737488345616, 0, 0, 140737260365632, 0}, __mask_was_saved = 0, __saved_mask = {__val = {187, 189, 1, 0, 128, 128, 0, 0, 44256, 140737260365632, 6381652, 11, 140737258920056, 140737266663336, 6302047, 140737245512808}}}} tem = <optimized out> save = <optimized out> previous_echo_area_message = 0x0 also_record = 0x0 reread = false recorded = false polling_stopped_here = false orig_kboard = 0xe24710 retry = <optimized out> jmpcount = {bytes = <optimized out>} #22 0x000000000059968d in read_key_sequence (keybuf=keybuf@entry=0x7fffffffdde0, prompt=prompt@entry=0x0, dont_downcase_last=dont_downcase_last@entry=false, can_return_switch_frame=can_return_switch_frame@entry=true, fix_current_buffer=fix_current_buffer@entry=true, prevent_redisplay=prevent_redisplay@entry=false, disable_text_conversion_p=false) at keyboard.c:10743 interrupted_kboard = 0xe24710 interrupted_frame = <optimized out> key = <optimized out> used_mouse_menu = false echo_local_start = 0 last_real_key_start = <optimized out> keys_local_start = 0 new_binding = <optimized out> count = {bytes = <optimized out>} t = <optimized out> echo_start = 0 keys_start = 0 current_binding = 0x18d6403 first_unbound = 31 mock_input = <optimized out> used_mouse_menu_history = {false <repeats 30 times>} fkey = {parent = 0x7ffff233d1a3, map = <optimized out>, start = 0, end = 0} keytran = {parent = 0x7ffff2c88cab, map = <optimized out>, start = 0, end = 0} indec = {parent = 0x7ffff233d193, map = <optimized out>, start = 0, end = 0} shift_translated = <optimized out> delayed_switch_frame = <optimized out> original_uppercase = <optimized out> original_uppercase_position = <optimized out> disabled_conversion = <optimized out> starting_buffer = <optimized out> fake_prefixed_keys = 0x0 first_event = 0x0 second_event = <optimized out> #23 0x000000000059b276 in command_loop_1 () at keyboard.c:1429 cmd = <optimized out> keybuf = {0x20000026, 0x16, 0x136b0, 0x7ffff2b93a84, 0x7ffff2b93a84, 0x136b0, 0x30, 0x0, 0x0, 0x7fffffffdee0, 0x80, 0x4000000012000000, 0x0, 0x6183d3 <eval_sub+2163>, 0x646e756f00000000, 0x7ffff27093e0, 0x0, 0x7ffff3ffcac0 <main_arena>, 0x12, 0x60, 0x60, 0x7ffff2338643, 0x0, 0xb2b0, 0x7fffffffe060, 0x616054 <unbind_to+244>, 0xb, 0xb2b0, 0x0, 0x7ffff2692745} i = <optimized out> last_pt = <optimized out> prev_modiff = 148 prev_buffer = 0x7ffff2692740 #24 0x0000000000614cf7 in internal_condition_case (bfun=bfun@entry=0x59b0c0 <command_loop_1>, handlers=handlers@entry=0x90, hfun=hfun@entry=0x58ea20 <cmd_error>) at eval.c:1613 val = <optimized out> c = 0xe86470 #25 0x00000000005868f2 in command_loop_2 (handlers=handlers@entry=0x90) at keyboard.c:1168 val = <optimized out> #26 0x0000000000614c51 in internal_catch (tag=tag@entry=0x12270, func=func@entry=0x5868d0 <command_loop_2>, arg=arg@entry=0x90) at eval.c:1292 val = <optimized out> c = 0xe86330 #27 0x000000000058688f in command_loop () at keyboard.c:1146 #28 0x000000000058e5c1 in recursive_edit_1 () at keyboard.c:754 count = {bytes = <optimized out>} val = <optimized out> #29 0x000000000058e94e in Frecursive_edit () at keyboard.c:837 count = {bytes = <optimized out>} buffer = <optimized out> #30 0x000000000046e192 in main (argc=<optimized out>, argv=<optimized out>) at emacs.c:2635 stack_bottom_variable = 0x18 old_argc = <optimized out> no_loadup = false junk = 0x0 dname_arg = 0x0 ch_to_dir = 0x0 original_pwd = <optimized out> dump_mode = <optimized out> skip_args = 0 temacs = 0x0 attempt_load_pdump = <optimized out> only_version = false rlim = {rlim_cur = 10022912, rlim_max = 18446744073709551615} lc_all = <optimized out> sockfd = -1 module_assertions = <optimized out> In GNU Emacs 30.0.93 (build 2, x86_64-pc-linux-gnu) of 2024-12-30 built on vbox Repository revision: d47a7d6f0feff57f52db79c3e7e0b7f51566a140 Repository branch: emacs-30 Windowing system distributor 'The X.Org Foundation', version 11.0.12101014 System Description: openSUSE Tumbleweed Configured using: 'configure --with-xft --without-cairo --with-x-toolkit=no' Configured features: DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ JPEG LIBSELINUX LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY OLDXMENU PDUMPER PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF TREE_SITTER X11 XDBE XFT XIM XINPUT2 XPM ZLIB Important settings: value of $LC_CTYPE: en_US.UTF-8 value of $LANG: en_US.UTF-8 value of $XMODIFIERS: @im=fcitx locale-coding-system: utf-8-unix Major mode: Debugger Minor modes in effect: ws-butler-global-mode: t recentf-mode: t global-auto-revert-mode: t global-diff-hl-mode: t save-place-mode: t lin-global-mode: t corfu-popupinfo-mode: t corfu-history-mode: t nerd-icons-completion-mode: t marginalia-mode: t savehist-mode: t vertico-mode: t server-mode: t kill-ring-deindent-mode: t pulsar-global-mode: t pulsar-mode: t doom-modeline-mode: t global-dash-fontify-mode: t meow-global-mode: t meow-mode: t meow-normal-mode: t meow-esc-mode: t straight-use-package-mode: t straight-package-neutering-mode: t tooltip-mode: t global-eldoc-mode: t show-paren-mode: t electric-indent-mode: t mouse-wheel-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t minibuffer-regexp-mode: t line-number-mode: t indent-tabs-mode: t transient-mark-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t Load-path shadows: /home/zhengyi/.emacs.d/straight/build-30.0.93/transient/transient hides /home/zhengyi/src/emacs/lisp/transient /home/zhengyi/.emacs.d/straight/build-30.0.93/jsonrpc/jsonrpc hides /home/zhengyi/src/emacs/lisp/jsonrpc /home/zhengyi/.emacs.d/straight/build-30.0.93/editorconfig/editorconfig hides /home/zhengyi/src/emacs/lisp/editorconfig /home/zhengyi/.emacs.d/straight/build-30.0.93/external-completion/external-completion hides /home/zhengyi/src/emacs/lisp/external-completion /home/zhengyi/.emacs.d/straight/build-30.0.93/editorconfig/editorconfig-tools hides /home/zhengyi/src/emacs/lisp/editorconfig-tools /home/zhengyi/.emacs.d/straight/build-30.0.93/editorconfig/editorconfig-fnmatch hides /home/zhengyi/src/emacs/lisp/editorconfig-fnmatch /home/zhengyi/.emacs.d/straight/build-30.0.93/editorconfig/editorconfig-core-handle hides /home/zhengyi/src/emacs/lisp/editorconfig-core-handle /home/zhengyi/.emacs.d/straight/build-30.0.93/editorconfig/editorconfig-conf-mode hides /home/zhengyi/src/emacs/lisp/editorconfig-conf-mode /home/zhengyi/.emacs.d/straight/build-30.0.93/editorconfig/editorconfig-core hides /home/zhengyi/src/emacs/lisp/editorconfig-core /home/zhengyi/.emacs.d/straight/build-30.0.93/modus-themes/theme-loaddefs hides /home/zhengyi/src/emacs/lisp/theme-loaddefs /home/zhengyi/.emacs.d/straight/build-30.0.93/xref/xref hides /home/zhengyi/src/emacs/lisp/progmodes/xref /home/zhengyi/.emacs.d/straight/build-30.0.93/project/project hides /home/zhengyi/src/emacs/lisp/progmodes/project /home/zhengyi/.emacs.d/straight/build-30.0.93/peg/peg hides /home/zhengyi/src/emacs/lisp/progmodes/peg /home/zhengyi/.emacs.d/straight/build-30.0.93/eglot/eglot hides /home/zhengyi/src/emacs/lisp/progmodes/eglot /home/zhengyi/.emacs.d/straight/build-30.0.93/flymake/flymake hides /home/zhengyi/src/emacs/lisp/progmodes/flymake /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ox-latex hides /home/zhengyi/src/emacs/lisp/org/ox-latex /home/zhengyi/.emacs.d/straight/build-30.0.93/org/org hides /home/zhengyi/src/emacs/lisp/org/org /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ox-html hides /home/zhengyi/src/emacs/lisp/org/ox-html /home/zhengyi/.emacs.d/straight/build-30.0.93/org/org-persist hides /home/zhengyi/src/emacs/lisp/org/org-persist /home/zhengyi/.emacs.d/straight/build-30.0.93/org/org-table hides /home/zhengyi/src/emacs/lisp/org/org-table /home/zhengyi/.emacs.d/straight/build-30.0.93/org/org-lint hides /home/zhengyi/src/emacs/lisp/org/org-lint /home/zhengyi/.emacs.d/straight/build-30.0.93/org/org-agenda hides /home/zhengyi/src/emacs/lisp/org/org-agenda /home/zhengyi/.emacs.d/straight/build-30.0.93/org/org-macs hides /home/zhengyi/src/emacs/lisp/org/org-macs /home/zhengyi/.emacs.d/straight/build-30.0.93/org/org-indent hides /home/zhengyi/src/emacs/lisp/org/org-indent /home/zhengyi/.emacs.d/straight/build-30.0.93/org/org-goto hides /home/zhengyi/src/emacs/lisp/org/org-goto /home/zhengyi/.emacs.d/straight/build-30.0.93/org/org-loaddefs hides /home/zhengyi/src/emacs/lisp/org/org-loaddefs /home/zhengyi/.emacs.d/straight/build-30.0.93/org/org-clock hides /home/zhengyi/src/emacs/lisp/org/org-clock /home/zhengyi/.emacs.d/straight/build-30.0.93/org/org-feed hides /home/zhengyi/src/emacs/lisp/org/org-feed /home/zhengyi/.emacs.d/straight/build-30.0.93/org/org-attach hides /home/zhengyi/src/emacs/lisp/org/org-attach /home/zhengyi/.emacs.d/straight/build-30.0.93/org/org-element-ast hides /home/zhengyi/src/emacs/lisp/org/org-element-ast /home/zhengyi/.emacs.d/straight/build-30.0.93/org/org-compat hides /home/zhengyi/src/emacs/lisp/org/org-compat /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ob-python hides /home/zhengyi/src/emacs/lisp/org/ob-python /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ob-R hides /home/zhengyi/src/emacs/lisp/org/ob-R /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ob-processing hides /home/zhengyi/src/emacs/lisp/org/ob-processing /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ob-julia hides /home/zhengyi/src/emacs/lisp/org/ob-julia /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ob-core hides /home/zhengyi/src/emacs/lisp/org/ob-core /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ol-eshell hides /home/zhengyi/src/emacs/lisp/org/ol-eshell /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ob-clojure hides /home/zhengyi/src/emacs/lisp/org/ob-clojure /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ob-exp hides /home/zhengyi/src/emacs/lisp/org/ob-exp /home/zhengyi/.emacs.d/straight/build-30.0.93/org/org-element hides /home/zhengyi/src/emacs/lisp/org/org-element /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ox hides /home/zhengyi/src/emacs/lisp/org/ox /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ol hides /home/zhengyi/src/emacs/lisp/org/ol /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ox-publish hides /home/zhengyi/src/emacs/lisp/org/ox-publish /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ox-odt hides /home/zhengyi/src/emacs/lisp/org/ox-odt /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ox-org hides /home/zhengyi/src/emacs/lisp/org/ox-org /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ox-md hides /home/zhengyi/src/emacs/lisp/org/ox-md /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ox-man hides /home/zhengyi/src/emacs/lisp/org/ox-man /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ox-koma-letter hides /home/zhengyi/src/emacs/lisp/org/ox-koma-letter /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ox-beamer hides /home/zhengyi/src/emacs/lisp/org/ox-beamer /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ox-icalendar hides /home/zhengyi/src/emacs/lisp/org/ox-icalendar /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ox-ascii hides /home/zhengyi/src/emacs/lisp/org/ox-ascii /home/zhengyi/.emacs.d/straight/build-30.0.93/org/org-timer hides /home/zhengyi/src/emacs/lisp/org/org-timer /home/zhengyi/.emacs.d/straight/build-30.0.93/org/org-tempo hides /home/zhengyi/src/emacs/lisp/org/org-tempo /home/zhengyi/.emacs.d/straight/build-30.0.93/org/org-src hides /home/zhengyi/src/emacs/lisp/org/org-src /home/zhengyi/.emacs.d/straight/build-30.0.93/org/org-mobile hides /home/zhengyi/src/emacs/lisp/org/org-mobile /home/zhengyi/.emacs.d/straight/build-30.0.93/org/org-num hides /home/zhengyi/src/emacs/lisp/org/org-num /home/zhengyi/.emacs.d/straight/build-30.0.93/org/org-refile hides /home/zhengyi/src/emacs/lisp/org/org-refile /home/zhengyi/.emacs.d/straight/build-30.0.93/org/org-mouse hides /home/zhengyi/src/emacs/lisp/org/org-mouse /home/zhengyi/.emacs.d/straight/build-30.0.93/org/org-protocol hides /home/zhengyi/src/emacs/lisp/org/org-protocol /home/zhengyi/.emacs.d/straight/build-30.0.93/org/org-plot hides /home/zhengyi/src/emacs/lisp/org/org-plot /home/zhengyi/.emacs.d/straight/build-30.0.93/org/org-pcomplete hides /home/zhengyi/src/emacs/lisp/org/org-pcomplete /home/zhengyi/.emacs.d/straight/build-30.0.93/org/org-list hides /home/zhengyi/src/emacs/lisp/org/org-list /home/zhengyi/.emacs.d/straight/build-30.0.93/org/org-inlinetask hides /home/zhengyi/src/emacs/lisp/org/org-inlinetask /home/zhengyi/.emacs.d/straight/build-30.0.93/org/org-habit hides /home/zhengyi/src/emacs/lisp/org/org-habit /home/zhengyi/.emacs.d/straight/build-30.0.93/org/org-id hides /home/zhengyi/src/emacs/lisp/org/org-id /home/zhengyi/.emacs.d/straight/build-30.0.93/org/org-keys hides /home/zhengyi/src/emacs/lisp/org/org-keys /home/zhengyi/.emacs.d/straight/build-30.0.93/org/org-fold hides /home/zhengyi/src/emacs/lisp/org/org-fold /home/zhengyi/.emacs.d/straight/build-30.0.93/org/org-fold-core hides /home/zhengyi/src/emacs/lisp/org/org-fold-core /home/zhengyi/.emacs.d/straight/build-30.0.93/org/org-footnote hides /home/zhengyi/src/emacs/lisp/org/org-footnote /home/zhengyi/.emacs.d/straight/build-30.0.93/org/org-datetree hides /home/zhengyi/src/emacs/lisp/org/org-datetree /home/zhengyi/.emacs.d/straight/build-30.0.93/org/org-ctags hides /home/zhengyi/src/emacs/lisp/org/org-ctags /home/zhengyi/.emacs.d/straight/build-30.0.93/org/org-faces hides /home/zhengyi/src/emacs/lisp/org/org-faces /home/zhengyi/.emacs.d/straight/build-30.0.93/org/org-entities hides /home/zhengyi/src/emacs/lisp/org/org-entities /home/zhengyi/.emacs.d/straight/build-30.0.93/org/org-duration hides /home/zhengyi/src/emacs/lisp/org/org-duration /home/zhengyi/.emacs.d/straight/build-30.0.93/org/org-cycle hides /home/zhengyi/src/emacs/lisp/org/org-cycle /home/zhengyi/.emacs.d/straight/build-30.0.93/org/org-colview hides /home/zhengyi/src/emacs/lisp/org/org-colview /home/zhengyi/.emacs.d/straight/build-30.0.93/org/org-capture hides /home/zhengyi/src/emacs/lisp/org/org-capture /home/zhengyi/.emacs.d/straight/build-30.0.93/org/org-attach-git hides /home/zhengyi/src/emacs/lisp/org/org-attach-git /home/zhengyi/.emacs.d/straight/build-30.0.93/org/org-archive hides /home/zhengyi/src/emacs/lisp/org/org-archive /home/zhengyi/.emacs.d/straight/build-30.0.93/org/org-crypt hides /home/zhengyi/src/emacs/lisp/org/org-crypt /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ol-gnus hides /home/zhengyi/src/emacs/lisp/org/ol-gnus /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ol-w3m hides /home/zhengyi/src/emacs/lisp/org/ol-w3m /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ol-rmail hides /home/zhengyi/src/emacs/lisp/org/ol-rmail /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ol-man hides /home/zhengyi/src/emacs/lisp/org/ol-man /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ol-mhe hides /home/zhengyi/src/emacs/lisp/org/ol-mhe /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ol-irc hides /home/zhengyi/src/emacs/lisp/org/ol-irc /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ol-eww hides /home/zhengyi/src/emacs/lisp/org/ol-eww /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ol-info hides /home/zhengyi/src/emacs/lisp/org/ol-info /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ol-bibtex hides /home/zhengyi/src/emacs/lisp/org/ol-bibtex /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ol-docview hides /home/zhengyi/src/emacs/lisp/org/ol-docview /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ol-bbdb hides /home/zhengyi/src/emacs/lisp/org/ol-bbdb /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ol-doi hides /home/zhengyi/src/emacs/lisp/org/ol-doi /home/zhengyi/.emacs.d/straight/build-30.0.93/org/oc-natbib hides /home/zhengyi/src/emacs/lisp/org/oc-natbib /home/zhengyi/.emacs.d/straight/build-30.0.93/org/oc-csl hides /home/zhengyi/src/emacs/lisp/org/oc-csl /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ob-tangle hides /home/zhengyi/src/emacs/lisp/org/ob-tangle /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ob-sqlite hides /home/zhengyi/src/emacs/lisp/org/ob-sqlite /home/zhengyi/.emacs.d/straight/build-30.0.93/org/oc-bibtex hides /home/zhengyi/src/emacs/lisp/org/oc-bibtex /home/zhengyi/.emacs.d/straight/build-30.0.93/org/oc-biblatex hides /home/zhengyi/src/emacs/lisp/org/oc-biblatex /home/zhengyi/.emacs.d/straight/build-30.0.93/org/oc-basic hides /home/zhengyi/src/emacs/lisp/org/oc-basic /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ob-sql hides /home/zhengyi/src/emacs/lisp/org/ob-sql /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ob-table hides /home/zhengyi/src/emacs/lisp/org/ob-table /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ob-shell hides /home/zhengyi/src/emacs/lisp/org/ob-shell /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ob-sed hides /home/zhengyi/src/emacs/lisp/org/ob-sed /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ob-screen hides /home/zhengyi/src/emacs/lisp/org/ob-screen /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ob-scheme hides /home/zhengyi/src/emacs/lisp/org/ob-scheme /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ob-sass hides /home/zhengyi/src/emacs/lisp/org/ob-sass /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ob-ruby hides /home/zhengyi/src/emacs/lisp/org/ob-ruby /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ob-ref hides /home/zhengyi/src/emacs/lisp/org/ob-ref /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ob-fortran hides /home/zhengyi/src/emacs/lisp/org/ob-fortran /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ob-plantuml hides /home/zhengyi/src/emacs/lisp/org/ob-plantuml /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ob-perl hides /home/zhengyi/src/emacs/lisp/org/ob-perl /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ob-org hides /home/zhengyi/src/emacs/lisp/org/ob-org /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ob-maxima hides /home/zhengyi/src/emacs/lisp/org/ob-maxima /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ob-octave hides /home/zhengyi/src/emacs/lisp/org/ob-octave /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ob-ocaml hides /home/zhengyi/src/emacs/lisp/org/ob-ocaml /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ob-matlab hides /home/zhengyi/src/emacs/lisp/org/ob-matlab /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ob-makefile hides /home/zhengyi/src/emacs/lisp/org/ob-makefile /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ob-lua hides /home/zhengyi/src/emacs/lisp/org/ob-lua /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ob-lisp hides /home/zhengyi/src/emacs/lisp/org/ob-lisp /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ob-lob hides /home/zhengyi/src/emacs/lisp/org/ob-lob /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ob-lilypond hides /home/zhengyi/src/emacs/lisp/org/ob-lilypond /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ob-latex hides /home/zhengyi/src/emacs/lisp/org/ob-latex /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ob-C hides /home/zhengyi/src/emacs/lisp/org/ob-C /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ob-java hides /home/zhengyi/src/emacs/lisp/org/ob-java /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ob-js hides /home/zhengyi/src/emacs/lisp/org/ob-js /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ob-haskell hides /home/zhengyi/src/emacs/lisp/org/ob-haskell /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ob-gnuplot hides /home/zhengyi/src/emacs/lisp/org/ob-gnuplot /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ob-groovy hides /home/zhengyi/src/emacs/lisp/org/ob-groovy /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ob-forth hides /home/zhengyi/src/emacs/lisp/org/ob-forth /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ob-eshell hides /home/zhengyi/src/emacs/lisp/org/ob-eshell /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ob-emacs-lisp hides /home/zhengyi/src/emacs/lisp/org/ob-emacs-lisp /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ob-eval hides /home/zhengyi/src/emacs/lisp/org/ob-eval /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ob hides /home/zhengyi/src/emacs/lisp/org/ob /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ob-dot hides /home/zhengyi/src/emacs/lisp/org/ob-dot /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ob-ditaa hides /home/zhengyi/src/emacs/lisp/org/ob-ditaa /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ob-css hides /home/zhengyi/src/emacs/lisp/org/ob-css /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ob-comint hides /home/zhengyi/src/emacs/lisp/org/ob-comint /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ob-calc hides /home/zhengyi/src/emacs/lisp/org/ob-calc /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ob-awk hides /home/zhengyi/src/emacs/lisp/org/ob-awk /home/zhengyi/.emacs.d/straight/build-30.0.93/org/ox-texinfo hides /home/zhengyi/src/emacs/lisp/org/ox-texinfo /home/zhengyi/.emacs.d/straight/build-30.0.93/org/oc hides /home/zhengyi/src/emacs/lisp/org/oc /home/zhengyi/.emacs.d/straight/build-30.0.93/org/org-macro hides /home/zhengyi/src/emacs/lisp/org/org-macro /home/zhengyi/.emacs.d/straight/build-30.0.93/org/org-version hides /home/zhengyi/src/emacs/lisp/org/org-version /home/zhengyi/.emacs.d/straight/build-30.0.93/erc/erc-status-sidebar hides /home/zhengyi/src/emacs/lisp/erc/erc-status-sidebar /home/zhengyi/.emacs.d/straight/build-30.0.93/erc/erc-track hides /home/zhengyi/src/emacs/lisp/erc/erc-track /home/zhengyi/.emacs.d/straight/build-30.0.93/erc/erc-truncate hides /home/zhengyi/src/emacs/lisp/erc/erc-truncate /home/zhengyi/.emacs.d/straight/build-30.0.93/erc/erc-speedbar hides /home/zhengyi/src/emacs/lisp/erc/erc-speedbar /home/zhengyi/.emacs.d/straight/build-30.0.93/erc/erc-stamp hides /home/zhengyi/src/emacs/lisp/erc/erc-stamp /home/zhengyi/.emacs.d/straight/build-30.0.93/erc/erc-spelling hides /home/zhengyi/src/emacs/lisp/erc/erc-spelling /home/zhengyi/.emacs.d/straight/build-30.0.93/erc/erc-services hides /home/zhengyi/src/emacs/lisp/erc/erc-services /home/zhengyi/.emacs.d/straight/build-30.0.93/erc/erc-nicks hides /home/zhengyi/src/emacs/lisp/erc/erc-nicks /home/zhengyi/.emacs.d/straight/build-30.0.93/erc/erc-sasl hides /home/zhengyi/src/emacs/lisp/erc/erc-sasl /home/zhengyi/.emacs.d/straight/build-30.0.93/erc/erc-pcomplete hides /home/zhengyi/src/emacs/lisp/erc/erc-pcomplete /home/zhengyi/.emacs.d/straight/build-30.0.93/erc/erc-notify hides /home/zhengyi/src/emacs/lisp/erc/erc-notify /home/zhengyi/.emacs.d/straight/build-30.0.93/erc/erc hides /home/zhengyi/src/emacs/lisp/erc/erc /home/zhengyi/.emacs.d/straight/build-30.0.93/erc/erc-match hides /home/zhengyi/src/emacs/lisp/erc/erc-match /home/zhengyi/.emacs.d/straight/build-30.0.93/erc/erc-networks hides /home/zhengyi/src/emacs/lisp/erc/erc-networks /home/zhengyi/.emacs.d/straight/build-30.0.93/erc/erc-log hides /home/zhengyi/src/emacs/lisp/erc/erc-log /home/zhengyi/.emacs.d/straight/build-30.0.93/erc/erc-join hides /home/zhengyi/src/emacs/lisp/erc/erc-join /home/zhengyi/.emacs.d/straight/build-30.0.93/erc/erc-imenu hides /home/zhengyi/src/emacs/lisp/erc/erc-imenu /home/zhengyi/.emacs.d/straight/build-30.0.93/erc/erc-loaddefs hides /home/zhengyi/src/emacs/lisp/erc/erc-loaddefs /home/zhengyi/.emacs.d/straight/build-30.0.93/erc/erc-goodies hides /home/zhengyi/src/emacs/lisp/erc/erc-goodies /home/zhengyi/.emacs.d/straight/build-30.0.93/erc/erc-fill hides /home/zhengyi/src/emacs/lisp/erc/erc-fill /home/zhengyi/.emacs.d/straight/build-30.0.93/erc/erc-ibuffer hides /home/zhengyi/src/emacs/lisp/erc/erc-ibuffer /home/zhengyi/.emacs.d/straight/build-30.0.93/erc/erc-button hides /home/zhengyi/src/emacs/lisp/erc/erc-button /home/zhengyi/.emacs.d/straight/build-30.0.93/erc/erc-backend hides /home/zhengyi/src/emacs/lisp/erc/erc-backend /home/zhengyi/.emacs.d/straight/build-30.0.93/erc/erc-common hides /home/zhengyi/src/emacs/lisp/erc/erc-common /home/zhengyi/.emacs.d/straight/build-30.0.93/erc/erc-compat hides /home/zhengyi/src/emacs/lisp/erc/erc-compat /home/zhengyi/.emacs.d/straight/build-30.0.93/erc/erc-xdcc hides /home/zhengyi/src/emacs/lisp/erc/erc-xdcc /home/zhengyi/.emacs.d/straight/build-30.0.93/erc/erc-sound hides /home/zhengyi/src/emacs/lisp/erc/erc-sound /home/zhengyi/.emacs.d/straight/build-30.0.93/erc/erc-ring hides /home/zhengyi/src/emacs/lisp/erc/erc-ring /home/zhengyi/.emacs.d/straight/build-30.0.93/erc/erc-replace hides /home/zhengyi/src/emacs/lisp/erc/erc-replace /home/zhengyi/.emacs.d/straight/build-30.0.93/erc/erc-page hides /home/zhengyi/src/emacs/lisp/erc/erc-page /home/zhengyi/.emacs.d/straight/build-30.0.93/erc/erc-netsplit hides /home/zhengyi/src/emacs/lisp/erc/erc-netsplit /home/zhengyi/.emacs.d/straight/build-30.0.93/erc/erc-menu hides /home/zhengyi/src/emacs/lisp/erc/erc-menu /home/zhengyi/.emacs.d/straight/build-30.0.93/erc/erc-lang hides /home/zhengyi/src/emacs/lisp/erc/erc-lang /home/zhengyi/.emacs.d/straight/build-30.0.93/erc/erc-list hides /home/zhengyi/src/emacs/lisp/erc/erc-list /home/zhengyi/.emacs.d/straight/build-30.0.93/erc/erc-identd hides /home/zhengyi/src/emacs/lisp/erc/erc-identd /home/zhengyi/.emacs.d/straight/build-30.0.93/erc/erc-dcc hides /home/zhengyi/src/emacs/lisp/erc/erc-dcc /home/zhengyi/.emacs.d/straight/build-30.0.93/erc/erc-ezbounce hides /home/zhengyi/src/emacs/lisp/erc/erc-ezbounce /home/zhengyi/.emacs.d/straight/build-30.0.93/erc/erc-desktop-notifications hides /home/zhengyi/src/emacs/lisp/erc/erc-desktop-notifications /home/zhengyi/.emacs.d/straight/build-30.0.93/erc/erc-capab hides /home/zhengyi/src/emacs/lisp/erc/erc-capab /home/zhengyi/.emacs.d/straight/build-30.0.93/erc/erc-autoaway hides /home/zhengyi/src/emacs/lisp/erc/erc-autoaway /home/zhengyi/.emacs.d/straight/build-30.0.93/track-changes/track-changes hides /home/zhengyi/src/emacs/lisp/emacs-lisp/track-changes /home/zhengyi/.emacs.d/straight/build-30.0.93/let-alist/let-alist hides /home/zhengyi/src/emacs/lisp/emacs-lisp/let-alist /home/zhengyi/.emacs.d/straight/build-30.0.93/compat/compat hides /home/zhengyi/src/emacs/lisp/emacs-lisp/compat /home/zhengyi/.emacs.d/straight/build-30.0.93/seq/seq hides /home/zhengyi/src/emacs/lisp/emacs-lisp/seq /home/zhengyi/.emacs.d/straight/build-30.0.93/eldoc/eldoc hides /home/zhengyi/src/emacs/lisp/emacs-lisp/eldoc Features: (shadow sort mail-extr emacsbug message mailcap yank-media puny rfc822 mml mml-sec epa epg rfc6068 epg-config gnus-util mailabbrev gmm-utils mailheader sendmail mail-utils gtags xref copyright consult bookmark-extras bookmark quick-window popon ws-butler tramp-cache time-stamp recentf tree-widget autorevert filenotify diff-hl vc-hg vc-git log-view pcvs-util vc-dir ewoc diff-mode track-changes vc vc-dispatcher bug-reference dynamic-highlight hi-lock cc-mode cc-fonts cc-guess cc-menus cc-cmds buffer-env help-fns tramp-cmds compile text-property-search saveplace tramp-sh tramp trampver tramp-integration files-x tramp-message tramp-compat xdg parse-time iso8601 auth-source-pass url-parse url-vars auth-source eieio eieio-core password-cache json map tramp-loaddefs show-font dired-aux nerd-icons-multimodal dired-x lin hl-line face-remap gdb-mi bindat gud corfu-popupinfo corfu-history corfu vertico-directory mule-util nerd-icons-completion marginalia cursor-sensor savehist vertico-repeat vertico paren-face breadcrumb cus-start project imenu goggles whitespace hl-todo display-line-numbers display-fill-column-indicator elec-pair init mastodon-autoloads tp-autoloads telega-autoloads visual-fill-column-autoloads org-protocol org ob ob-tangle ob-ref ob-lob ob-table ob-exp org-macro org-src sh-script smie executable ob-comint org-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 thingatpt find-func cal-menu calendar cal-loaddefs org-compat org-version org-macs format-spec mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums mail-prsvr with-editor shell pcomplete comint ansi-osc ring server sgml-mode facemenu dom indent-aux ansi-color pulsar pulse orderless doom-modeline doom-modeline-segments let-alist doom-modeline-env doom-modeline-core comp comp-cstr warnings comp-run comp-common shrink-path f s dash nerd-icons nerd-icons-faces nerd-icons-data nerd-icons-data-mdicon nerd-icons-data-flicon nerd-icons-data-codicon nerd-icons-data-devicon nerd-icons-data-sucicon nerd-icons-data-wicon nerd-icons-data-faicon nerd-icons-data-powerline nerd-icons-data-octicon nerd-icons-data-pomicon nerd-icons-data-ipsicon modus-vivendi-tritanopia-theme modus-vivendi-deuteranopia-theme modus-vivendi-tinted-theme modus-vivendi-theme modus-operandi-tritanopia-theme modus-operandi-deuteranopia-theme modus-operandi-tinted-theme modus-operandi-theme cus-edit pp icons wid-edit meow-tree-sitter treesit meow meow-tutor meow-cheatsheet meow-cheatsheet-layout meow-core meow-shims meow-esc meow-command array meow-thing meow-visual meow-keypad meow-beacon kmacro byte-opt meow-helpers meow-util color meow-keymap meow-face meow-var delsel cus-load modus-themes derived compat early-init dotemacs-core yaml-mode-autoloads xterm-color-autoloads ws-butler-autoloads vundo-autoloads vertico-autoloads vala-mode-autoloads cc-styles cc-align cc-engine cc-vars cc-defs transducers-autoloads toml-mode-autoloads systemd-mode-autoloads rx sly-autoloads show-font-autoloads rust-mode-autoloads pyim-basedict-autoloads pyim-autoloads xr-autoloads async-autoloads puni-autoloads pulsar-autoloads popper-autoloads persist-autoloads pdf-tools-autoloads let-alist-autoloads tablist-autoloads pcre2el-autoloads pass-autoloads password-store-otp-autoloads password-store-autoloads paren-face-autoloads outline-minor-faces-autoloads org-modern-autoloads orderless-autoloads olivetti-autoloads nerd-icons-ibuffer-autoloads nerd-icons-corfu-autoloads nerd-icons-completion-autoloads modus-themes-autoloads meow-tree-sitter-autoloads meow-autoloads marginalia-autoloads magit-autoloads with-editor-autoloads magit-section-autoloads logos-autoloads lin-autoloads inf-ruby-autoloads hl-todo-autoloads goggles-autoloads geiser-guile-autoloads geiser-chicken-autoloads geiser-chez-autoloads geiser-autoloads explain-pause-mode-autoloads erc-autoloads embark-consult-autoloads embark-autoloads eglot-tempel-autoloads peg-autoloads tempel-autoloads dpkg-dev-el-autoloads doom-modeline-autoloads shrink-path-autoloads diff-hl-autoloads devdocs-autoloads mathjax-autoloads debian-el-autoloads debian-el dired dired-loaddefs deadgrep-autoloads spinner-autoloads corfu-terminal-autoloads corfu-autoloads copilot-autoloads f-autoloads editorconfig-autoloads s-autoloads consult-eglot-autoloads eglot-autoloads track-changes-autoloads jsonrpc-autoloads flymake-autoloads external-completion-autoloads eldoc-autoloads consult-dir-autoloads colorful-mode-autoloads clipetty-autoloads cape-autoloads buffer-terminator-autoloads buffer-env-autoloads browser-hist-autoloads breadcrumb-autoloads project-autoloads xref-autoloads autocrypt-autoloads apheleia-autoloads anaphora-autoloads adaptive-wrap-autoloads term-keys-autoloads rime-autoloads posframe-autoloads popup-autoloads dash-autoloads popon-autoloads p-search-autoloads heap-autoloads nerd-icons-multimodal-autoloads nerd-icons-autoloads image-slicing-autoloads gptel-quick-autoloads gptel-autoloads transient-autoloads eldoc-diffstat-autoloads eat-autoloads discourse-autoloads finder-inf markdown-mode-autoloads request-autoloads consult-everything-autoloads consult-autoloads compat-autoloads seq-autoloads cmake-mode-autoloads straight-autoloads cl-extra help-mode straight info loaddefs-gen generate-lisp-file lisp-mnt radix-tree easy-mmode cl-seq pcase subr-x cl-macs gv cl-loaddefs cl-lib bytecomp byte-compile rmc iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel term/x-win x-win term/common-win x-dnd touch-screen tool-bar dnd fontset image regexp-opt fringe tabulated-list replace newcomment text-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu timer select scroll-bar 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 dbusbind inotify dynamic-setting system-font-setting font-render-setting xinput2 x multi-tty move-toolbar make-network-process native-compile emacs) Memory information: ((conses 16 894769 630234) (symbols 48 36634 3) (strings 32 151841 32702) (string-bytes 1 6251786) (vectors 16 59614) (vector-slots 8 1362770 215514) (floats 8 650 3618) (intervals 56 5933 2666) (buffers 992 20)) ^ permalink raw reply [flat|nested] 12+ messages in thread
[parent not found: <handler.75199.B.17355638041034.ack@debbugs.gnu.org>]
* bug#75199: Acknowledgement (30.0.93; Emacs crashes when completing with corfu) [not found] ` <handler.75199.B.17355638041034.ack@debbugs.gnu.org> @ 2024-12-30 14:25 ` Zhengyi Fu 0 siblings, 0 replies; 12+ messages in thread From: Zhengyi Fu @ 2024-12-30 14:25 UTC (permalink / raw) To: 75199 The error is probably caused by the width value of 0 passed to XCreatePixmapFromBitmapData(). It seems gui_intersect_rectangles() returns true even if the resulted rectangle is empty. Is that correct behavior? ^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#75199: 30.0.93; Emacs crashes when completing with corfu 2024-12-30 13:02 bug#75199: 30.0.93; Emacs crashes when completing with corfu Zhengyi Fu [not found] ` <handler.75199.B.17355638041034.ack@debbugs.gnu.org> @ 2024-12-30 14:40 ` Eli Zaretskii 2024-12-30 15:04 ` Zhengyi Fu 1 sibling, 1 reply; 12+ messages in thread From: Eli Zaretskii @ 2024-12-30 14:40 UTC (permalink / raw) To: Zhengyi Fu, Po Lu; +Cc: 75199 > From: Zhengyi Fu <i@fuzy.me> > Date: Mon, 30 Dec 2024 21:02:59 +0800 > > Emacs built without Cairo steadily crashes when trying to complete > symbols with Corfu. > > Steps to reproduce: > > 1. emacs -Q -l path/to/corfu.el > 2. M-x corfu-mode > 3. Try completing a simple by pressing C-M-i > > I got the following backtrace from GDB by reproducing the bug after > evaluating (x-synchronize t): > > (gdb) br x_error_quitter > Breakpoint 1 at 0x550530: file xterm.c, line 27111. > (gdb) r > Starting program: /home/zhengyi/src/emacs/src/emacs -Q -l \~/.emacs.d/straight/repos/corfu/corfu.el > [Thread debugging using libthread_db enabled] > Using host libthread_db library "/lib64/libthread_db.so.1". > [New Thread 0x7ffff13fe6c0 (LWP 15400)] > [New Thread 0x7ffff0a6e6c0 (LWP 15401)] > [New Thread 0x7fffebfff6c0 (LWP 15402)] > [New Thread 0x7fffeb66f6c0 (LWP 15403)] > > Thread 1 "emacs" hit Breakpoint 1, x_error_quitter (display=0xe19910, event=0x0) at xterm.c:27111 > 27111 if (event->error_code == BadName) > (gdb) bt full > #0 x_error_quitter (display=0xe19910, event=0x0) at xterm.c:27111 > buf = '\000' <repeats 255 times> > buf1 = '\000' <repeats 272 times>... > #1 0x000000000055076b in x_error_handler (display=0xe19910, event=0x7fffffffba70) at xterm.c:27090 > stack = <optimized out> > dpyinfo = <optimized out> > fail = <optimized out> > last = <optimized out> I don't understand how 'event', which was 0x7fffffffba70 in x_error_handler became a NULL pointer inside x_error_quitter, which x_error_handler calls. Po Lu, any ideas? Zhengyi Fu, can you configure Emacs 30.0.93 with --enable-checking and compile it with -O0, and see if you get more detailed diagnostics? Also, does disabling the X input method help in any way? (I see you are using fcitx.) ^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#75199: 30.0.93; Emacs crashes when completing with corfu 2024-12-30 14:40 ` bug#75199: 30.0.93; Emacs crashes when completing with corfu Eli Zaretskii @ 2024-12-30 15:04 ` Zhengyi Fu 2024-12-30 15:24 ` Eli Zaretskii 0 siblings, 1 reply; 12+ messages in thread From: Zhengyi Fu @ 2024-12-30 15:04 UTC (permalink / raw) To: Eli Zaretskii; +Cc: Po Lu, 75199 Eli Zaretskii <eliz@gnu.org> writes: >> From: Zhengyi Fu <i@fuzy.me> >> Date: Mon, 30 Dec 2024 21:02:59 +0800 >> >> Emacs built without Cairo steadily crashes when trying to complete >> symbols with Corfu. >> >> Steps to reproduce: >> >> 1. emacs -Q -l path/to/corfu.el >> 2. M-x corfu-mode >> 3. Try completing a simple by pressing C-M-i >> >> I got the following backtrace from GDB by reproducing the bug after >> evaluating (x-synchronize t): >> >> (gdb) br x_error_quitter >> Breakpoint 1 at 0x550530: file xterm.c, line 27111. >> (gdb) r >> Starting program: /home/zhengyi/src/emacs/src/emacs -Q -l \~/.emacs.d/straight/repos/corfu/corfu.el >> [Thread debugging using libthread_db enabled] >> Using host libthread_db library "/lib64/libthread_db.so.1". >> [New Thread 0x7ffff13fe6c0 (LWP 15400)] >> [New Thread 0x7ffff0a6e6c0 (LWP 15401)] >> [New Thread 0x7fffebfff6c0 (LWP 15402)] >> [New Thread 0x7fffeb66f6c0 (LWP 15403)] >> >> Thread 1 "emacs" hit Breakpoint 1, x_error_quitter (display=0xe19910, event=0x0) at xterm.c:27111 >> 27111 if (event->error_code == BadName) >> (gdb) bt full >> #0 x_error_quitter (display=0xe19910, event=0x0) at xterm.c:27111 >> buf = '\000' <repeats 255 times> >> buf1 = '\000' <repeats 272 times>... >> #1 0x000000000055076b in x_error_handler (display=0xe19910, event=0x7fffffffba70) at xterm.c:27090 >> stack = <optimized out> >> dpyinfo = <optimized out> >> fail = <optimized out> >> last = <optimized out> > > I don't understand how 'event', which was 0x7fffffffba70 in > x_error_handler became a NULL pointer inside x_error_quitter, which > x_error_handler calls. > > Po Lu, any ideas? > > Zhengyi Fu, can you configure Emacs 30.0.93 with --enable-checking and > compile it with -O0, and see if you get more detailed diagnostics? > > Also, does disabling the X input method help in any way? (I see you > are using fcitx.) This the backtrace I got after rebuilding Emacs with --enable-checking and -O0 and disabling fcitx: (gdb) r Starting program: /home/zhengyi/src/emacs/src/emacs -Q -l \~/.emacs.d/straight/repos/corfu/corfu.el [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib64/libthread_db.so.1". [New Thread 0x7ffff1bfe6c0 (LWP 58332)] [New Thread 0x7ffff126e6c0 (LWP 58333)] [New Thread 0x7fffebfff6c0 (LWP 58334)] [New Thread 0x7fffeb66f6c0 (LWP 58335)] [Detaching after vfork from child process 58338] [Detaching after vfork from child process 58343] [Detaching after vfork from child process 58350] [Detaching after vfork from child process 58351] [Detaching after vfork from child process 58352] [Detaching after vfork from child process 58353] [Detaching after vfork from child process 58357] [Detaching after vfork from child process 58361] [Detaching after vfork from child process 58366] [Detaching after vfork from child process 58370] [Detaching after vfork from child process 58374] [Detaching after vfork from child process 58379] Thread 1 "emacs" hit Breakpoint 1, x_error_quitter (display=0x104d5d0, event=0x7fffffffb8c0) at xterm.c:27111 27111 if (event->error_code == BadName) (gdb) bt full #0 x_error_quitter (display=0x104d5d0, event=0x7fffffffb8c0) at xterm.c:27111 buf = '\000' <repeats 16 times>, "P\267\377\377\377\177\000\000\001\000\000\000\000\000\000\000\240\267\377\377\377\177", '\000' <repeats 26 times>, "\001\001. \000\000\000\000 ", '\000' <repeats 15 times>, "/#\305\367\377\177\000\000d\372\004\001\000\000\000\000 ", '\000' <repeats 15 times>, "\300\n\005\001", '\000' <repeats 12 times>, "\362\321\361\363\377\177\000\000d\372\004\001\000\000\000\000\000-cYwQ6n\240\271\377\377\377\177\000\000\001\000\000\000\000\000\000\000\360\371\004\001", '\000' <repeats 20 times>... buf1 = "p\350\004\001\000\000\000\000\300\n\005\001\000\000\000\000\360\371\004\001\000\000\000\000\377\377\377\377\377\377\377\377d\372\004\001\000\000\000\000\000\020", '\000' <repeats 22 times>, " \264\377\377\377\177\000\000\001\000\000\000\000\000\000\000p\264\377\377\377\177\000\000P", '\000' <repeats 15 times>, "\301\031\305\367\377\177\000\000 \v\005\001\000\000\000\000\360\371\004\001\000\000\000\000$ \000\000\000\000\000\000\260\265\377\377\377\177\000\000д\377\377\377\177\000\000\201\035\305\367\377\177\000\000\360\264\377\377\377\177\000\000\277.\305\367\377\177\000\000 \265\377\377\377\177\000\000\b\372\004\001\000\000\000\000\002\000\000\000\000\000\000\000\000"... #1 0x00000000005d32de in x_error_handler (display=0x104d5d0, event=0x7fffffffb8c0) at xterm.c:27090 stack = 0x0 dpyinfo = 0x105f4d0 fail = 0x0 last = 0x104d5d0 #2 0x00007ffff7cc047b in _XError () at /lib64/libX11.so.6 #3 0x00007ffff7cc0577 in ??? () at /lib64/libX11.so.6 #4 0x00007ffff7cc062d in ??? () at /lib64/libX11.so.6 #5 0x00007ffff7cc22dd in _XReply () at /lib64/libX11.so.6 #6 0x00007ffff7cc265b in XSync () at /lib64/libX11.so.6 #7 0x00007ffff7cc26fb in ??? () at /lib64/libX11.so.6 #8 0x00007ffff7c9ae83 in XCreatePixmap () at /lib64/libX11.so.6 #9 0x00007ffff7c9f10b in XCreatePixmapFromBitmapData () at /lib64/libX11.so.6 #10 0x00000000005acef7 in x_draw_fringe_bitmap (w=0x1bf5f80, row=0x1c3c060, p=0x7fffffffbe60) at xterm.c:7993 clipmask = 0 image_rect = {x = 1, y = 18, width = 8, height = 0} px = 0 pixmap = 4785737 gcv = {function = -227767256, plane_mask = 140737488338224, foreground = 7102373, background = 140737260588072, line_width = -17072, line_style = 32767, cap_style = 7102479, join_style = 0, fill_style = 7092985, fill_rule = 0, arc_mode = -227767256, tile = 140737488338560, stipple = 7114578, ts_x_origin = 0, ts_y_origin = 0, font = 0, subwindow_mode = 15924032, graphics_exposures = 0, clip_x_origin = 0, clip_y_origin = 0, clip_mask = 15924080, dash_offset = 48, dashes = 10 '\n'} bg = {pixel = 4769435, red = 46245, green = 433, blue = 0, flags = 0 '\000', pad = 0 '\000'} picture = 0 attrs = {repeat = 0, alpha_map = 0, alpha_x_origin = 0, alpha_y_origin = 0, clip_x_origin = 0, clip_y_origin = 0, clip_mask = 0, graphics_exposures = 0, subwindow_mode = 0, poly_edge = 0, poly_mode = 0, dither = 0, component_alpha = 0} py = 0 drawable = 13631756 bits = 0x1bf4120 "" depth = 32 background = 4290834431 dest = {x = 1, y = 18, width = 8, height = 0} pwidth = 8 pheight = 0 f = 0x1b1b4a0 display = 0x104d5d0 gc = 0x1ad5840 face = 0x101b720 clip_rect = {x = 1, y = 1, width = 256, height = 35} #11 0x00000000007d4009 in draw_fringe_bitmap_1 (w=0x1bf5f80, row=0x1c3c060, left_p=1, overlay=0, which=26) at fringe.c:711 f = 0x1b1b4a0 p = {which = 26, bits = 0x1bf4120, wd = 8, h = 0, dh = 0, x = 1, y = 18, bx = 1, nx = 8, by = 1, ny = 35, cursor_p = false, overlay_p = false, face = 0x101b720} fb = 0x1bf4110 period = 0 face_id = 21 offset = 0 header_line_height = 0 #12 0x00000000007d471d in draw_fringe_bitmap (w=0x1bf5f80, row=0x1c3c060, left_p=1) at fringe.c:880 overlay = 0 #13 0x00000000007d4829 in draw_row_fringe_bitmaps (w=0x1bf5f80, row=0x1c3c060) at fringe.c:901 #14 0x00000000007d4a6e in draw_window_fringes (w=0x1bf5f80, no_fringe_p=true) at fringe.c:949 row = 0x1c3c060 yb = 350 nrows = 18 y = 0 rn = 0 updated_p = false window_buffer = 0xfe567d oldbuf = 0x7ffff2856418 #15 0x000000000046dcad in gui_update_window_end (w=0x1bf5f80, cursor_on_p=true, mouse_face_overwritten_p=false) at dispnew.c:3948 f = 0x1b1b4a0 #16 0x000000000046da27 in update_window (w=0x1bf5f80, force_p=true) at dispnew.c:3869 end = 0x1af1820 tab_line_row = 0x0 mouse_face_overwritten_p = false n_updated = 0 mode_line_row = 0x1af1820 changed_p = true invisible_rows_marked = true row = 0x1af1820 header_line_row = 0x0 yb = 350 desired_matrix = 0x1b191e0 paused_p = false preempt_count = 9 rif = 0x8df2a0 <x_redisplay_interface> #17 0x000000000046cc71 in update_window_tree (w=0x1bf5f80, force_p=true) at dispnew.c:3491 paused_p = false #18 0x000000000046c61b in update_frame (f=0x1b1b4a0, force_p=true, inhibit_hairy_id_p=false) at dispnew.c:3326 paused_p = false root_window = 0x1bf5f80 #19 0x00000000004c51b1 in redisplay_internal () at xdisp.c:17468 gcscrollbars = true f_redisplay_flag = true f = 0x1b1b4a0 w = 0x11d1690 sw = 0x11d1690 fr = 0x11d13e0 pending = false must_finish = false match_p = true tlbufpos = {charpos = 180, bytepos = 184} tlendpos = {charpos = 0, bytepos = 0} number_of_visible_frames = 2 sf = 0x11d13e0 polling_stopped_here = true tail = 0x1a17043 frame = 0x1b1b4a5 hscroll_retries = 0 garbaged_frame_retries = 0 consider_all_windows_p = true update_miniwindow_p = false count = {bytes = 128} #20 0x00000000004c2bab in redisplay () at xdisp.c:16563 #21 0x0000000000616041 in read_char (commandflag=1, map=0x1ba88f3, prev_event=0x0, used_mouse_menu=0x7fffffffd9ef, end_time=0x0) at keyboard.c:2678 echo_current = true c = 0x0 local_getcjmp = {{__jmpbuf = {140737259281624, 140737259281667, 140737488345056, 7102846, 48, 140737259281624, 15924032, 0}, __mask_was_saved = 0, __saved_mask = {__val = {140737488345104, 6496078, 140737267083907, 140737488345264, 6517891, 15924032, 0, 0, 140737488345168, 7233523, 26984432, 140737488345264, 7277134, 29001987, 128, 140737488345264}}}} save_jump = {{__jmpbuf = {140737488344944, 7120998, 140737262216221, 12658762781, 0, 44256, 140737488345136, 140737267219456}, __mask_was_saved = -226139107, __saved_mask = {__val = {746, 0, 44256, 15968288, 44256, 140737488344944, 55850543136, 140737262216221, 140737488344960, 7101566, 140737262216221, 140737488344992, 7101662, 7092985, 140737262216221, 140737488345056}}}} tem = 0x1a77dd0 save = 0x1ba88f3 previous_echo_area_message = 0x0 also_record = 0x0 reread = false recorded = false polling_stopped_here = false orig_kboard = 0x104f640 jmpcount = {bytes = 0} #22 0x000000000062a235 in read_key_sequence (keybuf=0x7fffffffdc10, prompt=0x0, dont_downcase_last=false, can_return_switch_frame=true, fix_current_buffer=true, prevent_redisplay=false, disable_text_conversion_p=false) at keyboard.c:10743 interrupted_kboard = 0x104f640 interrupted_frame = 0x11d13e0 key = 0x30 used_mouse_menu = false echo_local_start = 0 last_real_key_start = 0 keys_local_start = 0 new_binding = 0xba count = {bytes = 96} t = 0 echo_start = 0 keys_start = 0 current_binding = 0x1ba88f3 first_unbound = 31 mock_input = 0 used_mouse_menu_history = {false <repeats 30 times>} fkey = {parent = 0x7ffff24c7983, map = 0x7ffff24c7983, start = 0, end = 0} keytran = {parent = 0x7ffff2cef743, map = 0x7ffff2cef743, start = 0, end = 0} indec = {parent = 0x7ffff24c7973, map = 0x7ffff24c7973, start = 0, end = 0} shift_translated = false delayed_switch_frame = 0x0 original_uppercase = 0x0 original_uppercase_position = -1 disabled_conversion = false starting_buffer = 0x7ffff2856418 fake_prefixed_keys = 0x0 first_event = 0x0 second_event = 0x0 #23 0x0000000000612514 in command_loop_1 () at keyboard.c:1429 cmd = 0x7ffff175a428 keybuf = {0x20000026, 0x16, 0x2ffffdca0, 0x0, 0x0, 0xb2b0, 0x7ffff3e0b018, 0x7ffff2d1bc30, 0x0, 0xb2b0, 0x7ffff2856418, 0x0, 0x0, 0xf3adf0 <lispsym+45744>, 0x6c3af9 <builtin_lisp_symbol+44>, 0x0, 0x7fffffffdd20, 0x6ca866 <set_default_internal+914>, 0x7ffff285641d, 0x2006ed6c1, 0x0, 0xb2b0, 0x7ffff2d1bc30, 0x7ffff2d1bc30, 0x0, 0x0, 0x7fffffffdd60, 0xb2b0, 0xf3adf0 <lispsym+45744>, 0xb2b0} i = 1 last_pt = 184 prev_modiff = 110 prev_buffer = 0x7ffff2856418 #24 0x00000000006eac73 in internal_condition_case (bfun=0x6120ef <command_loop_1>, handlers=0x90, hfun=0x6115f7 <cmd_error>) at eval.c:1613 val = 0x60e5cf <builtin_lisp_symbol+44> c = 0x102b850 #25 0x0000000000611cf7 in command_loop_2 (handlers=0x90) at keyboard.c:1168 val = 0x90 #26 0x00000000006ea0cb in internal_catch (tag=0x12270, func=0x611cd4 <command_loop_2>, arg=0x90) at eval.c:1292 val = 0x7fffffffdf20 c = 0x102b710 #27 0x0000000000611c90 in command_loop () at keyboard.c:1146 #28 0x00000000006110d0 in recursive_edit_1 () at keyboard.c:754 count = {bytes = 32} val = 0x6f02e8 <record_unwind_protect+114> #29 0x00000000006112e3 in Frecursive_edit () at keyboard.c:837 count = {bytes = 0} buffer = 0x0 #30 0x000000000060cf48 in main (argc=4, argv=0x7fffffffe238) at emacs.c:2635 stack_bottom_variable = 0x53 old_argc = 4 dump_file = 0x0 no_loadup = false junk = 0x0 dname_arg = 0x0 ch_to_dir = 0x0 original_pwd = 0x0 dump_mode = 0x0 skip_args = 0 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) ^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#75199: 30.0.93; Emacs crashes when completing with corfu 2024-12-30 15:04 ` Zhengyi Fu @ 2024-12-30 15:24 ` Eli Zaretskii 2024-12-30 15:45 ` Zhengyi Fu 2024-12-30 15:55 ` Zhengyi Fu 0 siblings, 2 replies; 12+ messages in thread From: Eli Zaretskii @ 2024-12-30 15:24 UTC (permalink / raw) To: Zhengyi Fu; +Cc: luangruo, 75199 > From: Zhengyi Fu <i@fuzy.me> > Cc: Po Lu <luangruo@yahoo.com>, 75199@debbugs.gnu.org > Date: Mon, 30 Dec 2024 23:04:44 +0800 > > Eli Zaretskii <eliz@gnu.org> writes: > > > I don't understand how 'event', which was 0x7fffffffba70 in > > x_error_handler became a NULL pointer inside x_error_quitter, which > > x_error_handler calls. > > > > Po Lu, any ideas? > > > > Zhengyi Fu, can you configure Emacs 30.0.93 with --enable-checking and > > compile it with -O0, and see if you get more detailed diagnostics? > > > > Also, does disabling the X input method help in any way? (I see you > > are using fcitx.) > > This the backtrace I got after rebuilding Emacs with --enable-checking > and -O0 and disabling fcitx: > > > (gdb) r > Starting program: /home/zhengyi/src/emacs/src/emacs -Q -l \~/.emacs.d/straight/repos/corfu/corfu.el > [Thread debugging using libthread_db enabled] > Using host libthread_db library "/lib64/libthread_db.so.1". > [New Thread 0x7ffff1bfe6c0 (LWP 58332)] > [New Thread 0x7ffff126e6c0 (LWP 58333)] > [New Thread 0x7fffebfff6c0 (LWP 58334)] > [New Thread 0x7fffeb66f6c0 (LWP 58335)] > [Detaching after vfork from child process 58338] > [Detaching after vfork from child process 58343] > [Detaching after vfork from child process 58350] > [Detaching after vfork from child process 58351] > [Detaching after vfork from child process 58352] > [Detaching after vfork from child process 58353] > [Detaching after vfork from child process 58357] > [Detaching after vfork from child process 58361] > [Detaching after vfork from child process 58366] > [Detaching after vfork from child process 58370] > [Detaching after vfork from child process 58374] > [Detaching after vfork from child process 58379] > > Thread 1 "emacs" hit Breakpoint 1, x_error_quitter (display=0x104d5d0, event=0x7fffffffb8c0) at xterm.c:27111 > 27111 if (event->error_code == BadName) Thanks, but now it doesn't seem to be a crash? What is the value of event->error_code? Earlier you wrote: > The error is probably caused by the width value of 0 passed to > XCreatePixmapFromBitmapData(). > > It seems gui_intersect_rectangles() returns true even if the resulted > rectangle is empty. Is that correct behavior? Can you tell how this happens? Is corfu doing something special with the fringes? ^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#75199: 30.0.93; Emacs crashes when completing with corfu 2024-12-30 15:24 ` Eli Zaretskii @ 2024-12-30 15:45 ` Zhengyi Fu 2024-12-30 15:55 ` Zhengyi Fu 1 sibling, 0 replies; 12+ messages in thread From: Zhengyi Fu @ 2024-12-30 15:45 UTC (permalink / raw) To: Eli Zaretskii; +Cc: luangruo, 75199 On 2024-12-30 23:24, Eli Zaretskii wrote: >> From: Zhengyi Fu <i@fuzy.me> >> Cc: Po Lu <luangruo@yahoo.com>, 75199@debbugs.gnu.org >> Date: Mon, 30 Dec 2024 23:04:44 +0800 >> >> Eli Zaretskii <eliz@gnu.org> writes: >> >> > I don't understand how 'event', which was 0x7fffffffba70 in >> > x_error_handler became a NULL pointer inside x_error_quitter, which >> > x_error_handler calls. >> > >> > Po Lu, any ideas? >> > >> > Zhengyi Fu, can you configure Emacs 30.0.93 with --enable-checking and >> > compile it with -O0, and see if you get more detailed diagnostics? >> > >> > Also, does disabling the X input method help in any way? (I see you >> > are using fcitx.) >> >> This the backtrace I got after rebuilding Emacs with --enable-checking >> and -O0 and disabling fcitx: >> >> >> (gdb) r >> Starting program: /home/zhengyi/src/emacs/src/emacs -Q -l >> \~/.emacs.d/straight/repos/corfu/corfu.el >> [Thread debugging using libthread_db enabled] >> Using host libthread_db library "/lib64/libthread_db.so.1". >> [New Thread 0x7ffff1bfe6c0 (LWP 58332)] >> [New Thread 0x7ffff126e6c0 (LWP 58333)] >> [New Thread 0x7fffebfff6c0 (LWP 58334)] >> [New Thread 0x7fffeb66f6c0 (LWP 58335)] >> [Detaching after vfork from child process 58338] >> [Detaching after vfork from child process 58343] >> [Detaching after vfork from child process 58350] >> [Detaching after vfork from child process 58351] >> [Detaching after vfork from child process 58352] >> [Detaching after vfork from child process 58353] >> [Detaching after vfork from child process 58357] >> [Detaching after vfork from child process 58361] >> [Detaching after vfork from child process 58366] >> [Detaching after vfork from child process 58370] >> [Detaching after vfork from child process 58374] >> [Detaching after vfork from child process 58379] >> >> Thread 1 "emacs" hit Breakpoint 1, x_error_quitter (display=0x104d5d0, >> event=0x7fffffffb8c0) at xterm.c:27111 >> 27111 if (event->error_code == BadName) > > Thanks, but now it doesn't seem to be a crash? What is the value of > event->error_code? It does crash if running asynchronously. The error code is 2 (BadValue). With (x-synchrozie t), Emacs freezes after entering x_error_quitter. > Earlier you wrote: > >> The error is probably caused by the width value of 0 passed to >> XCreatePixmapFromBitmapData(). >> >> It seems gui_intersect_rectangles() returns true even if the resulted >> rectangle is empty. Is that correct behavior? > > Can you tell how this happens? Is corfu doing something special with > the fringes? Sorry, by "width" I mean "height". I'm not familiar enough with corfu implemantation to give any clue. ^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#75199: 30.0.93; Emacs crashes when completing with corfu 2024-12-30 15:24 ` Eli Zaretskii 2024-12-30 15:45 ` Zhengyi Fu @ 2024-12-30 15:55 ` Zhengyi Fu 2024-12-30 18:00 ` Daniel Mendler via Bug reports for GNU Emacs, the Swiss army knife of text editors 1 sibling, 1 reply; 12+ messages in thread From: Zhengyi Fu @ 2024-12-30 15:55 UTC (permalink / raw) To: Eli Zaretskii; +Cc: luangruo, 75199 On 2024-12-30 23:24, Eli Zaretskii wrote: > Earlier you wrote: > >> The error is probably caused by the width value of 0 passed to >> XCreatePixmapFromBitmapData(). >> >> It seems gui_intersect_rectangles() returns true even if the resulted >> rectangle is empty. Is that correct behavior? > > Can you tell how this happens? Is corfu doing something special with > the fringes? I noticed the following calls in corfu--popup-show before the error: * define-fringe-bitmap(corfu--bar [-241] 1 8 (top periodic)) * define-fringe-bitmap(corfu--nil []) ^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#75199: 30.0.93; Emacs crashes when completing with corfu 2024-12-30 15:55 ` Zhengyi Fu @ 2024-12-30 18:00 ` Daniel Mendler via Bug reports for GNU Emacs, the Swiss army knife of text editors 2024-12-30 18:28 ` Eli Zaretskii 0 siblings, 1 reply; 12+ messages in thread From: Daniel Mendler via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-12-30 18:00 UTC (permalink / raw) To: Zhengyi Fu; +Cc: luangruo, 75199, Eli Zaretskii Zhengyi Fu <i@fuzy.me> writes: > On 2024-12-30 23:24, Eli Zaretskii wrote: > >> Earlier you wrote: >> >>> The error is probably caused by the width value of 0 passed to >>> XCreatePixmapFromBitmapData(). >>> It seems gui_intersect_rectangles() returns true even if the resulted >>> rectangle is empty. Is that correct behavior? >> Can you tell how this happens? Is corfu doing something special with >> the fringes? > > I noticed the following calls in corfu--popup-show before the error: > > * define-fringe-bitmap(corfu--bar [-241] 1 8 (top periodic)) > * define-fringe-bitmap(corfu--nil []) I've adjusted the second call to the following, also for compatibility with older Emacs versions. (define-fringe-bitmap 'corfu--nil [0] 1 1) For the future, maybe `define-fringe-bitmap' should either check its argument carefully and disallow empty bitmaps, or empty bitmaps should be explicitly allowed? I've not seen reports about crashes on other builds, e.g., X11+Cairo or the NS and Carbon builds for Mac. These builds seem to support empty fringe bitmaps. Daniel ^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#75199: 30.0.93; Emacs crashes when completing with corfu 2024-12-30 18:00 ` Daniel Mendler via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-12-30 18:28 ` Eli Zaretskii 2024-12-30 18:43 ` Daniel Mendler via Bug reports for GNU Emacs, the Swiss army knife of text editors 0 siblings, 1 reply; 12+ messages in thread From: Eli Zaretskii @ 2024-12-30 18:28 UTC (permalink / raw) To: Daniel Mendler; +Cc: i, luangruo, 75199 > From: Daniel Mendler <mail@daniel-mendler.de> > Cc: Eli Zaretskii <eliz@gnu.org>, luangruo@yahoo.com, 75199@debbugs.gnu.org > Date: Mon, 30 Dec 2024 19:00:45 +0100 > > Zhengyi Fu <i@fuzy.me> writes: > > > On 2024-12-30 23:24, Eli Zaretskii wrote: > > > >> Earlier you wrote: > >> > >>> The error is probably caused by the width value of 0 passed to > >>> XCreatePixmapFromBitmapData(). > >>> It seems gui_intersect_rectangles() returns true even if the resulted > >>> rectangle is empty. Is that correct behavior? > >> Can you tell how this happens? Is corfu doing something special with > >> the fringes? > > > > I noticed the following calls in corfu--popup-show before the error: > > > > * define-fringe-bitmap(corfu--bar [-241] 1 8 (top periodic)) > > * define-fringe-bitmap(corfu--nil []) > > I've adjusted the second call to the following, also for compatibility > with older Emacs versions. > > (define-fringe-bitmap 'corfu--nil [0] 1 1) Doesn't (define-fringe-bitmap 'corfu--nil [0]) work as well? If it doesn't, I guess the doc string is inaccurate? > For the future, maybe `define-fringe-bitmap' should either check its > argument carefully and disallow empty bitmaps, or empty bitmaps should > be explicitly allowed? Adding such argument-checking is fine by me, patches welcome. Thanks. ^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#75199: 30.0.93; Emacs crashes when completing with corfu 2024-12-30 18:28 ` Eli Zaretskii @ 2024-12-30 18:43 ` Daniel Mendler via Bug reports for GNU Emacs, the Swiss army knife of text editors 2024-12-30 19:17 ` Eli Zaretskii 0 siblings, 1 reply; 12+ messages in thread From: Daniel Mendler via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-12-30 18:43 UTC (permalink / raw) To: Eli Zaretskii; +Cc: i, luangruo, 75199 Eli Zaretskii <eliz@gnu.org> writes: >> From: Daniel Mendler <mail@daniel-mendler.de> >> Cc: Eli Zaretskii <eliz@gnu.org>, luangruo@yahoo.com, 75199@debbugs.gnu.org >> Date: Mon, 30 Dec 2024 19:00:45 +0100 >> >> Zhengyi Fu <i@fuzy.me> writes: >> >> > On 2024-12-30 23:24, Eli Zaretskii wrote: >> > >> >> Earlier you wrote: >> >> >> >>> The error is probably caused by the width value of 0 passed to >> >>> XCreatePixmapFromBitmapData(). >> >>> It seems gui_intersect_rectangles() returns true even if the resulted >> >>> rectangle is empty. Is that correct behavior? >> >> Can you tell how this happens? Is corfu doing something special with >> >> the fringes? >> > >> > I noticed the following calls in corfu--popup-show before the error: >> > >> > * define-fringe-bitmap(corfu--bar [-241] 1 8 (top periodic)) >> > * define-fringe-bitmap(corfu--nil []) >> >> I've adjusted the second call to the following, also for compatibility >> with older Emacs versions. >> >> (define-fringe-bitmap 'corfu--nil [0] 1 1) > > Doesn't > > (define-fringe-bitmap 'corfu--nil [0]) > > work as well? If it doesn't, I guess the doc string is inaccurate? Yes. If I understand [info:elisp#Customizing Bitmaps] correctly, in this case the HEIGHT would be 1, but the WIDTH would be 8. This is slightly different from the above, but it should work just as well given that the bitmap is all zero. The corfu--nil bitmap is just a placeholder for the empty fringe. Daniel ^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#75199: 30.0.93; Emacs crashes when completing with corfu 2024-12-30 18:43 ` Daniel Mendler via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-12-30 19:17 ` Eli Zaretskii 2024-12-30 19:47 ` Daniel Mendler via Bug reports for GNU Emacs, the Swiss army knife of text editors 0 siblings, 1 reply; 12+ messages in thread From: Eli Zaretskii @ 2024-12-30 19:17 UTC (permalink / raw) To: Daniel Mendler; +Cc: i, luangruo, 75199 > From: Daniel Mendler <mail@daniel-mendler.de> > Cc: i@fuzy.me, luangruo@yahoo.com, 75199@debbugs.gnu.org > Date: Mon, 30 Dec 2024 19:43:34 +0100 > > Eli Zaretskii <eliz@gnu.org> writes: > > >> From: Daniel Mendler <mail@daniel-mendler.de> > >> Cc: Eli Zaretskii <eliz@gnu.org>, luangruo@yahoo.com, 75199@debbugs.gnu.org > >> Date: Mon, 30 Dec 2024 19:00:45 +0100 > >> > >> Zhengyi Fu <i@fuzy.me> writes: > >> > >> > On 2024-12-30 23:24, Eli Zaretskii wrote: > >> > > >> >> Earlier you wrote: > >> >> > >> >>> The error is probably caused by the width value of 0 passed to > >> >>> XCreatePixmapFromBitmapData(). > >> >>> It seems gui_intersect_rectangles() returns true even if the resulted > >> >>> rectangle is empty. Is that correct behavior? > >> >> Can you tell how this happens? Is corfu doing something special with > >> >> the fringes? > >> > > >> > I noticed the following calls in corfu--popup-show before the error: > >> > > >> > * define-fringe-bitmap(corfu--bar [-241] 1 8 (top periodic)) > >> > * define-fringe-bitmap(corfu--nil []) > >> > >> I've adjusted the second call to the following, also for compatibility > >> with older Emacs versions. > >> > >> (define-fringe-bitmap 'corfu--nil [0] 1 1) > > > > Doesn't > > > > (define-fringe-bitmap 'corfu--nil [0]) > > > > work as well? If it doesn't, I guess the doc string is inaccurate? > > Yes. If I understand [info:elisp#Customizing Bitmaps] correctly, in this > case the HEIGHT would be 1, but the WIDTH would be 8. This is slightly > different from the above, but it should work just as well given that the > bitmap is all zero. The corfu--nil bitmap is just a placeholder for the > empty fringe. OK, thanks. So we can conclude that this is a bug in Corfu, and in addition install on master a check for arguments of define-fringe-bitmap, for even more waterproof fix? ^ permalink raw reply [flat|nested] 12+ messages in thread
* bug#75199: 30.0.93; Emacs crashes when completing with corfu 2024-12-30 19:17 ` Eli Zaretskii @ 2024-12-30 19:47 ` Daniel Mendler via Bug reports for GNU Emacs, the Swiss army knife of text editors 0 siblings, 0 replies; 12+ messages in thread From: Daniel Mendler via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-12-30 19:47 UTC (permalink / raw) To: Eli Zaretskii; +Cc: i, luangruo, 75199 Eli Zaretskii <eliz@gnu.org> writes: >> From: Daniel Mendler <mail@daniel-mendler.de> >> Cc: i@fuzy.me, luangruo@yahoo.com, 75199@debbugs.gnu.org >> Date: Mon, 30 Dec 2024 19:43:34 +0100 >> >> Eli Zaretskii <eliz@gnu.org> writes: >> >> >> From: Daniel Mendler <mail@daniel-mendler.de> >> >> Cc: Eli Zaretskii <eliz@gnu.org>, luangruo@yahoo.com, 75199@debbugs.gnu.org >> >> Date: Mon, 30 Dec 2024 19:00:45 +0100 >> >> >> >> Zhengyi Fu <i@fuzy.me> writes: >> >> >> >> > On 2024-12-30 23:24, Eli Zaretskii wrote: >> >> > >> >> >> Earlier you wrote: >> >> >> >> >> >>> The error is probably caused by the width value of 0 passed to >> >> >>> XCreatePixmapFromBitmapData(). >> >> >>> It seems gui_intersect_rectangles() returns true even if the resulted >> >> >>> rectangle is empty. Is that correct behavior? >> >> >> Can you tell how this happens? Is corfu doing something special with >> >> >> the fringes? >> >> > >> >> > I noticed the following calls in corfu--popup-show before the error: >> >> > >> >> > * define-fringe-bitmap(corfu--bar [-241] 1 8 (top periodic)) >> >> > * define-fringe-bitmap(corfu--nil []) >> >> >> >> I've adjusted the second call to the following, also for compatibility >> >> with older Emacs versions. >> >> >> >> (define-fringe-bitmap 'corfu--nil [0] 1 1) >> > >> > Doesn't >> > >> > (define-fringe-bitmap 'corfu--nil [0]) >> > >> > work as well? If it doesn't, I guess the doc string is inaccurate? >> >> Yes. If I understand [info:elisp#Customizing Bitmaps] correctly, in this >> case the HEIGHT would be 1, but the WIDTH would be 8. This is slightly >> different from the above, but it should work just as well given that the >> bitmap is all zero. The corfu--nil bitmap is just a placeholder for the >> empty fringe. > > OK, thanks. So we can conclude that this is a bug in Corfu, and in > addition install on master a check for arguments of > define-fringe-bitmap, for even more waterproof fix? Yes. From my perspective it is sufficient to check the expected argument value ranges. Ideally these ranges are also documented in the docstring/manual. Daniel ^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2024-12-30 19:47 UTC | newest] Thread overview: 12+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2024-12-30 13:02 bug#75199: 30.0.93; Emacs crashes when completing with corfu Zhengyi Fu [not found] ` <handler.75199.B.17355638041034.ack@debbugs.gnu.org> 2024-12-30 14:25 ` bug#75199: Acknowledgement (30.0.93; Emacs crashes when completing with corfu) Zhengyi Fu 2024-12-30 14:40 ` bug#75199: 30.0.93; Emacs crashes when completing with corfu Eli Zaretskii 2024-12-30 15:04 ` Zhengyi Fu 2024-12-30 15:24 ` Eli Zaretskii 2024-12-30 15:45 ` Zhengyi Fu 2024-12-30 15:55 ` Zhengyi Fu 2024-12-30 18:00 ` Daniel Mendler via Bug reports for GNU Emacs, the Swiss army knife of text editors 2024-12-30 18:28 ` Eli Zaretskii 2024-12-30 18:43 ` Daniel Mendler via Bug reports for GNU Emacs, the Swiss army knife of text editors 2024-12-30 19:17 ` Eli Zaretskii 2024-12-30 19:47 ` Daniel Mendler via Bug reports for GNU Emacs, the Swiss army knife of text editors
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).