Package: emacs;
Reported by: Ergus <spacibba <at> aol.com>
Date: Tue, 20 May 2025 23:34:02 UTC
Severity: normal
Tags: fixed
Found in version 31.0.50
Done: Eli Zaretskii <eliz <at> gnu.org>
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
From: Ergus <spacibba <at> aol.com> To: bug-gnu-emacs <at> gnu.org Subject: 31.0.50; Performance issue in dired+isearch with dired-isearch-filenames Date: Wed, 21 May 2025 01:33:19 +0200
Hi: I have been using dired and isearch in a directory with ~8000 files and emacs became totally non-responsive. It freezed with every letter for ~10 seconds. I checked my config and it seems that the problem is `dired-isearch-filenames`. Any non-nil value produces this issue. I ran with the profiler and it showed that all the time is going in `next-single-property-change` 86696 91% - command-execute 86696 91% - call-interactively 86695 91% - funcall-interactively 59531 62% - isearch-printing-char 59531 62% - isearch-process-search-char 59531 62% - isearch-process-search-string 59531 62% - isearch-search-and-update 45907 48% - isearch-update 45890 48% - isearch-lazy-highlight-new-loop 45890 48% - redisplay 45854 48% - timer-event-handler 45854 48% - apply 45854 48% - isearch-lazy-highlight-buffer-update 45853 48% - isearch-lazy-highlight-search 45852 48% - isearch-search-string 45852 48% - #<byte-code-function C84> 45852 48% - apply 45852 48% - search-within-boundaries 45778 48% - #<byte-code-function C9F> 45726 48% - mapcar 45722 48% - #<byte-code-function C7B> 45721 48% next-single-property-change 35 0% + seq-min 9 0% make-closure 6 0% delq 40 0% + #<byte-code-function 990> 2 0% + #<byte-code-function F75> 1 0% + isearch-filter-visible 36 0% redisplay_internal (C function) 14 0% + pos-visible-in-window-group-p 2 0% + isearch-message 1 0% + window-max-chars-per-line 13620 14% + isearch-search 4 0% + isearch-message 27143 28% - isearch-del-char 13624 14% - isearch-update 13624 14% - isearch-lazy-highlight-new-loop 13624 14% - redisplay 13622 14% - timer-event-handler 13622 14% - apply 13622 14% - isearch-lazy-highlight-buffer-update 13622 14% - isearch-lazy-highlight-search 13622 14% - isearch-search-string 13622 14% - #<byte-code-function 511> 13622 14% - apply 13622 14% - search-within-boundaries 13602 14% - #<byte-code-function 500> 13584 14% - mapcar 13581 14% - #<byte-code-function 55A> 13578 14% next-single-property-change 10 0% + seq-min 4 0% make-closure 2 0% delq 13 0% + #<byte-code-function 990> 2 0% redisplay_internal (C function) 13519 14% - isearch-search 13519 14% - isearch-search-string 13519 14% - #<byte-code-function 415> 13519 14% - apply 13519 14% - search-within-boundaries 13498 14% - #<byte-code-function 42C> 13486 14% - mapcar 13485 14% - #<byte-code-function C2A> 13482 14% next-single-property-change 5 0% make-closure 3 0% + seq-min 2 0% delq 12 0% + #<byte-code-function 990> 11 0% + isearch-forward 6 0% + isearch-abort 3 0% + dired-next-line 1 0% + dired-previous-line 7498 7% - timer-event-handler 7498 7% - apply 6849 7% - isearch-lazy-highlight-buffer-update 6837 7% - isearch-lazy-highlight-search 6831 7% - isearch-search-string 6810 7% - #<byte-code-function 492> 6810 7% - apply 6810 7% - search-within-boundaries 6802 7% - #<byte-code-function 49D> 6793 7% - mapcar 6793 7% - #<byte-code-function 7A7> 6792 7% next-single-property-change 3 0% + seq-min 3 0% delq 1 0% make-closure 5 0% + #<byte-code-function 990> 15 0% + #<byte-code-function 990> 1 0% char-table-p 1 0% + isearch-search-fun 2 0% + isearch-filter-visible 9 0% + isearch-filter-visible 1 0% + internal--before-save-selected-window 638 0% + isearch-lazy-highlight-start 5 0% + jit-lock-stealth-fontify 3 0% + show-paren-function 3 0% + jit-lock-context--update 362 0% + redisplay_internal (C function) 62 0% Automatic GC 8 0% + tooltip-hide 2 0% + winner-save-old-configurations 2 0% + undo-auto--add-boundary 0 0% ... In GNU Emacs 31.0.50 (build 4, x86_64-pc-linux-gnu, GTK+ Version 3.24.49, cairo version 1.18.4) of 2025-05-19 built on RTX Repository revision: b499898a5e6e27ecacfb6a60b22a2289afc589dd Repository branch: project System Description: Arch Linux Configured using: 'configure --prefix=/home/ergo/.local/ --with-mailutils --with-pgtk --with-modules --with-cairo --with-harfbuzz --with-native-compilation=aot '--program-transform-name=s/^ctags$/ctags.emacs/'' Configured features: ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG LCMS2 LIBSYSTEMD LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER PGTK PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER WEBP XIM GTK3 ZLIB Important settings: value of $LANG: en_US.UTF-8 locale-coding-system: utf-8-unix Major mode: Elisp/l Minor modes in effect: windmove-mode: t global-auto-revert-mode: t recentf-mode: t electric-pair-mode: t whitespace-mode: t flyspell-mode: t completion-preview-mode: t diff-hl-margin-local-mode: t diff-hl-margin-mode: t diff-hl-mode: t global-corfu-mode: t corfu-mode: t fancy-compilation-mode: t winner-mode: t project-multi-mode: t gtags-mode: t repeat-mode: t xterm-mouse-mode: t tty-tip-mode: t xclip-mode: t override-global-mode: t save-place-mode: t delete-selection-mode: t savehist-mode: t global-display-fill-column-indicator-mode: t display-fill-column-indicator-mode: t global-display-line-numbers-mode: t display-line-numbers-mode: t which-key-mode: t tooltip-mode: t eldoc-mode: t show-paren-mode: t electric-indent-mode: t mouse-wheel-mode: t file-name-shadow-mode: t context-menu-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t minibuffer-regexp-mode: t size-indication-mode: t column-number-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: /mnt/casa/gits/emacs_clones/gtags-mode/gtags-mode hides /home/ergo/.config/emacs/elpa/gtags-mode-1.8.6/gtags-mode /home/ergo/.config/emacs/elpa/transient-20250516.1031/transient hides /home/ergo/.local/share/emacs/31.0.50/lisp/transient Features: (shadow sort mail-extr emacsbug lisp-mnt windmove jka-compr find-func cl-print dired-subtree dired-hacks-utils dired-aux dash help-fns radix-tree mc-edit-lines mc-hide-unmatched-lines-mode mc-mark-more sgml-mode facemenu dom mc-cycle-cursors multiple-cursors-core advice comp comp-cstr warnings rect autorevert filenotify recentf tree-widget ffap thingatpt misearch multi-isearch tramp-cache time-stamp tramp-sh tramp trampver tramp-integration tramp-message tramp-compat shell pcomplete parse-time iso8601 format-spec tramp-loaddefs vc-git elec-pair whitespace flyspell-correct flyspell ispell completion-preview diff-hl-margin diff-hl-dired diff-hl log-view log-edit message sendmail yank-media puny dired-x dired dired-loaddefs rfc822 mml mml-sec epa derived epg rfc6068 epg-config gnus-util time-date mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums mail-prsvr mailabbrev mail-utils gmm-utils mailheader add-log pcvs-util vc-dir ewoc vc vc-dispatcher diff-mode track-changes corfu fancy-compilation compile text-property-search comint ansi-osc ansi-color comp-run comp-common winner cus-edit pp cus-start cus-load wid-edit project-multi-mode gtags-mode files-x xref project ring term/tmux term/xterm xterm init rx repeat cape compat use-package-ensure package browse-url xdg 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 eieio eieio-core cl-macs icons password-cache json subr-x map url-vars use-package-diminish xt-mouse tty-tip xclip edmacro kmacro byte-opt use-package-bind-key bind-key cl-extra help-mode simple-16-theme saveplace delsel savehist easy-mmode display-fill-column-indicator display-line-numbers diminish which-key cl-seq use-package-core cl-loaddefs cl-lib bytecomp byte-compile gv disp-table info arduino-cli-mode-autoloads auctex-autoloads tex-site avy-zap-autoloads avy-autoloads benchmark-init-autoloads bufferlo-autoloads caml-autoloads cape-autoloads clang-format-autoloads cobol-mode-autoloads compile-multi-autoloads compiler-explorer-autoloads corfu-autoloads crdt-autoloads csv-mode-autoloads d-mode-autoloads dape-autoloads deadgrep-autoloads debbugs-autoloads diff-hl-autoloads diminish-autoloads dired-sidebar-autoloads dired-subtree-autoloads dired-hacks-utils-autoloads dumb-jump-autoloads e2ansi-autoloads eglot-booster-autoloads emamux-autoloads eshell-toggle-autoloads esup-autoloads evil-collection-autoloads annalist-autoloads evil-leader-autoloads evil-autoloads face-explorer-autoloads fancy-compilation-autoloads flx-autoloads flymake-nasm-autoloads flymake-quickdef-autoloads flyspell-correct-autoloads git-commit-ts-mode-autoloads git-modes-autoloads git-timemachine-autoloads gnuplot-autoloads goto-chg-autoloads groovy-mode-autoloads gtags-mode-autoloads haskell-mode-autoloads highlight-indent-guides-autoloads i3wm-config-mode-autoloads ibuffer-sidebar-autoloads iedit-autoloads imenu-list-autoloads julia-ts-mode-autoloads julia-mode-autoloads languagetool-autoloads lice-autoloads lorem-ipsum-autoloads lua-mode-autoloads magit-autoloads magit-section-autoloads llama-autoloads move-dup-autoloads multiple-cursors-autoloads mutt-mode-autoloads nasm-mode-autoloads neotree-autoloads nftables-mode-autoloads nginx-mode-autoloads notmuch-autoloads objed-autoloads phi-search-autoloads pkgbuild-mode-autoloads plz-autoloads popup-autoloads protobuf-ts-mode-autoloads scopeline-autoloads shell-command+-autoloads slime-autoloads macrostep-autoloads sphinx-mode-autoloads f-autoloads s-autoloads dash-autoloads spinner-autoloads ssh-config-mode-autoloads string-inflection-autoloads sudo-edit-autoloads systemd-autoloads tmux-mode-autoloads transient-autoloads urgrep-autoloads vdiff-autoloads hydra-autoloads lv-autoloads vterm-toggle-autoloads vterm-autoloads vundo-autoloads with-editor-autoloads xclip-autoloads yasnippet-snippets-autoloads yasnippet-autoloads early-init rmc iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel term/pgtk-win pgtk-win term/common-win touch-screen pgtk-dnd 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 cairo gtk pgtk lcms2 multi-tty move-toolbar make-network-process tty-child-frames native-compile emacs) Memory information: ((conses 16 348255 236056) (symbols 48 21674 0) (strings 32 85000 11286) (string-bytes 1 2720636) (vectors 16 38169) (vector-slots 8 1104566 168128) (floats 8 143 137) (intervals 56 14651 3188) (buffers 1064 19))
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.