all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* bug#71525: 30.0.50; Spin in delete-region/interval_deletion_adjustment
@ 2024-06-12 19:20 Steven Allen via Bug reports for GNU Emacs, the Swiss army knife of text editors
       [not found] ` <handler.71525.B.171822007123849.ack@debbugs.gnu.org>
  2024-06-13  5:49 ` bug#71525: 30.0.50; Spin in delete-region/interval_deletion_adjustment Eli Zaretskii
  0 siblings, 2 replies; 19+ messages in thread
From: Steven Allen via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-06-12 19:20 UTC (permalink / raw)
  To: 71525

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


After rebuilding today, enabling the eshell-tramp module and calling
sudo is causing a `delete-region` subcall (presumably from within
`tramp-wait-for-output`?) to spin within `interval_deletion_adjustment`
(or it might be repeatedly calling it?).

NOTE: this happens after authentication.

To reproduce:

1. `emacs -Q`
2. `M-x eval-expression RET (require 'eshell) RET`
3. `M-x eval-expression RET (add-to-list 'eshell-modules-list 'eshell-tramp)`.
4. `M-x eshell`
5. `sudo /usr/bin/echo`
6. Authenticate, press enter, and watch Emacs lock up and go to 100% CPU usage.


I've collected two backtraces: one with native compilation
(with-native-comp.txt) and one after re-evaluating (with-eval.txt) the
appropriate files (tramp-sh.el, tramp.el) to rule out compilation
issues. See attached.

In GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu, cairo version
 1.18.0) of 2024-06-12 built on Laptop
Repository revision: 6893c327e982528fdc93e3a956a4b6830a09ea3f
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12101013
System Description: Arch Linux

Configured using:
 'configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib
 --localstatedir=/var --mandir=/usr/share/man --with-gameuser=:games
 --with-modules --without-m17n-flt --without-selinux --without-pop
 --without-gconf --enable-link-time-optimization
 --with-native-compilation=yes --with-xinput2 --with-x-toolkit=no
 --without-toolkit-scroll-bars --without-xft --without-xaw3d
 --without-gsettings --with-cairo-xcb --with-sound=no --with-tree-sitter
 --without-gpm --without-compress-install
 '--program-transform-name=s/\([ec]tags\)/\1.emacs/'
 'CFLAGS=-march=native -mtune=native -O2 -pipe -fno-plt -fexceptions
 -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security
 -fstack-clash-protection -fcf-protection -flto=auto' 'LDFLAGS=-Wl,-O1
 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now
 -Wl,-z,pack-relative-relocs -Wl,-z,noexecstack -flto=auto''

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS HARFBUZZ JPEG LCMS2 LIBOTF
LIBSYSTEMD LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY OLDXMENU PDUMPER
PNG RSVG SECCOMP SQLITE3 THREADS TIFF TREE_SITTER WEBP X11 XDBE XIM
XINPUT2 XPM ZLIB

Important settings:
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix

Major mode: ELisp/l

Minor modes in effect:
  notmuch-bookmarks-mode: t
  rainbow-mode: t
  rainbow-delimiters-mode: t
  ligature-mode: t
  windmove-mode: t
  global-atomic-chrome-edit-mode: t
  i3bar-mode: t
  ednc-mode: t
  exwm-xsettings-mode: t
  exwm-background-mode: t
  exwm-systemtray-mode: t
  exwm-randr-mode: t
  ws-butler-mode: t
  auto-compile-on-load-mode: t
  auto-compile-on-save-mode: t
  auto-compile-mode: t
  save-place-mode: t
  savehist-mode: t
  openwith-mode: t
  org-super-agenda-mode: t
  global-org-modern-mode: t
  goto-address-prog-mode: t
  eat-eshell-mode: t
  magit-todos-mode: t
  global-git-commit-mode: t
  dired-async-mode: t
  magit-auto-revert-mode: t
  server-mode: t
  recentf-mode: t
  global-treesit-auto-mode: t
  yas-global-mode: t
  yas-minor-mode: t
  async-bytecomp-package-mode: t
  sudo-edit-indicator-mode: t
  global-auto-revert-mode: t
  vertico-mode: t
  corfu-popupinfo-mode: t
  global-corfu-mode: t
  corfu-mode: t
  isearch-mb-mode: t
  pixel-scroll-precision-mode: t
  global-hl-todo-mode: t
  hl-todo-mode: t
  all-the-icons-completion-mode: t
  marginalia-mode: t
  global-page-break-lines-mode: t
  page-break-lines-mode: t
  global-anzu-mode: t
  anzu-mode: t
  global-jinx-mode: t
  evil-goggles-mode: t
  global-evil-surround-mode: t
  evil-surround-mode: t
  global-evil-collection-unimpaired-mode: t
  evil-collection-unimpaired-mode: t
  evil-mode: t
  evil-local-mode: t
  desktop-environment-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  prettify-symbols-mode: t
  tab-bar-history-mode: t
  tab-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  window-divider-mode: t
  minibuffer-regexp-mode: t
  buffer-read-only: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
/home/steb/.cache/emacs/elpa/notmuch-20240529.1054/notmuch hides /usr/share/emacs/site-lisp/notmuch
/home/steb/.cache/emacs/elpa/notmuch-20240529.1054/notmuch-wash hides /usr/share/emacs/site-lisp/notmuch-wash
/home/steb/.cache/emacs/elpa/notmuch-20240529.1054/notmuch-tree hides /usr/share/emacs/site-lisp/notmuch-tree
/home/steb/.cache/emacs/elpa/notmuch-20240529.1054/notmuch-tag hides /usr/share/emacs/site-lisp/notmuch-tag
/home/steb/.cache/emacs/elpa/notmuch-20240529.1054/notmuch-show hides /usr/share/emacs/site-lisp/notmuch-show
/home/steb/.cache/emacs/elpa/notmuch-20240529.1054/notmuch-query hides /usr/share/emacs/site-lisp/notmuch-query
/home/steb/.cache/emacs/elpa/notmuch-20240529.1054/notmuch-print hides /usr/share/emacs/site-lisp/notmuch-print
/home/steb/.cache/emacs/elpa/notmuch-20240529.1054/notmuch-parser hides /usr/share/emacs/site-lisp/notmuch-parser
/home/steb/.cache/emacs/elpa/notmuch-20240529.1054/notmuch-mua hides /usr/share/emacs/site-lisp/notmuch-mua
/home/steb/.cache/emacs/elpa/notmuch-20240529.1054/notmuch-message hides /usr/share/emacs/site-lisp/notmuch-message
/home/steb/.cache/emacs/elpa/notmuch-20240529.1054/notmuch-maildir-fcc hides /usr/share/emacs/site-lisp/notmuch-maildir-fcc
/home/steb/.cache/emacs/elpa/notmuch-20240529.1054/notmuch-lib hides /usr/share/emacs/site-lisp/notmuch-lib
/home/steb/.cache/emacs/elpa/notmuch-20240529.1054/notmuch-jump hides /usr/share/emacs/site-lisp/notmuch-jump
/home/steb/.cache/emacs/elpa/notmuch-20240529.1054/notmuch-hello hides /usr/share/emacs/site-lisp/notmuch-hello
/home/steb/.cache/emacs/elpa/notmuch-20240529.1054/notmuch-draft hides /usr/share/emacs/site-lisp/notmuch-draft
/home/steb/.cache/emacs/elpa/notmuch-20240529.1054/notmuch-crypto hides /usr/share/emacs/site-lisp/notmuch-crypto
/home/steb/.cache/emacs/elpa/notmuch-20240529.1054/notmuch-compat hides /usr/share/emacs/site-lisp/notmuch-compat
/home/steb/.cache/emacs/elpa/notmuch-20240529.1054/notmuch-company hides /usr/share/emacs/site-lisp/notmuch-company
/home/steb/.cache/emacs/elpa/notmuch-20240529.1054/notmuch-address hides /usr/share/emacs/site-lisp/notmuch-address
/home/steb/.cache/emacs/elpa/notmuch-20240529.1054/coolj hides /usr/share/emacs/site-lisp/coolj
/home/steb/.cache/emacs/elpa/protobuf-mode-20240222.1652/protobuf-mode hides /usr/share/emacs/site-lisp/protobuf-mode
/home/steb/.cache/emacs/elpa/transient-20240609.2020/transient hides /usr/share/emacs/30.0.50/lisp/transient
/home/steb/.cache/emacs/elpa/modus-themes-20240227.715/theme-loaddefs hides /usr/share/emacs/30.0.50/lisp/theme-loaddefs

Features:
(shadow sort mail-extr semantic/symref/grep semantic/symref
semantic/util-modes semantic/util semantic semantic/tag semantic/lex
semantic/fw cedet emacsbug consult-xref flymake-cc vc
evil-collection-eglot eglot external-completion jsonrpc
evil-collection-ert ert ewoc evil-collection-flymake flymake cc-mode
cc-fonts cc-guess cc-menus cc-cmds tramp-rclone evil-collection-vterm
vterm vterm-module term/xterm xterm eshell-syntax-highlighting
em-elecslash em-tramp em-extpipe em-glob em-basic em-alias tramp-cmds
tramp-cache time-stamp tramp-sshfs tramp-fuse evil-collection-vc-git
vc-git vc-dispatcher evil-collection-consult consult magit-bookmark
org-bookmark-heading notmuch-bookmarks evil-collection-bookmark bookmark
buffer-move info-colors ffap misearch multi-isearch rainbow-mode
rainbow-delimiters ligature mule-util evil-collection-helpful helpful
cc-langs trace cl-print evil-collection-edebug edebug
evil-collection-debug debug backtrace info-look help-fns radix-tree
evil-collection-elisp-refs elisp-refs vertico-repeat app-launcher
windmove pinentry evil-collection-atomic-chrome atomic-chrome websocket
bindat i3bar ednc filechooser dbus exwm-xsettings xcb-xsettings
exwm-background exwm-systemtray xcb-systemtray xcb-xembed exwm-randr
xcb-randr exwm exwm-input xcb-keysyms xcb-xkb exwm-manage exwm-floating
xcb-cursor xcb-render exwm-layout exwm-workspace exwm-core xcb-ewmh
xcb-icccm xcb xcb-xproto xcb-types xcb-debug cus-start posframe
visual-wrap face-remap visual-fill-column evil-org ws-butler oc-basic
bibtex ol-man ol-info ol-docview evil-collection-doc-view doc-view
jka-compr evil-collection-image image-mode exif auto-compile saveplace
tramp-sh savehist openwith org-super-agenda ts ht org-habit org-crypt
org-protocol ob-http ob-http-mode org-modern ob-dot ob-latex ob-python
evil-collection-python python 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 evil-org-agenda
org-agenda ox-html table ox-ascii ox-publish ox org-element org-persist
org-id org-refile org-element-ast inline avl-tree ob-calc calc-store
calc-trail calc-ext evil-collection-calc calc calc-loaddefs calc-macs
ob-shell evil-collection-org org ob ob-tangle ob-ref ob-lob ob-table
ob-exp org-macro evil-collection-xref xref org-src
evil-collection-sh-script sh-script smie executable ob-comint
org-pcomplete org-list org-footnote org-faces org-entities ob-emacs-lisp
ob-core ob-eval org-cycle org-table ol org-fold org-fold-core org-keys
oc org-loaddefs org-compat org-version org-macs evil-collection-notmuch
notmuch notmuch-tree notmuch-jump notmuch-hello notmuch-show
notmuch-print notmuch-crypto notmuch-mua notmuch-message notmuch-draft
notmuch-maildir-fcc notmuch-address notmuch-company notmuch-parser
notmuch-wash coolj goto-addr icalendar diary-lib diary-loaddefs
evil-collection-calendar cal-menu calendar cal-loaddefs notmuch-tag
notmuch-lib notmuch-compat mm-view mml-smime smime dig
eshell-prompt-extras em-dirs em-ls em-prompt em-hist em-unix em-pred
esh-mode esh-var evil-collection-eat eat evil-collection-term term
disp-table ehelp eshell esh-cmd generator esh-ext esh-opt esh-proc
esh-io esh-arg esh-module esh-module-loaddefs esh-util
evil-collection-forge forge-repos forge-topics forge-tablist hl-line
forge-commands forge-semi forge-bitbucket buck forge-gogs gogs
forge-gitea gtea forge-gitlab glab forge-github ghub-graphql treepy
gsexp ghub url-http url-gw nsm url-auth let-alist gnutls forge-notify
forge-revnote forge-pullreq forge-issue forge-topic yaml bug-reference
forge-post evil-collection-markdown-mode markdown-mode edit-indirect
evil-collection-outline noutline outline forge-repo forge forge-core
forge-db closql emacsql-sqlite-common emacsql emacsql-compiler
eieio-base evil-collection-magit-todos magit-todos pcre2el rxt
re-builder f s evil-collection-grep grep evil-collection-compile compile
evil-collection-magit magit-submodule 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 evil-collection-magit-repos magit-repos magit-apply
magit-wip magit-log which-func evil-collection-imenu imenu magit-diff
smerge-mode diff diff-mode track-changes easy-mmode git-commit
evil-collection-log-edit log-edit message sendmail yank-media puny
dired-async dired-aux evil-collection-dired dired dired-loaddefs rfc822
mml mml-sec evil-collection-epa epa derived epg rfc6068 epg-config
gnus-util text-property-search mm-decode mm-bodies mm-encode mail-parse
rfc2231 rfc2047 rfc2045 mm-util ietf-drums mail-prsvr mailabbrev
mail-utils gmm-utils mailheader pcvs-util add-log magit-core
magit-autorevert magit-margin magit-transient magit-process with-editor
server magit-mode transient magit-git magit-base
evil-collection-magit-section magit-section cursor-sensor crm recentf
tree-widget treesit-auto yasnippet async-bytecomp async sudo-edit tramp
trampver tramp-integration files-x tramp-message tramp-compat shell
pcomplete evil-collection-comint comint ansi-osc parse-time iso8601
time-date format-spec ansi-color tramp-loaddefs autorevert filenotify
project vertico corfu-popupinfo evil-collection-corfu corfu orderless
isearch-mb pixel-scroll cua-base hl-todo all-the-icons-completion
all-the-icons all-the-icons-faces all-the-icons-data-material-icons
all-the-icons-data-fluentui-system-icons
all-the-icons-data-fontawesome-4 all-the-icons-data-weather-icons
all-the-icons-data-vscode-codicons all-the-icons-data-octicons
all-the-icons-data-mfixx all-the-icons-data-file-icons
all-the-icons-data-devopicons all-the-icons-data-alltheicons svg dom xml
marginalia page-break-lines anzu modus-vivendi-theme modus-themes jinx
evil-goggles pulse color evil-textobj-tree-sitter
evil-textobj-tree-sitter-thing-at-point evil-textobj-tree-sitter-core
treesit evil-args evil-surround evil-collection-unimpaired
evil-collection-tabulated-list evil-collection-tab-bar
evil-collection-simple evil-collection-replace
evil-collection-process-menu evil-collection-package-menu
evil-collection-kmacro evil-collection-info evil-collection-indent
evil-collection-help evil-collection-elisp-mode evil-collection-eldoc
evil-collection-custom evil-collection-buff-menu evil-collection
annalist evil evil-integration evil-maps evil-commands evil-digraphs
pcase reveal evil-jumps evil-command-window evil-types evil-search
evil-ex evil-macros evil-repeat evil-states evil-core comp-run advice
evil-common thingatpt rect evil-vars ring edmacro kmacro general dash
mode-local find-func no-littering compat finder-inf notmuch-version info
all-the-icons-completion-autoloads all-the-icons-dired-autoloads
all-the-icons-ibuffer-autoloads all-the-icons-autoloads
app-launcher-autoloads aria2-autoloads atomic-chrome-autoloads
auto-compile-autoloads bash-completion-autoloads bluetooth-autoloads
buffer-move-autoloads calibre-autoloads cape-autoloads casual-autoloads
casual-dired-autoloads casual-info-autoloads clojure-mode-autoloads
consult-eglot-autoloads consult-project-extra-autoloads
consult-autoloads corfu-autoloads coverage-autoloads csv-mode-autoloads
dape-autoloads devdocs-autoloads dired-filter-autoloads
dired-hacks-utils-autoloads dired-k-autoloads discomfort-autoloads
debase-autoloads disk-usage-autoloads eat-autoloads
edit-indirect-autoloads ednc-autoloads eff-autoloads ellama-autoloads
ement-autoloads eshell-prompt-extras-autoloads
eshell-syntax-highlighting-autoloads eshell-vterm-autoloads
evil-anzu-autoloads anzu-autoloads evil-args-autoloads
evil-collection-autoloads annalist-autoloads evil-goggles-autoloads
evil-nerd-commenter-autoloads evil-org-autoloads evil-surround-autoloads
evil-autoloads evil-textobj-tree-sitter-autoloads evm-mode-autoloads
expand-region-autoloads exwm-autoloads filechooser-autoloads
flymake-ruff-autoloads general-autoloads git-link-autoloads
git-modes-autoloads gnuplot-autoloads goto-chg-autoloads
graphviz-dot-mode-autoloads helpful-autoloads elisp-refs-autoloads
htmlize-autoloads i3bar-autoloads igist-autoloads info-colors-autoloads
isearch-mb-autoloads iwindow-autoloads jinx-autoloads
journalctl-autoloads kotlin-mode-autoloads ligature-autoloads
link-hint-autoloads avy-autoloads llm-autoloads magit-todos-autoloads
hl-todo-autoloads f-autoloads marginalia-autoloads mastodon-autoloads
microdata-autoloads modus-themes-autoloads named-pipe-autoloads
nftables-mode-autoloads no-littering-autoloads
notmuch-transient-autoloads nov-autoloads esxml-autoloads kv-autoloads
ob-async-autoloads ob-http-autoloads ol-notmuch-autoloads
notmuch-autoloads openwith-autoloads orderless-autoloads
org-bookmark-heading-autoloads org-download-autoloads async-autoloads
org-margin-autoloads org-modern-autoloads org-super-agenda-autoloads
orgit-forge-autoloads orgit-autoloads forge-autoloads
markdown-mode-autoloads magit-autoloads git-commit-autoloads
ghub-autoloads closql-autoloads emacsql-autoloads ox-pandoc-autoloads
ht-autoloads package-lint-flymake-autoloads package-lint-autoloads
page-break-lines-autoloads password-store-autoloads pcre2el-autoloads
pdf-tools-autoloads persist-autoloads pinentry-autoloads
pkgbuild-mode-autoloads playerctl-autoloads plz-autoloads
posframe-autoloads proced-narrow-autoloads protobuf-mode-autoloads
pulseaudio-control-autoloads qrencode-autoloads
rainbow-delimiters-autoloads rainbow-mode-autoloads request-autoloads
rg-autoloads rmsbolt-autoloads rust-playground-autoloads
solidity-mode-autoloads spinner-autoloads ssh-config-mode-autoloads
sudo-edit-autoloads svg-lib-autoloads systemctl-autoloads
systemd-autoloads tablist-autoloads taxy-magit-section-autoloads
taxy-autoloads magit-section-autoloads tmr-autoloads transient-autoloads
treepy-autoloads treesit-auto-autoloads ts-autoloads s-autoloads
dash-autoloads tzc-autoloads udev-mode-autoloads vala-mode-autoloads
cc-styles cc-align cc-engine cc-vars cc-defs vertico-autoloads
vimrc-mode-autoloads visual-fill-column-autoloads vterm-autoloads
vundo-autoloads wat-ts-mode-autoloads watch-autoloads web-mode-autoloads
websocket-autoloads wgrep-autoloads whisper-autoloads
with-editor-autoloads wordnut-autoloads ws-butler-autoloads
xelb-autoloads yaml-autoloads yasnippet-autoloads comp comp-cstr
cl-extra help-mode comp-common warnings rx xdg 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 password-cache json subr-x
map byte-opt gv bytecomp byte-compile url-vars cus-edit pp cus-load
icons wid-edit cl-loaddefs cl-lib 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 lcms2
dynamic-setting font-render-setting cairo xinput2 x multi-tty
move-toolbar make-network-process native-compile emacs)

Memory information:
((conses 16 1393955 1049946) (symbols 48 74675 2) (strings 32 379763 68125)
 (string-bytes 1 12693577) (vectors 16 139684) (vector-slots 8 1625666 443250) (floats 8 715 7279)
 (intervals 56 21960 9365) (buffers 992 46))

[-- Attachment #2: with-eval.txt --]
[-- Type: text/plain, Size: 12820 bytes --]

#0  0x000059ee4b16dd06 in interval_deletion_adjustment ()
#1  0x000059ee4b1718ab in offset_intervals ()
#2  0x000059ee4b08a4ae in del_range_2 ()
#3  0x000059ee4b08b922 in del_range_1 ()
#4  0x000059ee4b0e43ec in Fdelete_region ()
#5  0x000059ee4b0f1730 in eval_sub ()
#6  0x000059ee4b0f2650 in Flet ()
#7  0x000059ee4b0f15ae in eval_sub ()
#8  0x000059ee4b0dc0c0 in Fsave_current_buffer ()
#9  0x000059ee4b0f15ae in eval_sub ()
#10 0x000059ee4b0f2200 in FletX ()
#11 0x000059ee4b0f15ae in eval_sub ()
#12 0x000059ee4b0f3290 in funcall_lambda ()
#13 0x000059ee4b0f7489 in apply_lambda ()
#14 0x000059ee4b0f0f79 in eval_sub ()
#15 0x000059ee4b0f2650 in Flet ()
#16 0x000059ee4b0f15ae in eval_sub ()
#17 0x000059ee4b0f3290 in funcall_lambda ()
#18 0x000059ee4b0f7489 in apply_lambda ()
#19 0x000059ee4b0f0f79 in eval_sub ()
#20 0x000059ee4b0f2650 in Flet ()
#21 0x000059ee4b0f15ae in eval_sub ()
#22 0x000059ee4b0f1b76 in Fprog1 ()
#23 0x000059ee4b0f15ae in eval_sub ()
#24 0x000059ee4b0f29eb in Funwind_protect ()
#25 0x000059ee4b0f15ae in eval_sub ()
#26 0x000059ee4b0f2650 in Flet ()
#27 0x000059ee4b0f15ae in eval_sub ()
#28 0x000059ee4b0f1a20 in Fif ()
#29 0x000059ee4b0f15ae in eval_sub ()
#30 0x000059ee4b0f3290 in funcall_lambda ()
#31 0x000059ee4b0f7489 in apply_lambda ()
#32 0x000059ee4b0f0f79 in eval_sub ()
#33 0x000059ee4b0f2650 in Flet ()
#34 0x000059ee4b0f15ae in eval_sub ()
#35 0x000059ee4b0f3290 in funcall_lambda ()
#36 0x000059ee4b0f7489 in apply_lambda ()
#37 0x000059ee4b0f0f79 in eval_sub ()
#38 0x000059ee4b0f2650 in Flet ()
#39 0x000059ee4b0f15ae in eval_sub ()
#40 0x000059ee4b0f1b76 in Fprog1 ()
#41 0x000059ee4b0f15ae in eval_sub ()
#42 0x000059ee4b0f29eb in Funwind_protect ()
#43 0x000059ee4b0f15ae in eval_sub ()
#44 0x000059ee4b0f2650 in Flet ()
#45 0x000059ee4b0f15ae in eval_sub ()
#46 0x000059ee4b0f1a20 in Fif ()
#47 0x000059ee4b0f15ae in eval_sub ()
#48 0x000059ee4b0f2200 in FletX ()
#49 0x000059ee4b0f15ae in eval_sub ()
#50 0x000059ee4b0f1970 in Fprogn ()
#51 0x000059ee4b0eef7a in internal_catch ()
#52 0x000059ee4b0f15ae in eval_sub ()
#53 0x000059ee4b0f1a20 in Fif ()
#54 0x000059ee4b0f15ae in eval_sub ()
#55 0x000059ee4b0f2de9 in internal_lisp_condition_case ()
#56 0x000059ee4b0f15ae in eval_sub ()
#57 0x000059ee4b0f2650 in Flet ()
#58 0x000059ee4b0f15ae in eval_sub ()
#59 0x000059ee4b0f1a20 in Fif ()
#60 0x000059ee4b0f15ae in eval_sub ()
#61 0x000059ee4b0f3290 in funcall_lambda ()
#62 0x000059ee4b0f7489 in apply_lambda ()
#63 0x000059ee4b0f0f79 in eval_sub ()
#64 0x000059ee4b0f1a20 in Fif ()
#65 0x000059ee4b0f15ae in eval_sub ()
#66 0x000059ee4b0f3290 in funcall_lambda ()
#67 0x000059ee4b0f7489 in apply_lambda ()
#68 0x000059ee4b0f0f79 in eval_sub ()
#69 0x000059ee4b0f2650 in Flet ()
#70 0x000059ee4b0f15ae in eval_sub ()
#71 0x000059ee4b0f3290 in funcall_lambda ()
#72 0x000059ee4b0f7489 in apply_lambda ()
#73 0x000059ee4b0f0f79 in eval_sub ()
#74 0x000059ee4b0f1900 in For ()
#75 0x000059ee4b0f15ae in eval_sub ()
#76 0x000059ee4b0f3290 in funcall_lambda ()
#77 0x000059ee4b0f7489 in apply_lambda ()
#78 0x000059ee4b0f0f79 in eval_sub ()
#79 0x000059ee4b0f1a20 in Fif ()
#80 0x000059ee4b0f15ae in eval_sub ()
#81 0x000059ee4b0f19a5 in Fif ()
#82 0x000059ee4b0f15ae in eval_sub ()
#83 0x000059ee4b0f3290 in funcall_lambda ()
#84 0x000059ee4b0f7489 in apply_lambda ()
#85 0x000059ee4b0f0f79 in eval_sub ()
#86 0x000059ee4b0f274e in Flet ()
#87 0x000059ee4b0f15ae in eval_sub ()
#88 0x000059ee4b0f1970 in Fprogn ()
#89 0x000059ee4b0eef7a in internal_catch ()
#90 0x000059ee4b0f15ae in eval_sub ()
#91 0x000059ee4b0f2650 in Flet ()
#92 0x000059ee4b0f15ae in eval_sub ()
#93 0x000059ee4b0e6020 in Fsave_restriction ()
#94 0x000059ee4b0f15ae in eval_sub ()
#95 0x000059ee4b0dc4c0 in Fsave_excursion ()
#96 0x000059ee4b0f15ae in eval_sub ()
#97 0x000059ee4b0f29eb in Funwind_protect ()
#98 0x000059ee4b0f15ae in eval_sub ()
#99 0x000059ee4b0dc0c0 in Fsave_current_buffer ()
#100 0x000059ee4b0f15ae in eval_sub ()
#101 0x000059ee4b0f1970 in Fprogn ()
#102 0x000059ee4b0f15ae in eval_sub ()
#103 0x000059ee4b0f29eb in Funwind_protect ()
#104 0x000059ee4b0f15ae in eval_sub ()
#105 0x000059ee4b0f2200 in FletX ()
#106 0x000059ee4b0f15ae in eval_sub ()
#107 0x000059ee4b0f2200 in FletX ()
#108 0x000059ee4b0f15ae in eval_sub ()
#109 0x000059ee4b0f2650 in Flet ()
#110 0x000059ee4b0f15ae in eval_sub ()
#111 0x000059ee4b0f2650 in Flet ()
#112 0x000059ee4b0f15ae in eval_sub ()
#113 0x000059ee4b0f2200 in FletX ()
#114 0x000059ee4b0f15ae in eval_sub ()
#115 0x000059ee4b0f1970 in Fprogn ()
#116 0x000059ee4b0f15ae in eval_sub ()
#117 0x000059ee4b0f15ae in eval_sub ()
#118 0x000059ee4b0f1a20 in Fif ()
#119 0x000059ee4b0f15ae in eval_sub ()
#120 0x000059ee4b0f3290 in funcall_lambda ()
#121 0x000059ee4b0f3aca in Ffuncall ()
#122 0x000059ee4b0f4be0 in Fapply ()
#123 0x000059ee4b0f17e3 in eval_sub ()
#124 0x000059ee4b0f1970 in Fprogn ()
#125 0x000059ee4b0f15ae in eval_sub ()
#126 0x000059ee4b0f29eb in Funwind_protect ()
#127 0x000059ee4b0f15ae in eval_sub ()
#128 0x000059ee4b0f2650 in Flet ()
#129 0x000059ee4b0f15ae in eval_sub ()
#130 0x000059ee4b0f1b76 in Fprog1 ()
#131 0x000059ee4b0f15ae in eval_sub ()
#132 0x000059ee4b0f15ae in eval_sub ()
#133 0x000059ee4b0f2200 in FletX ()
#134 0x000059ee4b0f15ae in eval_sub ()
#135 0x000059ee4b0f3290 in funcall_lambda ()
#136 0x000059ee4b0f3aca in Ffuncall ()
#137 0x000059ee4b0f4be0 in Fapply ()
#138 0x000059ee4b0f17e3 in eval_sub ()
#139 0x000059ee4b0f1970 in Fprogn ()
#140 0x000059ee4b0eef7a in internal_catch ()
#141 0x000059ee4b0f15ae in eval_sub ()
#142 0x000059ee4b0f1970 in Fprogn ()
#143 0x000059ee4b0eef7a in internal_catch ()
#144 0x000059ee4b0f15ae in eval_sub ()
#145 0x000059ee4b0f1c5b in Fsetq ()
#146 0x000059ee4b0f15ae in eval_sub ()
#147 0x000059ee4b0f1a20 in Fif ()
#148 0x000059ee4b0f15ae in eval_sub ()
#149 0x000059ee4b0f2650 in Flet ()
#150 0x000059ee4b0f15ae in eval_sub ()
#151 0x000059ee4b0f15ae in eval_sub ()
#152 0x000059ee4b0f29eb in Funwind_protect ()
#153 0x000059ee4b0f15ae in eval_sub ()
#154 0x000059ee4b0f2650 in Flet ()
#155 0x000059ee4b0f15ae in eval_sub ()
#156 0x000059ee4b0f2200 in FletX ()
#157 0x000059ee4b0f15ae in eval_sub ()
#158 0x000059ee4b0f1970 in Fprogn ()
#159 0x000059ee4b0f15ae in eval_sub ()
#160 0x000059ee4b0f29eb in Funwind_protect ()
#161 0x000059ee4b0f15ae in eval_sub ()
#162 0x000059ee4b0f2650 in Flet ()
#163 0x000059ee4b0f15ae in eval_sub ()
#164 0x000059ee4b0f15ae in eval_sub ()
#165 0x000059ee4b0f2650 in Flet ()
#166 0x000059ee4b0f15ae in eval_sub ()
#167 0x000059ee4b0f3290 in funcall_lambda ()
#168 0x000059ee4b0f3aca in Ffuncall ()
#169 0x000059ee4b0f4be0 in Fapply ()
#170 0x000059ee4b155efa in Fmake_process ()
#171 0x00007021d12a2dd3 in F657368656c6c2d6761746865722d70726f636573732d6f7574707574_eshell_gather_process_output_0 () at /home/steb/.config/emacs/eln-cache/30.0.50-227e13ca/esh-proc-276ac638-b9009414.eln
#172 0x000059ee4b0f3aca in Ffuncall ()
#173 0x00007021d123ea1d in F657368656c6c2d636f6e6e656374696f6e2d6c6f63616c2d636f6d6d616e64_eshell_connection_local_command_0 () at /home/steb/.config/emacs/eln-cache/30.0.50-227e13ca/esh-ext-9adf61a7-391dc0d5.eln
#174 0x000059ee4b0f3aca in Ffuncall ()
#175 0x00007021d123eca0 in F657368656c6c2d65787465726e616c2d636f6d6d616e64_eshell_external_command_0 () at /home/steb/.config/emacs/eln-cache/30.0.50-227e13ca/esh-ext-9adf61a7-391dc0d5.eln
#176 0x000059ee4b0f3aca in Ffuncall ()
#177 0x00007021d125bf16 in F657368656c6c2d706c61696e2d636f6d6d616e64_eshell_plain_command_0 () at /home/steb/.config/emacs/eln-cache/30.0.50-227e13ca/esh-cmd-40a07574-cc16f19e.eln
#178 0x000059ee4b0f3aca in Ffuncall ()
#179 0x00007021d125b96d in F657368656c6c2d6e616d65642d636f6d6d616e64_eshell_named_command_0 () at /home/steb/.config/emacs/eln-cache/30.0.50-227e13ca/esh-cmd-40a07574-cc16f19e.eln
#180 0x000059ee4b0f1730 in eval_sub ()
#181 0x000059ee4b0f3073 in Feval ()
#182 0x000059ee4b0f3aca in Ffuncall ()
#183 0x00007021d125acdc in F657368656c6c2d646f2d6576616c_eshell_do_eval_0 () at /home/steb/.config/emacs/eln-cache/30.0.50-227e13ca/esh-cmd-40a07574-cc16f19e.eln
#184 0x000059ee4b14a039 in exec_byte_code ()
#185 0x000059ee4b0f3aca in Ffuncall ()
#186 0x000059ee4b0f17e3 in eval_sub ()
#187 0x000059ee4b0f2650 in Flet ()
#188 0x000059ee4b0f15ae in eval_sub ()
#189 0x000059ee4b0f3073 in Feval ()
#190 0x000059ee4b0f3aca in Ffuncall ()
#191 0x00007021d125939c in F657368656c6c2d646f2d6576616c_eshell_do_eval_0 () at /home/steb/.config/emacs/eln-cache/30.0.50-227e13ca/esh-cmd-40a07574-cc16f19e.eln
#192 0x000059ee4b0f3aca in Ffuncall ()
#193 0x00007021d125ac92 in F657368656c6c2d646f2d6576616c_eshell_do_eval_0 () at /home/steb/.config/emacs/eln-cache/30.0.50-227e13ca/esh-cmd-40a07574-cc16f19e.eln
#194 0x000059ee4b0f3aca in Ffuncall ()
#195 0x00007021d125a155 in F657368656c6c2d646f2d6576616c_eshell_do_eval_0 () at /home/steb/.config/emacs/eln-cache/30.0.50-227e13ca/esh-cmd-40a07574-cc16f19e.eln
#196 0x000059ee4b14a039 in exec_byte_code ()
#197 0x000059ee4b0f3aca in Ffuncall ()
#198 0x000059ee4b0f17e3 in eval_sub ()
#199 0x000059ee4b0f2650 in Flet ()
#200 0x000059ee4b0f15ae in eval_sub ()
#201 0x000059ee4b0f3073 in Feval ()
#202 0x000059ee4b0f3aca in Ffuncall ()
#203 0x00007021d125939c in F657368656c6c2d646f2d6576616c_eshell_do_eval_0 () at /home/steb/.config/emacs/eln-cache/30.0.50-227e13ca/esh-cmd-40a07574-cc16f19e.eln
#204 0x000059ee4b0f1730 in eval_sub ()
#205 0x000059ee4b0f2de9 in internal_lisp_condition_case ()
#206 0x000059ee4b0f15ae in eval_sub ()
#207 0x000059ee4b0f3073 in Feval ()
#208 0x000059ee4b0f3aca in Ffuncall ()
#209 0x00007021d1258650 in F657368656c6c2d646f2d6576616c_eshell_do_eval_0 () at /home/steb/.config/emacs/eln-cache/30.0.50-227e13ca/esh-cmd-40a07574-cc16f19e.eln
#210 0x000059ee4b0f3aca in Ffuncall ()
#211 0x00007021d12583bf in F657368656c6c2d646f2d6576616c_eshell_do_eval_0 () at /home/steb/.config/emacs/eln-cache/30.0.50-227e13ca/esh-cmd-40a07574-cc16f19e.eln
#212 0x000059ee4b14a039 in exec_byte_code ()
#213 0x000059ee4b0f3aca in Ffuncall ()
#214 0x000059ee4b0f17e3 in eval_sub ()
#215 0x000059ee4b0f2650 in Flet ()
#216 0x000059ee4b0f15ae in eval_sub ()
#217 0x000059ee4b0f3073 in Feval ()
#218 0x000059ee4b0f3aca in Ffuncall ()
#219 0x00007021d125939c in F657368656c6c2d646f2d6576616c_eshell_do_eval_0 () at /home/steb/.config/emacs/eln-cache/30.0.50-227e13ca/esh-cmd-40a07574-cc16f19e.eln
#220 0x000059ee4b0f3aca in Ffuncall ()
#221 0x00007021d125a9b1 in F657368656c6c2d646f2d6576616c_eshell_do_eval_0 () at /home/steb/.config/emacs/eln-cache/30.0.50-227e13ca/esh-cmd-40a07574-cc16f19e.eln
#222 0x000059ee4b0f3aca in Ffuncall ()
#223 0x00007021d125a155 in F657368656c6c2d646f2d6576616c_eshell_do_eval_0 () at /home/steb/.config/emacs/eln-cache/30.0.50-227e13ca/esh-cmd-40a07574-cc16f19e.eln
#224 0x000059ee4b0f3aca in Ffuncall ()
#225 0x00007021d125a9b1 in F657368656c6c2d646f2d6576616c_eshell_do_eval_0 () at /home/steb/.config/emacs/eln-cache/30.0.50-227e13ca/esh-cmd-40a07574-cc16f19e.eln
#226 0x000059ee4b14a039 in exec_byte_code ()
#227 0x000059ee4b0f3aca in Ffuncall ()
#228 0x000059ee4b0f17e3 in eval_sub ()
#229 0x000059ee4b0f2650 in Flet ()
#230 0x000059ee4b0f15ae in eval_sub ()
#231 0x000059ee4b0f3073 in Feval ()
#232 0x000059ee4b0f3aca in Ffuncall ()
#233 0x00007021d125939c in F657368656c6c2d646f2d6576616c_eshell_do_eval_0 () at /home/steb/.config/emacs/eln-cache/30.0.50-227e13ca/esh-cmd-40a07574-cc16f19e.eln
#234 0x000059ee4b0f3aca in Ffuncall ()
#235 0x00007021d1256027 in F657368656c6c2d726573756d652d6576616c_eshell_resume_eval_0 () at /home/steb/.config/emacs/eln-cache/30.0.50-227e13ca/esh-cmd-40a07574-cc16f19e.eln
#236 0x000059ee4b0f3aca in Ffuncall ()
#237 0x00007021d12557b5 in F657368656c6c2d6576616c2d636f6d6d616e64_eshell_eval_command_0 () at /home/steb/.config/emacs/eln-cache/30.0.50-227e13ca/esh-cmd-40a07574-cc16f19e.eln
#238 0x000059ee4b0f3aca in Ffuncall ()
#239 0x00007021d117ef81 in F657368656c6c2d73656e642d696e707574_eshell_send_input_0 () at /home/steb/.config/emacs/eln-cache/30.0.50-227e13ca/esh-mode-29140b27-601e69ac.eln
#240 0x000059ee4b0f3aca in Ffuncall ()
#241 0x000059ee4b0e5a22 in Ffuncall_interactively ()
#242 0x000059ee4b0f3aca in Ffuncall ()
#243 0x000059ee4b0f69e3 in Fcall_interactively ()
#244 0x00007021d30ba8a5 in F636f6d6d616e642d65786563757465_command_execute_0 () at /usr/bin/../lib/emacs/30.0.50/native-lisp/30.0.50-227e13ca/preloaded/simple-fab5b0cf-c39c6ea4.eln
#245 0x000059ee4b0f3aca in Ffuncall ()
#246 0x000059ee4b0560c1 in command_loop_1.lto_priv ()
#247 0x000059ee4b0ef037 in internal_condition_case ()
#248 0x000059ee4b053eae in command_loop_2 ()
#249 0x000059ee4b0eef7a in internal_catch ()
#250 0x000059ee4b055c03 in command_loop.lto_priv ()
#251 0x000059ee4b1d71eb in recursive_edit_1.isra ()
#252 0x000059ee4b057980 in Frecursive_edit ()
#253 0x000059ee4af251ea in main ()

[-- Attachment #3: with-native-comp.txt --]
[-- Type: text/plain, Size: 8917 bytes --]

#0  0x00005e3281ce5ce7 in interval_deletion_adjustment ()
#1  0x00005e3281ce98ab in offset_intervals ()
#2  0x00005e3281c024ae in del_range_2 ()
#3  0x00005e3281c03922 in del_range_1 ()
#4  0x00005e3281cc2ac5 in exec_byte_code ()
#5  0x00005e3281c6baca in Ffuncall ()
#6  0x00007b975f9204b8 in F7472616d702d73656e642d636f6d6d616e64_tramp_send_command_0 () at /home/steb/.config/emacs/eln-cache/30.0.50-227e13ca/tramp-sh-c6a0d036-f0745ec2.eln
#7  0x00005e3281c6baca in Ffuncall ()
#8  0x00007b975f90efca in F7472616d702d6f70656e2d7368656c6c_tramp_open_shell_0 () at /home/steb/.config/emacs/eln-cache/30.0.50-227e13ca/tramp-sh-c6a0d036-f0745ec2.eln
#9  0x00005e3281c6baca in Ffuncall ()
#10 0x00007b975f9100e3 in F7472616d702d6f70656e2d636f6e6e656374696f6e2d73657475702d696e7465726163746976652d7368656c6c_tramp_open_connection_setup_interactive_shell_0 () at /home/steb/.config/emacs/eln-cache/30.0.50-227e13ca/tramp-sh-c6a0d036-f0745ec2.eln
#11 0x00005e3281c6baca in Ffuncall ()
#12 0x00007b975f91f63d in F7472616d702d6d617962652d6f70656e2d636f6e6e656374696f6e_tramp_maybe_open_connection_0 () at /home/steb/.config/emacs/eln-cache/30.0.50-227e13ca/tramp-sh-c6a0d036-f0745ec2.eln
#13 0x00005e3281c6baca in Ffuncall ()
#14 0x00007b975f920585 in F7472616d702d73656e642d636f6d6d616e64_tramp_send_command_0 () at /home/steb/.config/emacs/eln-cache/30.0.50-227e13ca/tramp-sh-c6a0d036-f0745ec2.eln
#15 0x00005e3281c6baca in Ffuncall ()
#16 0x00007b975f921239 in F7472616d702d73656e642d636f6d6d616e642d616e642d636865636b_tramp_send_command_and_check_0 () at /home/steb/.config/emacs/eln-cache/30.0.50-227e13ca/tramp-sh-c6a0d036-f0745ec2.eln
#17 0x00005e3281c6baca in Ffuncall ()
#18 0x00007b975f9217e0 in F7472616d702d626172662d756e6c6573732d6f6b6179_tramp_barf_unless_okay_0 () at /home/steb/.config/emacs/eln-cache/30.0.50-227e13ca/tramp-sh-c6a0d036-f0745ec2.eln
#19 0x00005e3281c6baca in Ffuncall ()
#20 0x00007b975f922006 in F7472616d702d73656e642d636f6d6d616e642d616e642d72656164_tramp_send_command_and_read_0 () at /home/steb/.config/emacs/eln-cache/30.0.50-227e13ca/tramp-sh-c6a0d036-f0745ec2.eln
#21 0x00005e3281c6baca in Ffuncall ()
#22 0x00007b975f8f4f7e in F7472616d702d73682d68616e646c652d6d616b652d70726f63657373_tramp_sh_handle_make_process_0 () at /home/steb/.config/emacs/eln-cache/30.0.50-227e13ca/tramp-sh-c6a0d036-f0745ec2.eln
#23 0x00005e3281c6baca in Ffuncall ()
#24 0x00005e3281c6cbe0 in Fapply ()
#25 0x00007b975f90720a in F7472616d702d73682d66696c652d6e616d652d68616e646c6572_tramp_sh_file_name_handler_0 () at /home/steb/.config/emacs/eln-cache/30.0.50-227e13ca/tramp-sh-c6a0d036-f0745ec2.eln
#26 0x00005e3281c6baca in Ffuncall ()
#27 0x00005e3281c6cbe0 in Fapply ()
#28 0x00005e3281cc2039 in exec_byte_code ()
#29 0x00005e3281c6baca in Ffuncall ()
#30 0x00005e3281c6cbe0 in Fapply ()
#31 0x00005e3281ccdefa in Fmake_process ()
#32 0x00007b975ffc1dd3 in F657368656c6c2d6761746865722d70726f636573732d6f7574707574_eshell_gather_process_output_0 () at /home/steb/.config/emacs/eln-cache/30.0.50-227e13ca/esh-proc-276ac638-b9009414.eln
#33 0x00005e3281c6baca in Ffuncall ()
#34 0x00007b975fd68a1d in F657368656c6c2d636f6e6e656374696f6e2d6c6f63616c2d636f6d6d616e64_eshell_connection_local_command_0 () at /home/steb/.config/emacs/eln-cache/30.0.50-227e13ca/esh-ext-9adf61a7-391dc0d5.eln
#35 0x00005e3281c6baca in Ffuncall ()
#36 0x00007b975fd68ca0 in F657368656c6c2d65787465726e616c2d636f6d6d616e64_eshell_external_command_0 () at /home/steb/.config/emacs/eln-cache/30.0.50-227e13ca/esh-ext-9adf61a7-391dc0d5.eln
#37 0x00005e3281c6baca in Ffuncall ()
#38 0x00007b975fd85f16 in F657368656c6c2d706c61696e2d636f6d6d616e64_eshell_plain_command_0 () at /home/steb/.config/emacs/eln-cache/30.0.50-227e13ca/esh-cmd-40a07574-cc16f19e.eln
#39 0x00005e3281c6baca in Ffuncall ()
#40 0x00007b975fd8596d in F657368656c6c2d6e616d65642d636f6d6d616e64_eshell_named_command_0 () at /home/steb/.config/emacs/eln-cache/30.0.50-227e13ca/esh-cmd-40a07574-cc16f19e.eln
#41 0x00005e3281c69730 in eval_sub ()
#42 0x00005e3281c6b073 in Feval ()
#43 0x00005e3281c6baca in Ffuncall ()
#44 0x00007b975fd84cdc in F657368656c6c2d646f2d6576616c_eshell_do_eval_0 () at /home/steb/.config/emacs/eln-cache/30.0.50-227e13ca/esh-cmd-40a07574-cc16f19e.eln
#45 0x00005e3281cc2039 in exec_byte_code ()
#46 0x00005e3281c6baca in Ffuncall ()
#47 0x00005e3281c697e3 in eval_sub ()
#48 0x00005e3281c6a650 in Flet ()
#49 0x00005e3281c695ae in eval_sub ()
#50 0x00005e3281c6b073 in Feval ()
#51 0x00005e3281c6baca in Ffuncall ()
#52 0x00007b975fd8339c in F657368656c6c2d646f2d6576616c_eshell_do_eval_0 () at /home/steb/.config/emacs/eln-cache/30.0.50-227e13ca/esh-cmd-40a07574-cc16f19e.eln
#53 0x00005e3281c6baca in Ffuncall ()
#54 0x00007b975fd84c92 in F657368656c6c2d646f2d6576616c_eshell_do_eval_0 () at /home/steb/.config/emacs/eln-cache/30.0.50-227e13ca/esh-cmd-40a07574-cc16f19e.eln
#55 0x00005e3281c6baca in Ffuncall ()
#56 0x00007b975fd84155 in F657368656c6c2d646f2d6576616c_eshell_do_eval_0 () at /home/steb/.config/emacs/eln-cache/30.0.50-227e13ca/esh-cmd-40a07574-cc16f19e.eln
#57 0x00005e3281cc2039 in exec_byte_code ()
#58 0x00005e3281c6baca in Ffuncall ()
#59 0x00005e3281c697e3 in eval_sub ()
#60 0x00005e3281c6a650 in Flet ()
#61 0x00005e3281c695ae in eval_sub ()
#62 0x00005e3281c6b073 in Feval ()
#63 0x00005e3281c6baca in Ffuncall ()
#64 0x00007b975fd8339c in F657368656c6c2d646f2d6576616c_eshell_do_eval_0 () at /home/steb/.config/emacs/eln-cache/30.0.50-227e13ca/esh-cmd-40a07574-cc16f19e.eln
#65 0x00005e3281c69730 in eval_sub ()
#66 0x00005e3281c6ade9 in internal_lisp_condition_case ()
#67 0x00005e3281c695ae in eval_sub ()
#68 0x00005e3281c6b073 in Feval ()
#69 0x00005e3281c6baca in Ffuncall ()
#70 0x00007b975fd82650 in F657368656c6c2d646f2d6576616c_eshell_do_eval_0 () at /home/steb/.config/emacs/eln-cache/30.0.50-227e13ca/esh-cmd-40a07574-cc16f19e.eln
#71 0x00005e3281c6baca in Ffuncall ()
#72 0x00007b975fd823bf in F657368656c6c2d646f2d6576616c_eshell_do_eval_0 () at /home/steb/.config/emacs/eln-cache/30.0.50-227e13ca/esh-cmd-40a07574-cc16f19e.eln
#73 0x00005e3281cc2039 in exec_byte_code ()
#74 0x00005e3281c6baca in Ffuncall ()
#75 0x00005e3281c697e3 in eval_sub ()
#76 0x00005e3281c6a650 in Flet ()
#77 0x00005e3281c695ae in eval_sub ()
#78 0x00005e3281c6b073 in Feval ()
#79 0x00005e3281c6baca in Ffuncall ()
#80 0x00007b975fd8339c in F657368656c6c2d646f2d6576616c_eshell_do_eval_0 () at /home/steb/.config/emacs/eln-cache/30.0.50-227e13ca/esh-cmd-40a07574-cc16f19e.eln
#81 0x00005e3281c6baca in Ffuncall ()
#82 0x00007b975fd849b1 in F657368656c6c2d646f2d6576616c_eshell_do_eval_0 () at /home/steb/.config/emacs/eln-cache/30.0.50-227e13ca/esh-cmd-40a07574-cc16f19e.eln
#83 0x00005e3281c6baca in Ffuncall ()
#84 0x00007b975fd84155 in F657368656c6c2d646f2d6576616c_eshell_do_eval_0 () at /home/steb/.config/emacs/eln-cache/30.0.50-227e13ca/esh-cmd-40a07574-cc16f19e.eln
#85 0x00005e3281c6baca in Ffuncall ()
#86 0x00007b975fd849b1 in F657368656c6c2d646f2d6576616c_eshell_do_eval_0 () at /home/steb/.config/emacs/eln-cache/30.0.50-227e13ca/esh-cmd-40a07574-cc16f19e.eln
#87 0x00005e3281cc2039 in exec_byte_code ()
#88 0x00005e3281c6baca in Ffuncall ()
#89 0x00005e3281c697e3 in eval_sub ()
#90 0x00005e3281c6a650 in Flet ()
#91 0x00005e3281c695ae in eval_sub ()
#92 0x00005e3281c6b073 in Feval ()
#93 0x00005e3281c6baca in Ffuncall ()
#94 0x00007b975fd8339c in F657368656c6c2d646f2d6576616c_eshell_do_eval_0 () at /home/steb/.config/emacs/eln-cache/30.0.50-227e13ca/esh-cmd-40a07574-cc16f19e.eln
#95 0x00005e3281c6baca in Ffuncall ()
#96 0x00007b975fd80027 in F657368656c6c2d726573756d652d6576616c_eshell_resume_eval_0 () at /home/steb/.config/emacs/eln-cache/30.0.50-227e13ca/esh-cmd-40a07574-cc16f19e.eln
#97 0x00005e3281c6baca in Ffuncall ()
#98 0x00007b975fd7f7b5 in F657368656c6c2d6576616c2d636f6d6d616e64_eshell_eval_command_0 () at /home/steb/.config/emacs/eln-cache/30.0.50-227e13ca/esh-cmd-40a07574-cc16f19e.eln
#99 0x00005e3281c6baca in Ffuncall ()
#100 0x00007b975fd24f81 in F657368656c6c2d73656e642d696e707574_eshell_send_input_0 () at /home/steb/.config/emacs/eln-cache/30.0.50-227e13ca/esh-mode-29140b27-601e69ac.eln
#101 0x00005e3281c6baca in Ffuncall ()
#102 0x00005e3281c5da22 in Ffuncall_interactively ()
#103 0x00005e3281c6baca in Ffuncall ()
#104 0x00005e3281c6e9e3 in Fcall_interactively ()
#105 0x00007b976156c8a5 in F636f6d6d616e642d65786563757465_command_execute_0 () at /usr/bin/../lib/emacs/30.0.50/native-lisp/30.0.50-227e13ca/preloaded/simple-fab5b0cf-c39c6ea4.eln
#106 0x00005e3281c6baca in Ffuncall ()
#107 0x00005e3281bce0c1 in command_loop_1.lto_priv ()
#108 0x00005e3281c67037 in internal_condition_case ()
#109 0x00005e3281bcbeae in command_loop_2 ()
#110 0x00005e3281c66f7a in internal_catch ()
#111 0x00005e3281bcdc03 in command_loop.lto_priv ()
#112 0x00005e3281d4f1eb in recursive_edit_1.isra ()
#113 0x00005e3281bcf980 in Frecursive_edit ()
#114 0x00005e3281a9d1ea in main ()

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

* bug#71525: Acknowledgement (30.0.50; Spin in delete-region/interval_deletion_adjustment)
       [not found] ` <handler.71525.B.171822007123849.ack@debbugs.gnu.org>
@ 2024-06-13  5:14   ` Steven Allen via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2024-06-13  5:52     ` bug#71525: 30.0.50; Spin in delete-region/interval_deletion_adjustment " Eli Zaretskii
  0 siblings, 1 reply; 19+ messages in thread
From: Steven Allen via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-06-13  5:14 UTC (permalink / raw)
  To: 71525


I just ran into this bug with jinx calling
`next-single-char-property-change` and hanging forever.

NOTE: I last compiled Emacs on the 8th, so the issue must have been
introduced some time between now and then.





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

* bug#71525: 30.0.50; Spin in delete-region/interval_deletion_adjustment
  2024-06-12 19:20 bug#71525: 30.0.50; Spin in delete-region/interval_deletion_adjustment Steven Allen via Bug reports for GNU Emacs, the Swiss army knife of text editors
       [not found] ` <handler.71525.B.171822007123849.ack@debbugs.gnu.org>
@ 2024-06-13  5:49 ` Eli Zaretskii
  1 sibling, 0 replies; 19+ messages in thread
From: Eli Zaretskii @ 2024-06-13  5:49 UTC (permalink / raw)
  To: Steven Allen; +Cc: 71525

> Date: Wed, 12 Jun 2024 12:20:49 -0700
> From:  Steven Allen via "Bug reports for GNU Emacs,
>  the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org>
> 
> After rebuilding today, enabling the eshell-tramp module and calling
> sudo is causing a `delete-region` subcall (presumably from within
> `tramp-wait-for-output`?) to spin within `interval_deletion_adjustment`
> (or it might be repeatedly calling it?).
> 
> NOTE: this happens after authentication.
> 
> To reproduce:
> 
> 1. `emacs -Q`
> 2. `M-x eval-expression RET (require 'eshell) RET`
> 3. `M-x eval-expression RET (add-to-list 'eshell-modules-list 'eshell-tramp)`.
> 4. `M-x eshell`
> 5. `sudo /usr/bin/echo`
> 6. Authenticate, press enter, and watch Emacs lock up and go to 100% CPU usage.
> 
> 
> I've collected two backtraces: one with native compilation
> (with-native-comp.txt) and one after re-evaluating (with-eval.txt) the
> appropriate files (tramp-sh.el, tramp.el) to rule out compilation
> issues. See attached.

Thanks, but please also start GDB from the Emacs src directory (or
type "source /path/to/emacs/src/.gdbinit" after starting GDB), and
show Lisp backtrace produced together with the C backtrace.  This will
make it easier to analyze the relevant Lisp code -- all those Ffuncall
and Fapply calls will show the Lisp symbols they call.





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

* bug#71525: 30.0.50; Spin in delete-region/interval_deletion_adjustment Spin in delete-region/interval_deletion_adjustment)
  2024-06-13  5:14   ` bug#71525: Acknowledgement (30.0.50; Spin in delete-region/interval_deletion_adjustment) Steven Allen via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-06-13  5:52     ` Eli Zaretskii
  2024-06-13 15:32       ` Steven Allen via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 1 reply; 19+ messages in thread
From: Eli Zaretskii @ 2024-06-13  5:52 UTC (permalink / raw)
  To: Steven Allen; +Cc: 71525

> Date: Wed, 12 Jun 2024 22:14:49 -0700
> From:  Steven Allen via "Bug reports for GNU Emacs,
>  the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org>
> 
> 
> I just ran into this bug with jinx calling
> `next-single-char-property-change` and hanging forever.
> 
> NOTE: I last compiled Emacs on the 8th, so the issue must have been
> introduced some time between now and then.

Yes, please update from Git and try again.  There were a couple of
bugs fixed meanwhile which could explain what you see.





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

* bug#71525: 30.0.50; Spin in delete-region/interval_deletion_adjustment Spin in delete-region/interval_deletion_adjustment)
  2024-06-13  5:52     ` bug#71525: 30.0.50; Spin in delete-region/interval_deletion_adjustment " Eli Zaretskii
@ 2024-06-13 15:32       ` Steven Allen via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2024-06-13 15:52         ` Eli Zaretskii
  0 siblings, 1 reply; 19+ messages in thread
From: Steven Allen via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-06-13 15:32 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 71525


> Yes, please update from Git and try again.  There were a couple of
> bugs fixed meanwhile which could explain what you see.

Ah, no, I mean the bug was introduced between the 8th and the 12th.
Between:

- e2527dd9fd376b15d2f59ae440858b442b069577 (8th)
- 6893c327e982528fdc93e3a956a4b6830a09ea3f (12th)





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

* bug#71525: 30.0.50; Spin in delete-region/interval_deletion_adjustment Spin in delete-region/interval_deletion_adjustment)
  2024-06-13 15:32       ` Steven Allen via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-06-13 15:52         ` Eli Zaretskii
  2024-06-13 16:00           ` Steven Allen via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2024-06-13 19:18           ` Jim Porter
  0 siblings, 2 replies; 19+ messages in thread
From: Eli Zaretskii @ 2024-06-13 15:52 UTC (permalink / raw)
  To: Steven Allen, Jim Porter; +Cc: 71525

> From: Steven Allen <steven@stebalien.com>
> Cc: 71525@debbugs.gnu.org
> Date: Thu, 13 Jun 2024 08:32:14 -0700
> 
> 
> > Yes, please update from Git and try again.  There were a couple of
> > bugs fixed meanwhile which could explain what you see.
> 
> Ah, no, I mean the bug was introduced between the 8th and the 12th.
> Between:
> 
> - e2527dd9fd376b15d2f59ae440858b442b069577 (8th)
> - 6893c327e982528fdc93e3a956a4b6830a09ea3f (12th)

I see a couple of Eshell-related changes, but no obvious suspects.

Can someone please reproduce this and post a detailed backtrace,
including Lisp backtrace?  Jim, are you looking into this?





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

* bug#71525: 30.0.50; Spin in delete-region/interval_deletion_adjustment Spin in delete-region/interval_deletion_adjustment)
  2024-06-13 15:52         ` Eli Zaretskii
@ 2024-06-13 16:00           ` Steven Allen via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2024-06-13 16:06             ` Steven Allen via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2024-06-13 19:18           ` Jim Porter
  1 sibling, 1 reply; 19+ messages in thread
From: Steven Allen via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-06-13 16:00 UTC (permalink / raw)
  To: Eli Zaretskii, Jim Porter; +Cc: 71525


Eli Zaretskii <eliz@gnu.org> writes:
> I see a couple of Eshell-related changes, but no obvious suspects.
>
> Can someone please reproduce this and post a detailed backtrace,
> including Lisp backtrace?  Jim, are you looking into this?

It's hanging in the C code, not lisp. I believe the issue is:

https://lists.gnu.org/archive/html/emacs-devel/2024-06/msg00241.html

So I'm trying that patch now.

If that doesn't work, I'll produce a backtrace sometime later today.





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

* bug#71525: 30.0.50; Spin in delete-region/interval_deletion_adjustment Spin in delete-region/interval_deletion_adjustment)
  2024-06-13 16:00           ` Steven Allen via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-06-13 16:06             ` Steven Allen via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2024-06-13 16:31               ` Eli Zaretskii
  0 siblings, 1 reply; 19+ messages in thread
From: Steven Allen via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-06-13 16:06 UTC (permalink / raw)
  To: Eli Zaretskii, Jim Porter; +Cc: 71525


Steven Allen <steven@stebalien.com> writes:
> Eli Zaretskii <eliz@gnu.org> writes:
>> I see a couple of Eshell-related changes, but no obvious suspects.
>>
>> Can someone please reproduce this and post a detailed backtrace,
>> including Lisp backtrace?  Jim, are you looking into this?
>
> It's hanging in the C code, not lisp. I believe the issue is:
>
> https://lists.gnu.org/archive/html/emacs-devel/2024-06/msg00241.html
>
> So I'm trying that patch now.
>
> If that doesn't work, I'll produce a backtrace sometime later today.

I can confirm that the linked patch fixes the issue. Would you still
like me to produce a backtrace?





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

* bug#71525: 30.0.50; Spin in delete-region/interval_deletion_adjustment Spin in delete-region/interval_deletion_adjustment)
  2024-06-13 16:06             ` Steven Allen via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-06-13 16:31               ` Eli Zaretskii
  2024-06-13 21:47                 ` Dmitry Gutov
  0 siblings, 1 reply; 19+ messages in thread
From: Eli Zaretskii @ 2024-06-13 16:31 UTC (permalink / raw)
  To: Steven Allen; +Cc: jporterbugs, 71525

> From: Steven Allen <steven@stebalien.com>
> Cc: 71525@debbugs.gnu.org
> Date: Thu, 13 Jun 2024 09:06:07 -0700
> 
> 
> Steven Allen <steven@stebalien.com> writes:
> > Eli Zaretskii <eliz@gnu.org> writes:
> >> I see a couple of Eshell-related changes, but no obvious suspects.
> >>
> >> Can someone please reproduce this and post a detailed backtrace,
> >> including Lisp backtrace?  Jim, are you looking into this?
> >
> > It's hanging in the C code, not lisp. I believe the issue is:
> >
> > https://lists.gnu.org/archive/html/emacs-devel/2024-06/msg00241.html
> >
> > So I'm trying that patch now.
> >
> > If that doesn't work, I'll produce a backtrace sometime later today.
> 
> I can confirm that the linked patch fixes the issue. Would you still
> like me to produce a backtrace?

No need, thanks.  That issue is already on someone's table.





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

* bug#71525: 30.0.50; Spin in delete-region/interval_deletion_adjustment Spin in delete-region/interval_deletion_adjustment)
  2024-06-13 15:52         ` Eli Zaretskii
  2024-06-13 16:00           ` Steven Allen via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-06-13 19:18           ` Jim Porter
  2024-06-13 19:42             ` Steven Allen via Bug reports for GNU Emacs, the Swiss army knife of text editors
  1 sibling, 1 reply; 19+ messages in thread
From: Jim Porter @ 2024-06-13 19:18 UTC (permalink / raw)
  To: Eli Zaretskii, Steven Allen; +Cc: 71525

On 6/13/2024 8:52 AM, Eli Zaretskii wrote:
> Can someone please reproduce this and post a detailed backtrace,
> including Lisp backtrace?  Jim, are you looking into this?

It sounds like we've found the culprit, but I am tracking this and can 
help fix/update Eshell if that's the way we decide to go. (I haven't 
read through all of bug#66020 yet so I don't fully understand all of the 
changes there, and can't yet say where the fix should be.)





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

* bug#71525: 30.0.50; Spin in delete-region/interval_deletion_adjustment Spin in delete-region/interval_deletion_adjustment)
  2024-06-13 19:18           ` Jim Porter
@ 2024-06-13 19:42             ` Steven Allen via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 0 replies; 19+ messages in thread
From: Steven Allen via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-06-13 19:42 UTC (permalink / raw)
  To: Jim Porter, Eli Zaretskii; +Cc: 71525


Jim Porter <jporterbugs@gmail.com> writes:
> It sounds like we've found the culprit, but I am tracking this and can
> help fix/update Eshell if that's the way we decide to go. (I haven't
> read through all of bug#66020 yet so I don't fully understand all of the
> changes there, and can't yet say where the fix should be.)

From what I can tell, it's not Eshell, just triggered by Eshell. It
appears that Emacs locks up _inside_ the C code and never leaves (not
even `C-g` works).

I believe I reproduced this once with `jinx` calling
`next-single-char-property-change` in a non-eshell buffer. At the very
least, it locked up in the same way (right after I tried to delete a
buffer). But I'm not sure how that would have interacted with the
process output code.





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

* bug#71525: 30.0.50; Spin in delete-region/interval_deletion_adjustment Spin in delete-region/interval_deletion_adjustment)
  2024-06-13 16:31               ` Eli Zaretskii
@ 2024-06-13 21:47                 ` Dmitry Gutov
  2024-06-13 23:41                   ` Dmitry Gutov
  0 siblings, 1 reply; 19+ messages in thread
From: Dmitry Gutov @ 2024-06-13 21:47 UTC (permalink / raw)
  To: Eli Zaretskii, Steven Allen; +Cc: jporterbugs, 71525

On 13/06/2024 19:31, Eli Zaretskii wrote:
>> From: Steven Allen<steven@stebalien.com>
>> Cc:71525@debbugs.gnu.org
>> Date: Thu, 13 Jun 2024 09:06:07 -0700
>>
>>
>> Steven Allen<steven@stebalien.com>  writes:
>>> Eli Zaretskii<eliz@gnu.org>  writes:
>>>> I see a couple of Eshell-related changes, but no obvious suspects.
>>>>
>>>> Can someone please reproduce this and post a detailed backtrace,
>>>> including Lisp backtrace?  Jim, are you looking into this?
>>> It's hanging in the C code, not lisp. I believe the issue is:
>>>
>>> https://lists.gnu.org/archive/html/emacs-devel/2024-06/msg00241.html
>>>
>>> So I'm trying that patch now.
>>>
>>> If that doesn't work, I'll produce a backtrace sometime later today.
>> I can confirm that the linked patch fixes the issue. Would you still
>> like me to produce a backtrace?
> No need, thanks.  That issue is already on someone's table.

I think I see it now.

The thing is, decode_coding_c_string already calls 
adjust_markers_for_insert through

   decode_coding_object->decode_coding->produce_chars->insert_from_gap

And the extra call moves the markers too far.

Unfortunately, it's called with BEFORE_MARKERS=nil, and the above call 
chain makes it difficult to pass through the extra argument.

Perhaps we should do this?

diff --git a/src/process.c b/src/process.c
index eb526311c53..3c6cbe9b188 100644
--- a/src/process.c
+++ b/src/process.c
@@ -6423,9 +6423,17 @@ read_and_insert_process_output (struct 
Lisp_Process *p, char *buf,
        specbind (Qinhibit_modification_hooks, Qt);
        decode_coding_c_string (process_coding,
  			      (unsigned char *) buf, nread, curbuf);
-      adjust_markers_for_insert (PT, PT_BYTE,
-				 PT + process_coding->produced_char,
-				 PT_BYTE + process_coding->produced, true);
+      /* The previous call adjusts the markers, except for those
+	exactly at PT (it inserts with BEFORE_MARKERS=nil). */
+      struct Lisp_Marker *m;
+      for (m = BUF_MARKERS (current_buffer); m; m = m->next)
+	{
+	  if (m->bytepos == PT_BYTE)
+	    {
+	      m->bytepos = PT_BYTE + process_coding->produced;
+	      m->charpos = PT + process_coding->produced_char;
+	    }
+	}
        unbind_to (count1, Qnil);

        read_process_output_set_last_coding_system (p, process_coding);


That doesn't adjust the overlays, however (the 
adjust_overlays_for_insert call inside adjust_markers_for_insert). And 
doing the same trick with them seems more difficult.





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

* bug#71525: 30.0.50; Spin in delete-region/interval_deletion_adjustment Spin in delete-region/interval_deletion_adjustment)
  2024-06-13 21:47                 ` Dmitry Gutov
@ 2024-06-13 23:41                   ` Dmitry Gutov
  2024-06-14  7:13                     ` Eli Zaretskii
  0 siblings, 1 reply; 19+ messages in thread
From: Dmitry Gutov @ 2024-06-13 23:41 UTC (permalink / raw)
  To: Eli Zaretskii, Steven Allen; +Cc: jporterbugs, 71525

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

On 14/06/2024 00:47, Dmitry Gutov wrote:
> The thing is, decode_coding_c_string already calls 
> adjust_markers_for_insert through
> 
>    decode_coding_object->decode_coding->produce_chars->insert_from_gap
> 
> And the extra call moves the markers too far.
> 
> Unfortunately, it's called with BEFORE_MARKERS=nil, and the above call 
> chain makes it difficult to pass through the extra argument.

We can do it through the coding_system structure, though.

See attached. It fixes the freezes in my testing.

It seems like the least invasive possible fix, but better suggestions 
welcome.

[-- Attachment #2: dst_before_markers.diff --]
[-- Type: text/x-patch, Size: 6084 bytes --]

diff --git a/src/coding.c b/src/coding.c
index 5e4e92ea6e2..138aaa22e6a 100644
--- a/src/coding.c
+++ b/src/coding.c
@@ -5698,6 +5698,7 @@ setup_coding_system (Lisp_Object coding_system, struct coding_system *coding)
   coding->default_char = XFIXNUM (CODING_ATTR_DEFAULT_CHAR (attrs));
   coding->carryover_bytes = 0;
   coding->raw_destination = 0;
+  coding->dst_before_markers = 0;
 
   coding_type = CODING_ATTR_TYPE (attrs);
   if (EQ (coding_type, Qundecided))
@@ -7209,7 +7210,7 @@ produce_chars (struct coding_system *coding, Lisp_Object translation_table,
 
   produced = dst - (coding->destination + coding->produced);
   if (BUFFERP (coding->dst_object) && produced_chars > 0)
-    insert_from_gap (produced_chars, produced, 0);
+    insert_from_gap (produced_chars, produced, 0, coding->dst_before_markers);
   coding->produced += produced;
   coding->produced_char += produced_chars;
   return carryover;
@@ -7814,7 +7815,7 @@ encode_coding (struct coding_system *coding)
   } while (coding->consumed_char < coding->src_chars);
 
   if (BUFFERP (coding->dst_object) && coding->produced_char > 0)
-    insert_from_gap (coding->produced_char, coding->produced, 0);
+    insert_from_gap (coding->produced_char, coding->produced, 0, coding->dst_before_markers);
 
   SAFE_FREE ();
 }
@@ -8008,7 +8009,7 @@ decode_coding_gap (struct coding_system *coding, ptrdiff_t bytes)
 	    }
 	  coding->produced = bytes;
 	  coding->produced_char = chars;
-	  insert_from_gap (chars, bytes, 1);
+	  insert_from_gap (chars, bytes, 1, coding->dst_before_markers);
 	  return;
 	}
     }
@@ -9980,7 +9981,7 @@ encode_string_utf_8 (Lisp_Object string, Lisp_Object buffer,
       struct buffer *oldb = current_buffer;
 
       current_buffer = XBUFFER (buffer);
-      insert_from_gap (outbytes, outbytes, false);
+      insert_from_gap (outbytes, outbytes, false, false);
       current_buffer = oldb;
     }
   return val;
@@ -10290,7 +10291,7 @@ #define UTF_8_SEQUENCE_LENGTH(c)	\
       struct buffer *oldb = current_buffer;
 
       current_buffer = XBUFFER (buffer);
-      insert_from_gap (outchars, outbytes, false);
+      insert_from_gap (outchars, outbytes, false, false);
       current_buffer = oldb;
     }
   return val;
diff --git a/src/coding.h b/src/coding.h
index 8905e36838d..2e031d8cc55 100644
--- a/src/coding.h
+++ b/src/coding.h
@@ -428,6 +428,9 @@ #define CODING_MODE_SAFE_ENCODING		0x10
   /* Set to true if charbuf contains an annotation.  */
   bool_bf annotated : 1;
 
+  /* True to insert before markers in the DST_OBJECT buffer.  */
+  bool_bf dst_before_markers : 1;
+
   /* Used internally in coding.c.  See the comment of detect_ascii.  */
   unsigned eol_seen : 3;
 
diff --git a/src/decompress.c b/src/decompress.c
index fcdbb40fc90..6c342e54355 100644
--- a/src/decompress.c
+++ b/src/decompress.c
@@ -310,7 +310,7 @@ DEFUN ("zlib-decompress-region", Fzlib_decompress_region,
       inflate_status = inflate (&stream, Z_NO_FLUSH);
       pos_byte += avail_in - stream.avail_in;
       decompressed = avail_out - stream.avail_out;
-      insert_from_gap (decompressed, decompressed, 0);
+      insert_from_gap (decompressed, decompressed, 0, false);
       unwind_data.nbytes += decompressed;
       maybe_quit ();
     }
diff --git a/src/insdel.c b/src/insdel.c
index fbf71e1e595..8f8e7b7d71d 100644
--- a/src/insdel.c
+++ b/src/insdel.c
@@ -1129,10 +1129,12 @@ insert_from_gap_1 (ptrdiff_t nchars, ptrdiff_t nbytes, bool text_at_gap_tail)
 
 /* Insert a sequence of NCHARS chars which occupy NBYTES bytes
    starting at GAP_END_ADDR - NBYTES (if text_at_gap_tail) and at
-   GPT_ADDR (if not text_at_gap_tail).  */
+   GPT_ADDR (if not text_at_gap_tail).
+
+  If BEFORE_MARKERS is true, insert before markers. */
 
 void
-insert_from_gap (ptrdiff_t nchars, ptrdiff_t nbytes, bool text_at_gap_tail)
+insert_from_gap (ptrdiff_t nchars, ptrdiff_t nbytes, bool text_at_gap_tail, bool before_markers)
 {
   ptrdiff_t ins_charpos = GPT, ins_bytepos = GPT_BYTE;
 
@@ -1151,7 +1153,7 @@ insert_from_gap (ptrdiff_t nchars, ptrdiff_t nbytes, bool text_at_gap_tail)
   insert_from_gap_1 (nchars, nbytes, text_at_gap_tail);
 
   adjust_markers_for_insert (ins_charpos, ins_bytepos,
-			     ins_charpos + nchars, ins_bytepos + nbytes, false);
+			     ins_charpos + nchars, ins_bytepos + nbytes, before_markers);
 
   if (buffer_intervals (current_buffer))
     {
diff --git a/src/lisp.h b/src/lisp.h
index 21dada59132..2c3c4e0ba87 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -4372,7 +4372,8 @@ verify (FLT_RADIX == 2 || FLT_RADIX == 16);
 extern void insert_1_both (const char *, ptrdiff_t, ptrdiff_t,
 			   bool, bool, bool);
 extern void insert_from_gap_1 (ptrdiff_t, ptrdiff_t, bool text_at_gap_tail);
-extern void insert_from_gap (ptrdiff_t, ptrdiff_t, bool text_at_gap_tail);
+extern void insert_from_gap (ptrdiff_t, ptrdiff_t, bool text_at_gap_tail,
+			     bool before_markers);
 extern void insert_from_string (Lisp_Object, ptrdiff_t, ptrdiff_t,
 				ptrdiff_t, ptrdiff_t, bool);
 extern void insert_from_buffer (struct buffer *, ptrdiff_t, ptrdiff_t, bool);
diff --git a/src/process.c b/src/process.c
index eb526311c53..7000b51775c 100644
--- a/src/process.c
+++ b/src/process.c
@@ -6415,6 +6415,7 @@ read_and_insert_process_output (struct Lisp_Process *p, char *buf,
       specpdl_ref count1 = SPECPDL_INDEX ();
 
       XSETBUFFER (curbuf, current_buffer);
+      process_coding->dst_before_markers = true;
       /* We cannot allow after-change-functions be run
 	 during decoding, because that might modify the
 	 buffer, while we rely on process_coding.produced to
@@ -6423,9 +6424,6 @@ read_and_insert_process_output (struct Lisp_Process *p, char *buf,
       specbind (Qinhibit_modification_hooks, Qt);
       decode_coding_c_string (process_coding,
 			      (unsigned char *) buf, nread, curbuf);
-      adjust_markers_for_insert (PT, PT_BYTE,
-				 PT + process_coding->produced_char,
-				 PT_BYTE + process_coding->produced, true);
       unbind_to (count1, Qnil);
 
       read_process_output_set_last_coding_system (p, process_coding);

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

* bug#71525: 30.0.50; Spin in delete-region/interval_deletion_adjustment Spin in delete-region/interval_deletion_adjustment)
  2024-06-13 23:41                   ` Dmitry Gutov
@ 2024-06-14  7:13                     ` Eli Zaretskii
  2024-06-14 16:51                       ` Dmitry Gutov
  2024-06-14 18:17                       ` Dmitry Gutov
  0 siblings, 2 replies; 19+ messages in thread
From: Eli Zaretskii @ 2024-06-14  7:13 UTC (permalink / raw)
  To: Dmitry Gutov; +Cc: jporterbugs, steven, 71525

> Date: Fri, 14 Jun 2024 02:41:15 +0300
> From: Dmitry Gutov <dmitry@gutov.dev>
> Cc: jporterbugs@gmail.com, 71525@debbugs.gnu.org
> 
> On 14/06/2024 00:47, Dmitry Gutov wrote:
> > The thing is, decode_coding_c_string already calls 
> > adjust_markers_for_insert through
> > 
> >    decode_coding_object->decode_coding->produce_chars->insert_from_gap
> > 
> > And the extra call moves the markers too far.
> > 
> > Unfortunately, it's called with BEFORE_MARKERS=nil, and the above call 
> > chain makes it difficult to pass through the extra argument.
> 
> We can do it through the coding_system structure, though.
> 
> See attached. It fixes the freezes in my testing.
> 
> It seems like the least invasive possible fix, but better suggestions 
> welcome.

This is the correct approach, IMO.  But see some minor comments below.

> @@ -7814,7 +7815,7 @@ encode_coding (struct coding_system *coding)
>    } while (coding->consumed_char < coding->src_chars);
>  
>    if (BUFFERP (coding->dst_object) && coding->produced_char > 0)
> -    insert_from_gap (coding->produced_char, coding->produced, 0);
> +    insert_from_gap (coding->produced_char, coding->produced, 0, coding->dst_before_markers);

Here (and elsewhere in the patch) too-long lines should be broken in
two.

> +  /* True to insert before markers in the DST_OBJECT buffer.  */
> +  bool_bf dst_before_markers : 1;

I'd call this 'insert_before_markers' instead.  Please also add a
detailed comment here explaining what this flag is for and where and
why used.

>  /* Insert a sequence of NCHARS chars which occupy NBYTES bytes
>     starting at GAP_END_ADDR - NBYTES (if text_at_gap_tail) and at
> -   GPT_ADDR (if not text_at_gap_tail).  */
> +   GPT_ADDR (if not text_at_gap_tail).
> +
> +  If BEFORE_MARKERS is true, insert before markers. */

This commentary should also mention process.c as the single caller
using this facility in unconventional ways.

>  extern void insert_from_gap_1 (ptrdiff_t, ptrdiff_t, bool text_at_gap_tail);
> -extern void insert_from_gap (ptrdiff_t, ptrdiff_t, bool text_at_gap_tail);
> +extern void insert_from_gap (ptrdiff_t, ptrdiff_t, bool text_at_gap_tail,
> +			     bool before_markers);

We don't have names of arguments in prototypes, only their types.
(Yes, it means the original prototype, and the ones around it, were
also wrong.)

> --- a/src/process.c
> +++ b/src/process.c
> @@ -6415,6 +6415,7 @@ read_and_insert_process_output (struct Lisp_Process *p, char *buf,
>        specpdl_ref count1 = SPECPDL_INDEX ();
>  
>        XSETBUFFER (curbuf, current_buffer);
> +      process_coding->dst_before_markers = true;

Please also add a comment here explaining why this is done.

Thanks.





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

* bug#71525: 30.0.50; Spin in delete-region/interval_deletion_adjustment Spin in delete-region/interval_deletion_adjustment)
  2024-06-14  7:13                     ` Eli Zaretskii
@ 2024-06-14 16:51                       ` Dmitry Gutov
  2024-06-14 18:14                         ` Steven Allen via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2024-06-14 18:17                       ` Dmitry Gutov
  1 sibling, 1 reply; 19+ messages in thread
From: Dmitry Gutov @ 2024-06-14 16:51 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: jporterbugs, steven, 71525

On 14/06/2024 10:13, Eli Zaretskii wrote:
> This is the correct approach, IMO.  But see some minor comments below.
> 
>> @@ -7814,7 +7815,7 @@ encode_coding (struct coding_system *coding)
>>     } while (coding->consumed_char < coding->src_chars);
>>   
>>     if (BUFFERP (coding->dst_object) && coding->produced_char > 0)
>> -    insert_from_gap (coding->produced_char, coding->produced, 0);
>> +    insert_from_gap (coding->produced_char, coding->produced, 0, coding->dst_before_markers);
> Here (and elsewhere in the patch) too-long lines should be broken in
> two.
> 
>> +  /* True to insert before markers in the DST_OBJECT buffer.  */
>> +  bool_bf dst_before_markers : 1;
> I'd call this 'insert_before_markers' instead.  Please also add a
> detailed comment here explaining what this flag is for and where and
> why used.
> 
>>   /* Insert a sequence of NCHARS chars which occupy NBYTES bytes
>>      starting at GAP_END_ADDR - NBYTES (if text_at_gap_tail) and at
>> -   GPT_ADDR (if not text_at_gap_tail).  */
>> +   GPT_ADDR (if not text_at_gap_tail).
>> +
>> +  If BEFORE_MARKERS is true, insert before markers. */
> This commentary should also mention process.c as the single caller
> using this facility in unconventional ways.
> 
>>   extern void insert_from_gap_1 (ptrdiff_t, ptrdiff_t, bool text_at_gap_tail);
>> -extern void insert_from_gap (ptrdiff_t, ptrdiff_t, bool text_at_gap_tail);
>> +extern void insert_from_gap (ptrdiff_t, ptrdiff_t, bool text_at_gap_tail,
>> +			     bool before_markers);
> We don't have names of arguments in prototypes, only their types.
> (Yes, it means the original prototype, and the ones around it, were
> also wrong.)
> 
>> --- a/src/process.c
>> +++ b/src/process.c
>> @@ -6415,6 +6415,7 @@ read_and_insert_process_output (struct Lisp_Process *p, char *buf,
>>         specpdl_ref count1 = SPECPDL_INDEX ();
>>   
>>         XSETBUFFER (curbuf, current_buffer);
>> +      process_coding->dst_before_markers = true;
> Please also add a comment here explaining why this is done.

Thanks! I've pushed the amended patch to master, please see how you like 
the result.





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

* bug#71525: 30.0.50; Spin in delete-region/interval_deletion_adjustment Spin in delete-region/interval_deletion_adjustment)
  2024-06-14 16:51                       ` Dmitry Gutov
@ 2024-06-14 18:14                         ` Steven Allen via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 0 replies; 19+ messages in thread
From: Steven Allen via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-06-14 18:14 UTC (permalink / raw)
  To: Dmitry Gutov, Eli Zaretskii; +Cc: jporterbugs, 71525


Dmitry Gutov <dmitry@gutov.dev> writes:
> Thanks! I've pushed the amended patch to master, please see how you like 
> the result.

I can't comment on the patch but I can confirm that it fixes the bug
(or, at least, the one I observed).





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

* bug#71525: 30.0.50; Spin in delete-region/interval_deletion_adjustment Spin in delete-region/interval_deletion_adjustment)
  2024-06-14  7:13                     ` Eli Zaretskii
  2024-06-14 16:51                       ` Dmitry Gutov
@ 2024-06-14 18:17                       ` Dmitry Gutov
  2024-06-14 18:46                         ` Eli Zaretskii
  1 sibling, 1 reply; 19+ messages in thread
From: Dmitry Gutov @ 2024-06-14 18:17 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: jporterbugs, steven, 71525

On 14/06/2024 10:13, Eli Zaretskii wrote:
>>   /* Insert a sequence of NCHARS chars which occupy NBYTES bytes
>>      starting at GAP_END_ADDR - NBYTES (if text_at_gap_tail) and at
>> -   GPT_ADDR (if not text_at_gap_tail).  */
>> +   GPT_ADDR (if not text_at_gap_tail).
>> +
>> +  If BEFORE_MARKERS is true, insert before markers. */
> This commentary should also mention process.c as the single caller
> using this facility in unconventional ways.

Also note that I did make some effort to make the field 
coding->insert_before_markers used consistently: in the changeset, it's 
not just obeyed on the code path that decode_coding_c_string goes 
through - it's used anywhere where insert_from_gap is called and a 
coding_system structure is available - e.g. in encode_coding.

Also in decode_coding_gap, but that one seems to only have one caller 
(insert-file-contents), so that choice is moot.

Something else I've noticed (a bit off topic): insert_from_gap_1's 
comments says that it "does not invalidate any cache, nor update any 
markers, nor record any buffer modification information of any sort", 
but then it calls treesit_record_change when available. Not sure we need 
to change that, but maybe we should update the comment, at least.





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

* bug#71525: 30.0.50; Spin in delete-region/interval_deletion_adjustment Spin in delete-region/interval_deletion_adjustment)
  2024-06-14 18:17                       ` Dmitry Gutov
@ 2024-06-14 18:46                         ` Eli Zaretskii
  2024-06-14 19:13                           ` Dmitry Gutov
  0 siblings, 1 reply; 19+ messages in thread
From: Eli Zaretskii @ 2024-06-14 18:46 UTC (permalink / raw)
  To: Dmitry Gutov; +Cc: jporterbugs, 71525-done, steven

> Date: Fri, 14 Jun 2024 21:17:22 +0300
> Cc: steven@stebalien.com, jporterbugs@gmail.com, 71525@debbugs.gnu.org
> From: Dmitry Gutov <dmitry@gutov.dev>
> 
> On 14/06/2024 10:13, Eli Zaretskii wrote:
> >>   /* Insert a sequence of NCHARS chars which occupy NBYTES bytes
> >>      starting at GAP_END_ADDR - NBYTES (if text_at_gap_tail) and at
> >> -   GPT_ADDR (if not text_at_gap_tail).  */
> >> +   GPT_ADDR (if not text_at_gap_tail).
> >> +
> >> +  If BEFORE_MARKERS is true, insert before markers. */
> > This commentary should also mention process.c as the single caller
> > using this facility in unconventional ways.
> 
> Also note that I did make some effort to make the field 
> coding->insert_before_markers used consistently: in the changeset, it's 
> not just obeyed on the code path that decode_coding_c_string goes 
> through - it's used anywhere where insert_from_gap is called and a 
> coding_system structure is available - e.g. in encode_coding.
> 
> Also in decode_coding_gap, but that one seems to only have one caller 
> (insert-file-contents), so that choice is moot.
> 
> Something else I've noticed (a bit off topic): insert_from_gap_1's 
> comments says that it "does not invalidate any cache, nor update any 
> markers, nor record any buffer modification information of any sort", 
> but then it calls treesit_record_change when available. Not sure we need 
> to change that, but maybe we should update the comment, at least.

Thanks, done.

I think we can now close this bug.





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

* bug#71525: 30.0.50; Spin in delete-region/interval_deletion_adjustment Spin in delete-region/interval_deletion_adjustment)
  2024-06-14 18:46                         ` Eli Zaretskii
@ 2024-06-14 19:13                           ` Dmitry Gutov
  0 siblings, 0 replies; 19+ messages in thread
From: Dmitry Gutov @ 2024-06-14 19:13 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: jporterbugs, 71525-done, steven

On 14/06/2024 21:46, Eli Zaretskii wrote:
>> Date: Fri, 14 Jun 2024 21:17:22 +0300
>> Cc:steven@stebalien.com,jporterbugs@gmail.com,71525@debbugs.gnu.org
>> From: Dmitry Gutov<dmitry@gutov.dev>
>>
>> On 14/06/2024 10:13, Eli Zaretskii wrote:
>>>>    /* Insert a sequence of NCHARS chars which occupy NBYTES bytes
>>>>       starting at GAP_END_ADDR - NBYTES (if text_at_gap_tail) and at
>>>> -   GPT_ADDR (if not text_at_gap_tail).  */
>>>> +   GPT_ADDR (if not text_at_gap_tail).
>>>> +
>>>> +  If BEFORE_MARKERS is true, insert before markers. */
>>> This commentary should also mention process.c as the single caller
>>> using this facility in unconventional ways.
>> Also note that I did make some effort to make the field
>> coding->insert_before_markers used consistently: in the changeset, it's
>> not just obeyed on the code path that decode_coding_c_string goes
>> through - it's used anywhere where insert_from_gap is called and a
>> coding_system structure is available - e.g. in encode_coding.
>>
>> Also in decode_coding_gap, but that one seems to only have one caller
>> (insert-file-contents), so that choice is moot.
>>
>> Something else I've noticed (a bit off topic): insert_from_gap_1's
>> comments says that it "does not invalidate any cache, nor update any
>> markers, nor record any buffer modification information of any sort",
>> but then it calls treesit_record_change when available. Not sure we need
>> to change that, but maybe we should update the comment, at least.
> Thanks, done.
> 
> I think we can now close this bug.

Thanks everyone! I think we've now crash-debugged every new code path. ;-)





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

end of thread, other threads:[~2024-06-14 19:13 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-06-12 19:20 bug#71525: 30.0.50; Spin in delete-region/interval_deletion_adjustment Steven Allen via Bug reports for GNU Emacs, the Swiss army knife of text editors
     [not found] ` <handler.71525.B.171822007123849.ack@debbugs.gnu.org>
2024-06-13  5:14   ` bug#71525: Acknowledgement (30.0.50; Spin in delete-region/interval_deletion_adjustment) Steven Allen via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-06-13  5:52     ` bug#71525: 30.0.50; Spin in delete-region/interval_deletion_adjustment " Eli Zaretskii
2024-06-13 15:32       ` Steven Allen via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-06-13 15:52         ` Eli Zaretskii
2024-06-13 16:00           ` Steven Allen via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-06-13 16:06             ` Steven Allen via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-06-13 16:31               ` Eli Zaretskii
2024-06-13 21:47                 ` Dmitry Gutov
2024-06-13 23:41                   ` Dmitry Gutov
2024-06-14  7:13                     ` Eli Zaretskii
2024-06-14 16:51                       ` Dmitry Gutov
2024-06-14 18:14                         ` Steven Allen via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-06-14 18:17                       ` Dmitry Gutov
2024-06-14 18:46                         ` Eli Zaretskii
2024-06-14 19:13                           ` Dmitry Gutov
2024-06-13 19:18           ` Jim Porter
2024-06-13 19:42             ` Steven Allen via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-06-13  5:49 ` bug#71525: 30.0.50; Spin in delete-region/interval_deletion_adjustment Eli Zaretskii

Code repositories for project(s) associated with this external index

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

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.