GNU bug report logs - #75304
29.4; sshfs fails to mount when run by eshell and -f isn't passed

Previous Next

Package: emacs;

Reported by: Richard Sent <richard <at> freakingpenguin.com>

Date: Thu, 2 Jan 2025 21:44:01 UTC

Severity: normal

Merged with 56013

Found in versions 28.1, 29.4

To reply to this bug, email your comments to 75304 AT debbugs.gnu.org.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#75304; Package emacs. (Thu, 02 Jan 2025 21:44:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Richard Sent <richard <at> freakingpenguin.com>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Thu, 02 Jan 2025 21:44:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Richard Sent <richard <at> freakingpenguin.com>
To: bug-gnu-emacs <at> gnu.org
Subject: 29.4; sshfs fails to mount when run by eshell and -f isn't passed
Date: Thu, 02 Jan 2025 16:37:37 -0500
Hi all,

When sshfs is invoked by eshell and allowed to daemonize (default),
sshfs fails to mount the desired target directory. This seems to be
caused by a SIGTERM signal being sent after sshfs daemonizes and enters
the main fuse loop. (The return value of fuse_loop_mt is 15, which
matches the return value when the process actually receives SIGTERM.
Confirmed both by testing and documentation at [1].)

If I set process-connection-type to nil, sshfs works as expected. This
isn't ideal because it can cause breakage elsewhere (e.g. ripgrep).

This issue sounds similar to a previous one with xdg-open [2].
However, xdg-open's behavior seems to have been fixed in Emacs 29 ($
xdg-open file.txt works on my machine), while this bug is present on 29.

For what it's worth, the problem also occurs when sshfs is invoked by a
wrapper script and not eshell directly.

Tested in -Q.

[1]: https://libfuse.github.io/doxygen/fuse-3_810_84_2include_2fuse__lowlevel_8h.html#a5f1e538aa3287e251afbe985438c4249
[2]: https://lists.gnu.org/archive/html/bug-gnu-emacs/2022-11/msg01768.html


In GNU Emacs 29.4 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.41,
cairo version 1.18.0)
Windowing system distributor 'The X.Org Foundation', version 11.0.12101014
System Description: Guix System

Configured using:
 'configure
 CONFIG_SHELL=/gnu/store/6nqyia3ra10sgd1ppzk2047ncbzjwhff-bash-minimal-5.1.16/bin/bash
 SHELL=/gnu/store/6nqyia3ra10sgd1ppzk2047ncbzjwhff-bash-minimal-5.1.16/bin/bash
 --prefix=/gnu/store/qyny35x285i7pcfhysvlhcfznkrznjfc-emacs-29.4
 --enable-fast-install --with-cairo --with-modules
 --with-native-compilation=aot --disable-build-details'

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG
JSON LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT MODULES
NATIVE_COMP NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND SQLITE3
THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER X11 XDBE XIM XINPUT2 XPM
GTK3 ZLIB

Important settings:
  value of $EMACSLOADPATH: /home/richard/.guix-home/profile/share/emacs/site-lisp:/gnu/store/qyny35x285i7pcfhysvlhcfznkrznjfc-emacs-29.4/share/emacs/29.4/lisp
  value of $LANG: en_US.utf8
  locale-coding-system: utf-8-unix

Major mode: Eshell

Minor modes in effect:
  erc-notifications-mode: t
  erc-list-mode: t
  erc-menu-mode: t
  erc-autojoin-mode: t
  erc-ring-mode: t
  erc-pcomplete-mode: t
  erc-track-mode: t
  erc-track-minor-mode: t
  erc-match-mode: t
  erc-button-mode: t
  erc-fill-mode: t
  erc-stamp-mode: t
  erc-netsplit-mode: t
  erc-services-mode: t
  erc-irccontrols-mode: t
  erc-noncommands-mode: t
  erc-move-to-prompt-mode: t
  erc-readonly-mode: t
  erc-networks-mode: t
  emms-mode-line-mode: t
  emms-playing-time-display-mode: t
  emms-playing-time-mode: t
  eshell-syntax-highlighting-global-mode: t
  eshell-syntax-highlighting-mode: t
  eshell-prompt-mode: t
  eshell-hist-mode: t
  eshell-pred-mode: t
  eshell-cmpl-mode: t
  all-the-icons-completion-mode: t
  which-key-mode: t
  display-time-mode: t
  global-git-commit-mode: t
  magit-auto-revert-mode: t
  eshell-proc-mode: t
  eshell-arg-mode: t
  eat-eshell-mode: t
  eat--eshell-local-mode: t
  electric-pair-mode: t
  server-mode: t
  global-auto-revert-mode: t
  delete-selection-mode: t
  display-battery-mode: t
  corfu-popupinfo-mode: t
  global-corfu-mode: t
  corfu-mode: t
  savehist-mode: t
  marginalia-mode: t
  vertico-mode: t
  override-global-mode: t
  shell-dirtrack-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tab-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: 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:
/gnu/store/zjb0j6cfjrp5qwp40yyz6jg1ch2dmcqm-emacs-transient-0.8.1/share/emacs/site-lisp/transient-0.8.1/transient hides /gnu/store/qyny35x285i7pcfhysvlhcfznkrznjfc-emacs-29.4/share/emacs/29.4/lisp/transient
/gnu/store/8pr1yy7pcai1g1r52c2xcha58nmbi32a-emacs-soap-client-3.2.3/share/emacs/site-lisp/soap-client-3.2.3/soap-inspect hides /gnu/store/qyny35x285i7pcfhysvlhcfznkrznjfc-emacs-29.4/share/emacs/29.4/lisp/net/soap-inspect
/gnu/store/8pr1yy7pcai1g1r52c2xcha58nmbi32a-emacs-soap-client-3.2.3/share/emacs/site-lisp/soap-client-3.2.3/soap-client hides /gnu/store/qyny35x285i7pcfhysvlhcfznkrznjfc-emacs-29.4/share/emacs/29.4/lisp/net/soap-client

Features:
(shadow emacsbug pcmpl-unix gdb-mi gud mhtml-mode css-mode eww url-queue
shr pixel-fill kinsoku url-file mm-url js c-ts-common sgml-mode facemenu
rst macrostep-c cmacexp macrostep cc-mode cc-fonts cc-guess cc-menus
cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs find-dired cl-print
hippie-exp erc-desktop-notifications notifications tabify man ruby-mode
puni pulse erc-list erc-menu erc-join erc-ring erc-pcomplete erc-track
erc-match erc-button erc-fill erc-stamp erc-netsplit erc-services
erc-goodies erc erc-backend erc-networks erc-common erc-compat
erc-loaddefs consult-xref vc-git epa-file gnutls network-stream
mailalias textsec uni-scripts idna-mapping ucs-normalize uni-confusable
textsec-check mail-extr em-xtra display-line-numbers bluetooth-battery
misearch multi-isearch wdired shortdoc sh-script smie treesit executable
embark-org embark-consult embark ffap cape ace-window avy mule-util
consult magit-bookmark bookmark emms-idapi-browser emms-idapi
emms-idapi-musicbrainz emms-mpris emms-librefm-stream
emms-librefm-scrobbler emms-playlist-limit emms-i18n emms-history
emms-score emms-stream-info emms-metaplaylist-mode emms-bookmarks
emms-cue emms-mode-line-icon emms-browser sort emms-volume
emms-volume-sndioctl emms-volume-mixerctl emms-volume-pulse
emms-volume-amixer emms-playlist-sort emms-last-played emms-player-xine
emms-player-mpd emms-lyrics emms-url emms-streams emms-show-all
emms-tag-editor emms-tag-tracktag emms-mark emms-mode-line emms-cache
emms-info-native emms-info-native-spc emms-info-native-mp3
emms-info-native-ogg emms-info-native-opus emms-info-native-flac
emms-info-native-vorbis bindat emms-info-exiftool emms-info-tinytag
emms-info-metaflac emms-info-opusinfo emms-info-ogginfo
emms-info-mp3info emms-playlist-mode emms-player-vlc emms-player-mpv
emms-playing-time emms-info emms-later-do emms-player-mplayer
emms-player-simple emms-source-playlist emms-source-file locate
emms-setup emms emms-compat tramp-cmds tramp-cache time-stamp tramp-sh
eshell-syntax-highlighting em-unix em-term em-script em-prompt em-ls
em-hist em-pred em-glob em-extpipe em-cmpl em-dirs em-basic em-banner
em-alias em-tramp eshell cal-iso face-remap org-agenda org-element
org-persist xdg org-id avl-tree org-refile ob-plantuml org ob ob-tangle
ob-ref ob-lob ob-table ob-exp org-macro org-src ob-comint org-pcomplete
org-list org-footnote org-faces org-entities ob-emacs-lisp ob-core
ob-eval org-cycle org-table org-keys oc org-loaddefs cal-menu calendar
cal-loaddefs ol org-fold org-fold-core org-compat org-version org-macs
rainbow-delimiters hl-line rs-utils rs-ui all-the-icons-completion
all-the-icons all-the-icons-faces data-material data-weathericons
data-octicons data-fileicons data-faicons data-alltheicons which-key
doom-dracula-theme doom-themes doom-themes-base time rs-tools ediff
ediff-merg ediff-mult ediff-wind ediff-diff ediff-help ediff-init
ediff-util bluetooth bluetooth-plugin bluetooth-uuid bluetooth-pa
bluetooth-device bluetooth-lib let-alist daemons calc calc-loaddefs rect
calc-macs rs-smtp smtpmail rs-skeleton rs-navigation rs-media doc-view
jka-compr image-mode exif rs-magit magit-extras 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 package
url-handlers magit-repos magit-apply magit-wip magit-log which-func
magit-diff smerge-mode diff diff-mode git-commit log-edit pcvs-util
add-log magit-core magit-autorevert magit-margin magit-transient
magit-process with-editor magit-mode benchmark magit-git magit-base
magit-section cursor-sensor crm rs-integrations debbugs soap-client
url-http url-auth url-gw nsm rng-xsd rng-dt rng-util xsd-regexp
debbugs-compat rs-ide eglot external-completion array jsonrpc ert ewoc
debug backtrace flymake-proc flymake imenu rs-ibuffer rs-guix rs-project
rs-eshell diminish esh-var esh-mode esh-cmd esh-ext esh-opt esh-proc
esh-io esh-arg esh-module esh-groups esh-util eat term disp-table ehelp
use-package-diminish rs-erc rs-epg rs-elfeed rs-editing rg vc
vc-dispatcher rg-info-hack rg-menu rg-ibuffer rg-result wgrep-rg
rg-history rg-header ibuf-ext ibuffer ibuffer-loaddefs cus-edit wgrep
grep elec-pair ispell rs-dired ls-lisp dired-x dired-aux rs-core server
autorevert filenotify delsel comp comp-cstr warnings
exec-path-from-shell rs-constants battery dbus rs-completion kind-icon
svg-lib svg dom color corfu-popupinfo corfu orderless savehist
marginalia vertico rs-auth-source auth-source-pass rs-typescript rs-text
rs-scheme skeleton geiser-guile info-look info geiser geiser-debug
geiser-repl geiser-image geiser-capf geiser-doc geiser-menu
geiser-autodoc geiser-edit geiser-completion geiser-eval
geiser-connection tq geiser-syntax scheme geiser-impl help-fns
radix-tree geiser-log geiser-popup view geiser-custom geiser-base
rs-rust rs-ruby rs-python rs-org plantuml-mode xml use-package-bind-key
bind-key rs-elisp rs-docker docker docker-context docker-volume
docker-network docker-image docker-container docker-faces docker-core
docker-compose docker-process docker-utils tablist advice tablist-filter
semantic/wisent/comp semantic/wisent semantic/wisent/wisent
semantic/util-modes semantic/util semantic semantic/tag semantic/lex
semantic/fw mode-local find-func cedet tramp tramp-loaddefs trampver
tramp-integration files-x tramp-compat shell pcomplete parse-time
iso8601 docker-group transient pcase format-spec edmacro kmacro dash aio
s rs-csharp rs-cl slime easy-mmode apropos compile etags fileloop
generator xref project arc-mode archive-mode noutline outline icons pp
comint ansi-osc ansi-color ring hyperspec thingatpt browse-url url
url-proxy url-privacy url-expand url-methods url-history url-cookie
generate-lisp-file url-domsuf url-util url-parse auth-source eieio
eieio-core json map byte-opt url-vars rs-nnrss rs-gnus nnmail gnus-int
mail-source gnus-range message sendmail mailcap yank-media puny dired
dired-loaddefs rfc822 mml mml-sec password-cache epa derived epg rfc6068
epg-config mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047
rfc2045 ietf-drums mailabbrev gmm-utils mailheader gnus nnheader
gnus-util text-property-search time-date subr-x mail-utils range mm-util
mail-prsvr wid-edit cus-load no-littering compat compat-30 cl-macs gv
cl-extra help-mode cl-seq use-package-core cl-loaddefs cl-lib bytecomp
byte-compile markdown-mode-autoloads nhexl-mode-autoloads
lorem-ipsum-autoloads geiser-autoloads geiser-guile-autoloads
plantuml-mode-autoloads yaml-mode-autoloads
docker-compose-mode-autoloads dockerfile-mode-autoloads
json-snatcher-autoloads json-mode-autoloads rx js2-mode-autoloads
simple-httpd-autoloads skewer-mode-autoloads aio-autoloads
docker-autoloads web-mode-autoloads macrostep-autoloads slime-autoloads
which-key-autoloads moody-autoloads doom-themes-autoloads
shrink-path-autoloads nerd-icons-autoloads doom-modeline-autoloads
diminish-autoloads beacon-autoloads all-the-icons-completion-autoloads
memoize-autoloads all-the-icons-autoloads bluetooth-autoloads
password-store-autoloads pass-autoloads daemons-autoloads
embark-autoloads popup-autoloads f-autoloads dumb-jump-autoloads
avy-autoloads ace-window-autoloads emms-autoloads tablist-autoloads
pdf-tools-autoloads transient-autoloads dash-autoloads magit-autoloads
soap-client-autoloads debbugs-autoloads
eshell-syntax-highlighting-autoloads eat-autoloads elfeed-autoloads
s-autoloads rg-autoloads wgrep-autoloads rainbow-delimiters-autoloads
async-autoloads puni-autoloads dirvish-autoloads
exec-path-from-shell-autoloads no-littering-autoloads cape-autoloads
consult-autoloads marginalia-autoloads orderless-autoloads
vertico-autoloads svg-lib-autoloads kind-icon-autoloads compat-autoloads
corfu-autoloads guix-emacs 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 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 system-font-setting font-render-setting cairo
move-toolbar gtk x-toolkit xinput2 x multi-tty make-network-process
native-compile emacs)

Memory information:
((conses 16 1563370 217768)
 (symbols 48 56436 30)
 (strings 32 264488 14574)
 (string-bytes 1 12270036)
 (vectors 16 150527)
 (vector-slots 8 3129955 347518)
 (floats 8 1229 1043)
 (intervals 56 81675 8792)
 (buffers 984 107))

-- 
Take it easy,
Richard Sent
Making my computer weirder one commit at a time.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#75304; Package emacs. (Sat, 11 Jan 2025 11:16:01 GMT) Full text and rfc822 format available.

Message #8 received at 75304 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Richard Sent <richard <at> freakingpenguin.com>,
 Jim Porter <jporterbugs <at> gmail.com>
Cc: 75304 <at> debbugs.gnu.org
Subject: Re: bug#75304: 29.4;
 sshfs fails to mount when run by eshell and -f isn't passed
Date: Sat, 11 Jan 2025 13:14:58 +0200
> From: Richard Sent <richard <at> freakingpenguin.com>
> Date: Thu, 02 Jan 2025 16:37:37 -0500
> 
> Hi all,
> 
> When sshfs is invoked by eshell and allowed to daemonize (default),
> sshfs fails to mount the desired target directory. This seems to be
> caused by a SIGTERM signal being sent after sshfs daemonizes and enters
> the main fuse loop. (The return value of fuse_loop_mt is 15, which
> matches the return value when the process actually receives SIGTERM.
> Confirmed both by testing and documentation at [1].)
> 
> If I set process-connection-type to nil, sshfs works as expected. This
> isn't ideal because it can cause breakage elsewhere (e.g. ripgrep).
> 
> This issue sounds similar to a previous one with xdg-open [2].
> However, xdg-open's behavior seems to have been fixed in Emacs 29 ($
> xdg-open file.txt works on my machine), while this bug is present on 29.
> 
> For what it's worth, the problem also occurs when sshfs is invoked by a
> wrapper script and not eshell directly.
> 
> Tested in -Q.
> 
> [1]: https://libfuse.github.io/doxygen/fuse-3_810_84_2include_2fuse__lowlevel_8h.html#a5f1e538aa3287e251afbe985438c4249
> [2]: https://lists.gnu.org/archive/html/bug-gnu-emacs/2022-11/msg01768.html

Jim, did you see this report?  Any comments or suggestions?




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#75304; Package emacs. (Sat, 11 Jan 2025 19:33:02 GMT) Full text and rfc822 format available.

Message #11 received at 75304 <at> debbugs.gnu.org (full text, mbox):

From: Jim Porter <jporterbugs <at> gmail.com>
To: Richard Sent <richard <at> freakingpenguin.com>, 75304 <at> debbugs.gnu.org
Subject: Re: bug#75304: 29.4; sshfs fails to mount when run by eshell and -f
 isn't passed
Date: Sat, 11 Jan 2025 11:32:21 -0800
merge 56013 75304
thanks

On 1/2/2025 1:37 PM, Richard Sent wrote:
> If I set process-connection-type to nil, sshfs works as expected. This
> isn't ideal because it can cause breakage elsewhere (e.g. ripgrep).

If that's the case, then this is just bug#56013, which you linked to. 
That's not fixed yet, and there's not a great general solution for it 
(at least not one without extensive changes to process.c, which I'd 
rather avoid). A workaround in Eshell would be to change 
process-connection-type based on the program name, but in my tests that 
interacts badly with shell scripts, so would require a bit more work to 
support things like xdg-open.




Merged 56013 75304. Request was from Jim Porter <jporterbugs <at> gmail.com> to control <at> debbugs.gnu.org. (Sat, 11 Jan 2025 19:33:02 GMT) Full text and rfc822 format available.

This bug report was last modified 154 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.