Subject: Re: bug#77402: 31.0.50; Tramp: file-writable-p broken

From: Gerd Möllmann <[email-masked]>
Date: Mon, 31 Mar 2025 11:34:21 +0200

Michael Albinus <[email-masked]> writes:

> Gerd Möllmann <[email-masked]> writes:
>
> Hi Gerd,
>
>> Soory, forgot to mention. Both are macOS 15.3.2 machines
>>
>> .../emacs/github/cl-packages % uname -a
>> Darwin pro2 24.3.0 Darwin Kernel Version 24.3.0: Thu Jan 2 20:24:16
>> PST 2025; root:xnu-11215.81.4~3/RELEASE_ARM64_T6000 arm64
>
> Hmm, I cannot reproduce the problem. Recipe:
>
> (make-directory "/ssh:ford:/tmp/yyy")
> => nil
>
> (make-symbolic-link "/tmp/yyy" "/ssh:ford:/tmp/xxx")
> => t
>
> (let ((default-directory "/ssh:ford:/tmp/"))
>   (shell-command-to-string "ls -al"))
> => "...
> lrwxrwxrwx   1 admin    administrators       8 2025-03-31 11:03 xxx -> /tmp/yyy
> drwxr-xr-x   2 admin    administrators      40 2025-03-31 11:02 yyy
> "
>
> (file-writable-p "/ssh:ford:/tmp/xxx")
> => t
>
> My local and the remote machine are running GNU/Linux.
>
> Could you, pls, send the whole Tramp debug buffer with tramp-verbose 6,
> after starting a new Emacs session?
>
> Best regards, Michael.

This is with master 1ed1cc83491311517ba46dff73fdc4383ffd4102. I started
Emacs without -Q to get Magit, hope that doesn't matter. Settings
related to Tramp in my init.el:

  (use-package tramp
    :defer t
    :custom
    (auto-revert-remote-files t)

    :config
    ;; Define profile for a remote zsh connection.
    (connection-local-set-profile-variables
     'remote-zsh-arm
     '((explicit-shell-file-name . "/opt/homebrew/bin/zsh")
       (explicit-zsh-args . ("-i"))))

    ;; Define which profile to use depending on a connection protocol
    ;; and machine. No longer really used since the x86 machine died.
    (connection-local-set-profiles '(:protocol "ssh" :machine "pro2") 'remote-zsh-arm)
    (connection-local-set-profiles '(:protocol "ssh" :machine "mini") 'remote-zsh-arm)

    ;; Let me use my own PATH.
    (add-to-list 'tramp-remote-path 'tramp-own-remote-path))

Started a fresh Emacs, then

  (setq tramp-verbose 6)
  M-x magit-status RET /ssh:mini:emacs/github/master RET

Status buffer is displayed. Then pulled with "P p" which gives the error
"... /tmp.not accessible". Please find the debug buffer contents
attached.