Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

emacs: tramp: detect wrapped gvfsd-fuse daemon #53763

Merged
merged 1 commit into from
Feb 8, 2019

Conversation

liff
Copy link
Contributor

@liff liff commented Jan 10, 2019

Motivation for this change

Tramp checks for a running gvfsd-fuse process to figure out whether to enable gvfs-based. Its tramp-compat-process-running-p function uses /proc/<pid>/comm to check for the name of running process(es). In Nix, the gvfsd processes are launched via wrappers and the name of gvfsd-fuse in
comm in Linux is .gvfsd-fuse-wra (truncated to 15 characters) which means the process is not detected and tramp-gvfs-enabled ends up with nil even when gvfs is available.

This patch adds .gvfsd-fuse-wrapped to the list of process names to check when determining the value of tramp-gvfs-enabled.

Things done
  • Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS)
  • Built on platform(s)
    • NixOS
    • macOS
    • other Linux distributions
  • Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
  • Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
  • Tested execution of all binary files (usually in ./result/bin/)
  • Determined the impact on package closure size (by running nix path-info -S before and after)
  • Assured whether relevant documentation is up to date
  • Fits CONTRIBUTING.md.

Tramp checks for a running `gvfsd-fuse` process to figure out whether to enable
gvfs-based. Its `tramp-compat-process-running-p` function uses
`/proc/<pid>/comm` to check for the name of running process(es). In Nix, the
gvfsd processes are launched via wrappers and the name of `gvfsd-fuse` in
`comm` in Linux is `.gvfsd-fuse-wra` (truncated to 15 characters) which
means the process is not detected and `tramp-gvfs-enabled` ends up with
`nil` even when gvfs is available.

This patch adds `.gvfsd-fuse-wrapped` to the list of process names to check when
determining the value of `tramp-gvfs-enabled`.
@Mic92
Copy link
Member

Mic92 commented Jan 10, 2019

Would it help if we wrap gvfsd-fuse with --argv0 to gvfsd-fuse set when calling makeWrapper?

@liff
Copy link
Contributor Author

liff commented Jan 10, 2019

Oh, I’ll try that out. Thanks.

@liff
Copy link
Contributor Author

liff commented Jan 10, 2019

@Mic92 the wrapper already sets --argv0 (via wrapGAppsHook -> wrapProgram).

However, even if it didn’t it wouldn’t help because Tramp is specifically looking at the comm attribute, which comes from /proc/<pid>/comm which, as far as I can tell, could only be changed by the program that was execed.

@matthewbauer matthewbauer merged commit 9316105 into NixOS:master Feb 8, 2019
@liff liff deleted the emacs/tramp-process-fix branch May 19, 2022 19:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants