getsolus / packages

Solus Package Monorepo & Issue Tracker
62 stars 78 forks source link

emacs+tramp: consistently running into error "Forbidden reentrant call of Tramp" #2075

Open mark-nicholson opened 5 months ago

mark-nicholson commented 5 months ago

Please confirm there isn't an existing open bug report

Summary

emacs 29x started displaying this issue. It was less problematic in 29.1, it got worse in 29.2 and now 29.3 makes tramp unusable.

Steps to reproduce

  1. start emacs
  2. open a file using: /ssh:user@server/path/to/any/file
  3. in the same window, run C-x C-f and hit tab to try to list out any further files in that directory. The window hangs

Expected result

In previous versions (for years) I have been able to open many remote files using ssh-tramp in emacs and have tramp sessions run for days without fault.

Actual result

The tramp utility wedges and locks-up emacs.

Environment

Repo

Shannon (stable)

Desktop Environment

Budgie

System details

System: Host: milliways Kernel: 6.6.22-281.current arch: x86_64 bits: 64 Desktop: Budgie v: 10.9.1 Distro: Solus 4.5 resilience Machine: Type: Laptop System: Dynabook product: PORTEGE X40-J v: PPH13U-061002E1 serial: Z1057589H Mobo: Dynabook model: A010D/0000 v: Version A0 serial: C0467619F01YV0FH UEFI: Dynabook v: Version 6.30 date: 10/18/2021 Battery: ID-1: BAT1 charge: 52.2 Wh (100.0%) condition: 52.2/53.1 Wh (98.3%) CPU: Info: quad core 11th Gen Intel Core i7-1185G7 [MT MCP] speed (MHz): avg: 782 min/max: 400/4800 Graphics: Device-1: Intel TigerLake-LP GT2 [Iris Xe Graphics] driver: i915 v: kernel Device-2: Chicony Web Camera - HD driver: uvcvideo type: USB Display: x11 server: X.Org v: 21.1.11 with: Xwayland v: 23.2.4 driver: X: loaded: modesetting unloaded: fbdev,vesa dri: iris gpu: i915 resolution: 1: 2560x1440~60Hz 2: 1920x1080~60Hz API: OpenGL v: 4.6 compat-v: 4.5 vendor: intel mesa v: 24.0.4 renderer: Mesa Intel Xe Graphics (TGL GT2) Network: Device-1: Intel Wi-Fi 6 AX201 driver: iwlwifi Device-2: Dynabook USB 10/100/1000 LAN driver: cdc_ether type: USB Drives: Local Storage: total: 476.94 GiB used: 220.24 GiB (46.2%) Info: Memory: total: 32 GiB note: est. available: 30.98 GiB used: 10.09 GiB (32.6%) igpu: 64 MiB Processes: 391 Uptime: 2d 16h 38m Shell: Sudo inxi: 3.3.33

Other comments

This site talks about the issue but the mitigation does not work. It appears that Solus has the latest tramp and emacs versions, but the issue is rampant.

nazar-stasiv commented 5 months ago

3. in the same window, run C-x C-f and hit tab to try to list out any further files in that directory. The window hangs

With C-x C-f, TAB I get in 29.3 minibuffer this message

[Complete, but not unique]

hitting TAB second time gets me completion buffer. Are you able to reproduce the issue with emacs -Q ?

mark-nicholson commented 5 months ago

I ran emacs again as you suggested and it, initially, worked much better. But in both the emacs and emacs -Q modes, I still ended up with a hung emacs window with:

"Remote file error: Forbidden reentrant call of Tramp"

And looking at ps it appears to be in some sort of infinite loop:

17222 mjnichol 20 0 899008 133952 57860 R 100.0 0.4 15:56.58 emacs

as the process is railed at 100% cpu usage.

As far as the way I used it, it ran well for about 24h, then failed. I think that when it hung was the first time I used the menu to switch buffers. I normally use the key-sequence to switch (or just click on the pane I want to go to).

After about 1 minute, it was able to recover (again, only by using the "Buffer" menu.

~Mark


From: nazar-stasiv @.***> Sent: April 7, 2024 01:29 To: getsolus/packages Cc: Mark Nicholson; Author Subject: Re: [getsolus/packages] emacs+tramp: consistently running into error "Forbidden reentrant call of Tramp" (Issue #2075)

  1. in the same window, run C-x C-f and hit tab to try to list out any further files in that directory. The window hangs

With C-x C-f, TAB I get in 29.3 minibuffer this message

[Complete, but not unique]

hitting TAB second time gets me completion buffer. Are you able to reproduce the issue with emacs -Q ?

— Reply to this email directly, view it on GitHubhttps://urldefense.com/v3/__https://github.com/getsolus/packages/issues/2075*issuecomment-2041366828__;Iw!!ACWV5N9M2RV99hQ!LxDZUXyoiNPvljBi2aoPZgd1KGIcCQonKTTPh-CJZyKCrgw9xaWYc-NLIKLajp091nSdHwOsesBtIfZR59SuAH2yiPD5dA$, or unsubscribehttps://urldefense.com/v3/__https://github.com/notifications/unsubscribe-auth/ABMLZTALFWTY4NGXHGODWHTY4D7VZAVCNFSM6AAAAABFSAT7L2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDANBRGM3DMOBSHA__;!!ACWV5N9M2RV99hQ!LxDZUXyoiNPvljBi2aoPZgd1KGIcCQonKTTPh-CJZyKCrgw9xaWYc-NLIKLajp091nSdHwOsesBtIfZR59SuAH2eb0Tygw$. You are receiving this because you authored the thread.Message ID: @.***>

nazar-stasiv commented 5 months ago

To help me identify the issue you will need to provide elisp error trace:

To display backtrace buffer, first enable it with M-x toggle-debug-on-error, then reproduce the issue. As backtrace buffer shows up, copy its contents here, thanks.

mark-nicholson commented 5 months ago

It took a while to finally get it to "catch" an error. ... seems that it has some sort of recovery methods, but it did finally fail:

Debugger entered--Lisp error: (file-error "‘tramp_stat_file_attributes /u01/mjnichol/masa/luc...") signal(file-error ("‘tramp_stat_file_attributes /u01/mjnichol/masa/luc...")) tramp-error((tramp-file-name "ssh" nil nil "myfb" nil "/u01/mjnichol/masa/luci/pyfajita/fajita/.#server.p..." nil) file-error "%s' returns with error" "tramp_stat_file_attributes /u01/mjnichol/masa/luci...") apply(tramp-error (tramp-file-name "ssh" nil nil "myfb" nil "/u01/mjnichol/masa/luci/pyfajita/fajita/.#server.p..." nil) file-error "%s' returns with error" "tramp_stat_file_attributes /u01/mjnichol/masa/luci...") tramp-barf-unless-okay((tramp-file-name "ssh" nil nil "myfb" nil "/u01/mjnichol/masa/luci/pyfajita/fajita/.#server.p..." nil) "tramp_stat_file_attributes /u01/mjnichol/masa/luci..." "`%s' returns with error" "tramp_stat_file_attributes /u01/mjnichol/masa/luci...") tramp-send-command-and-read((tramp-file-name "ssh" nil nil "myfb" nil "/u01/mjnichol/masa/luci/pyfajita/fajita/.#server.p..." nil) "tramp_stat_file_attributes /u01/mjnichol/masa/luci...") tramp-do-file-attributes-with-stat((tramp-file-name "ssh" nil nil "myfb" nil "/u01/mjnichol/masa/luci/pyfajita/fajita/.#server.p..." nil) "/u01/mjnichol/masa/luci/pyfajita/fajita/.#server.p...") tramp-sh-handle-file-attributes("/ssh:myfb:/u01/mjnichol/masa/luci/pyfajita/fajita/...") apply(tramp-sh-handle-file-attributes "/ssh:myfb:/u01/mjnichol/masa/luci/pyfajita/fajita/...") tramp-sh-file-name-handler(file-attributes "/ssh:myfb:/u01/mjnichol/masa/luci/pyfajita/fajita/...") apply(tramp-sh-file-name-handler file-attributes "/ssh:myfb:/u01/mjnichol/masa/luci/pyfajita/fajita/...") tramp-file-name-handler(file-attributes "/ssh:myfb:/u01/mjnichol/masa/luci/pyfajita/fajita/...") file-attributes("/ssh:myfb:/u01/mjnichol/masa/luci/pyfajita/fajita/...") tramp-handle-file-symlink-p("/ssh:myfb:/u01/mjnichol/masa/luci/pyfajita/fajita/...") apply(tramp-handle-file-symlink-p "/ssh:myfb:/u01/mjnichol/masa/luci/pyfajita/fajita/...") tramp-sh-file-name-handler(file-symlink-p "/ssh:myfb:/u01/mjnichol/masa/luci/pyfajita/fajita/...") apply(tramp-sh-file-name-handler file-symlink-p "/ssh:myfb:/u01/mjnichol/masa/luci/pyfajita/fajita/...") tramp-file-name-handler(file-symlink-p "/ssh:myfb:/u01/mjnichol/masa/luci/pyfajita/fajita/...") file-symlink-p("/ssh:myfb:/u01/mjnichol/masa/luci/pyfajita/fajita/...") tramp-get-lock-file("/ssh:myfb:/u01/mjnichol/masa/luci/pyfajita/fajita/...") tramp-handle-file-locked-p("/ssh:myfb:/u01/mjnichol/masa/luci/pyfajita/fajita/...") apply(tramp-handle-file-locked-p "/ssh:myfb:/u01/mjnichol/masa/luci/pyfajita/fajita/...") tramp-sh-file-name-handler(file-locked-p "/ssh:myfb:/u01/mjnichol/masa/luci/pyfajita/fajita/...") apply(tramp-sh-file-name-handler file-locked-p "/ssh:myfb:/u01/mjnichol/masa/luci/pyfajita/fajita/...") tramp-file-name-handler(file-locked-p "/ssh:myfb:/u01/mjnichol/masa/luci/pyfajita/fajita/...") file-locked-p("/ssh:myfb:/u01/mjnichol/masa/luci/pyfajita/fajita/...") tramp-handle-lock-file("/ssh:myfb:/u01/mjnichol/masa/luci/pyfajita/fajita/...") apply(tramp-handle-lock-file "/ssh:myfb:/u01/mjnichol/masa/luci/pyfajita/fajita/...") tramp-sh-file-name-handler(lock-file "/ssh:myfb:/u01/mjnichol/masa/luci/pyfajita/fajita/...") apply(tramp-sh-file-name-handler lock-file "/ssh:myfb:/u01/mjnichol/masa/luci/pyfajita/fajita/...") tramp-file-name-handler(lock-file "/ssh:myfb:/u01/mjnichol/masa/luci/pyfajita/fajita/...") delete-char(-1 nil) delete-backward-char(1 nil) funcall-interactively(delete-backward-char 1 nil) call-interactively(delete-backward-char nil nil) command-execute(delete-backward-char)


From: nazar-stasiv @.***> Sent: April 10, 2024 00:31 To: getsolus/packages Cc: Mark Nicholson; Author Subject: Re: [getsolus/packages] emacs+tramp: consistently running into error "Forbidden reentrant call of Tramp" (Issue #2075)

To help me identify the issue you will need to provide elisp error trace:

To display backtrace buffer, first enable it with M-x toggle-debug-on-error, then reproduce the issue. Copy content of backtrace buffer here. Thanks.

— Reply to this email directly, view it on GitHubhttps://urldefense.com/v3/__https://github.com/getsolus/packages/issues/2075*issuecomment-2046729281__;Iw!!ACWV5N9M2RV99hQ!J-ootXnhxlcRrb9l9qnhga5KbU4KRQc9YKMV0U8bl9_Ze6kX-P3yJpda-dZ3zl0_JjNqUGueNFYrmbB-vu5ABN71PXGJQw$, or unsubscribehttps://urldefense.com/v3/__https://github.com/notifications/unsubscribe-auth/ABMLZTCZCZQIHQVMGTOT3QDY4TTGHAVCNFSM6AAAAABFSAT7L2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDANBWG4ZDSMRYGE__;!!ACWV5N9M2RV99hQ!J-ootXnhxlcRrb9l9qnhga5KbU4KRQc9YKMV0U8bl9_Ze6kX-P3yJpda-dZ3zl0_JjNqUGueNFYrmbB-vu5ABN6aVxwEAg$. You are receiving this because you authored the thread.Message ID: @.***>

nazar-stasiv commented 5 months ago

It took a while to finally get it to "catch" an error. ... seems that it has some sort of recovery methods, but it did finally fail:

No rush on my side, take as much time as needed.

Even though I could make tramp "bark" (reference to funcall that raises an error), steps I took to do so were completely different to those provided. And without a chance to reproduce the issue I looked elsewhere for hints.

There is dated discussion from Feb 2020. Does that bug report describes issue exactly how you have experienced it?