Subject: Viewing images over network using TRAMP (errors and unexpected prompts)

From: Mikhail P <[email-masked]>
Date: Tue, 15 Dec 2020 19:17:28 +0700

Greetings.

I am experiencing problems with viewing remote images. When resizing an 
image (e.g. by resizing Emacs frame) Emacs occasionally (approximately 
~30% reproducibility) can prompt |... changed on disk; really edit the 
buffer?| which does not make a lot of sense. Regardless of my response 
Emacs outputs errors, lags for several seconds and only after that 
resizes the image.

I am using currently most recent commit on TRAMP repo 
(69844458e33b5dcae53de249d9d82c59a5876055) containing some necessary 
fixes. Prior to these fixes Emacs could occasionally stall on resizing 
remote image and only interruption with C-g could help (or sometimes 
making Emacs completely unresponsive). Also attaching TRAMP debug file 
which I hope exposes the problem.

As far as I could understand from my conversation with TRAMP devs while 
working on the fixes there are problems with functions called on 
idle-timer in image mode ... 😬

Below as a quotation is what |report-emacs-bug| has generated.

To make this report I ran emacs as follows:

|emacs -Q --eval="(progn (add-to-list 'load-path 
\"/home/mikpom/Dropbox/.config/emacs-plugins/tramp\") (require 'tramp) 
(setq tramp-verbose 10) (setq tramp-use-ssh-controlmaster-options nil) 
(setq tramp-debug-to-file t))" 
/ssh:horsehop:/storage1/mikpom/wizard_devel/CNV/figs/TCGA_CNV/ATP23/TCGA-02-2485.png|

Thanks,

Mikhail

> In GNU Emacs 27.1 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.22, 
> cairo version 1.17.3)
>  of 2020-08-29 built on juergen
> Windowing system distributor 'The X.Org Foundation', version 11.0.12009000
> System Description: Arch Linux
>
> Recent messages:
> Unchanged content check: (remote-file-error "Forbidden reentrant call 
> of Tramp")
> error: "Command attempted to use minibuffer while in minibuffer"
> Error running timer ‘image-fit-to-window’: (error "Command attempted 
> to use minibuffer while in minibuffer")
> TCGA-02-2485.png changed on disk; really edit the buffer? (y, n, r or 
> C-h) n
> peculiar error: File changed on disk 
> /ssh:horsehop:/storage1/mikpom/wizard_devel/CNV/figs/TCGA_CNV/ATP23/TCGA-02-2485.png
> Error running timer ‘image-fit-to-window’: (file-supersession "File 
> changed on disk 
> /ssh:horsehop:/storage1/mikpom/wizard_devel/CNV/figs/TCGA_CNV/ATP23/TCGA-02-2485.png")
> Quit: "Quit", ""
> Quit
> Remote file error (compat): Forbidden reentrant call of Tramp [5 times]
> Error running timer ‘image-fit-to-window’: (remote-file-error 
> "Forbidden reentrant call of Tramp")
>
> Configured using:
>  'configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib
>  --localstatedir=/var --with-x-toolkit=gtk3 --with-xft --with-wide-int
>  --with-modules --with-cairo --with-harfbuzz 'CFLAGS=-march=x86-64
>  -mtune=generic -O2 -pipe -fno-plt' CPPFLAGS=-D_FORTIFY_SOURCE=2
>  LDFLAGS=-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now'
>
> Configured features:
> XPM JPEG TIFF GIF PNG RSVG CAIRO SOUND GPM DBUS GSETTINGS GLIB NOTIFY
> INOTIFY ACL GNUTLS LIBXML2 FREETYPE HARFBUZZ M17N_FLT LIBOTF ZLIB
> TOOLKIT_SCROLL_BARS GTK3 X11 XDBE XIM MODULES THREADS LIBSYSTEMD JSON
> PDUMPER LCMS2 GMP
>
> Important settings:
>   value of $LANG: en_US.UTF-8
>   locale-coding-system: utf-8-unix
>
> Major mode: Image[png]
>
> Minor modes in effect:
>   shell-dirtrack-mode: t
>   tooltip-mode: t
>   global-eldoc-mode: t
>   electric-indent-mode: t
>   mouse-wheel-mode: t
>   tool-bar-mode: t
>   menu-bar-mode: t
>   file-name-shadow-mode: t
>   global-font-lock-mode: t
>   font-lock-mode: t
>   blink-cursor-mode: t
>   auto-composition-mode: t
>   auto-encryption-mode: t
>   auto-compression-mode: t
>   line-number-mode: t
>   transient-mark-mode: t
>
> Load-path shadows:
> /home/mikpom/Dropbox/.config/emacs-plugins/tramp/tramp-gvfs hides 
> /usr/share/emacs/27.1/lisp/net/tramp-gvfs
> /home/mikpom/Dropbox/.config/emacs-plugins/tramp/tramp-rclone hides 
> /usr/share/emacs/27.1/lisp/net/tramp-rclone
> /home/mikpom/Dropbox/.config/emacs-plugins/tramp/tramp-compat hides 
> /usr/share/emacs/27.1/lisp/net/tramp-compat
> /home/mikpom/Dropbox/.config/emacs-plugins/tramp/tramp-loaddefs hides 
> /usr/share/emacs/27.1/lisp/net/tramp-loaddefs
> /home/mikpom/Dropbox/.config/emacs-plugins/tramp/tramp-ftp hides 
> /usr/share/emacs/27.1/lisp/net/tramp-ftp
> /home/mikpom/Dropbox/.config/emacs-plugins/tramp/tramp-integration 
> hides /usr/share/emacs/27.1/lisp/net/tramp-integration
> /home/mikpom/Dropbox/.config/emacs-plugins/tramp/tramp hides 
> /usr/share/emacs/27.1/lisp/net/tramp
> /home/mikpom/Dropbox/.config/emacs-plugins/tramp/tramp-sh hides 
> /usr/share/emacs/27.1/lisp/net/tramp-sh
> /home/mikpom/Dropbox/.config/emacs-plugins/tramp/tramp-cache hides 
> /usr/share/emacs/27.1/lisp/net/tramp-cache
> /home/mikpom/Dropbox/.config/emacs-plugins/tramp/tramp-adb hides 
> /usr/share/emacs/27.1/lisp/net/tramp-adb
> /home/mikpom/Dropbox/.config/emacs-plugins/tramp/tramp-archive hides 
> /usr/share/emacs/27.1/lisp/net/tramp-archive
> /home/mikpom/Dropbox/.config/emacs-plugins/tramp/tramp-cmds hides 
> /usr/share/emacs/27.1/lisp/net/tramp-cmds
> /home/mikpom/Dropbox/.config/emacs-plugins/tramp/tramp-smb hides 
> /usr/share/emacs/27.1/lisp/net/tramp-smb
> /home/mikpom/Dropbox/.config/emacs-plugins/tramp/tramp-sudoedit hides 
> /usr/share/emacs/27.1/lisp/net/tramp-sudoedit
> /home/mikpom/Dropbox/.config/emacs-plugins/tramp/tramp-uu hides 
> /usr/share/emacs/27.1/lisp/net/tramp-uu
> /home/mikpom/Dropbox/.config/emacs-plugins/tramp/trampver hides 
> /usr/share/emacs/27.1/lisp/net/trampver
>
> Features:
> (shadow sort mail-extr emacsbug message rmc puny dired dired-loaddefs
> rfc822 mml mml-sec epa derived epg epg-config gnus-util rmail
> rmail-loaddefs text-property-search mm-decode mm-bodies mm-encode
> mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047
> rfc2045 ietf-drums mm-util mail-prsvr mail-utils vc-hg vc-git diff-mode
> vc-bzr help-fns radix-tree cl-print backtrace help-mode find-func
> image-mode easymenu exif tramp-sh noutline outline easy-mmode
> tramp-cache tramp tramp-loaddefs trampver tramp-integration files-x
> tramp-compat shell pcomplete comint ansi-color ring parse-time iso8601
> time-date ls-lisp format-spec auth-source cl-seq eieio eieio-core
> cl-macs eieio-loaddefs cl-loaddefs cl-lib password-cache json subr-x map
> seq byte-opt gv bytecomp byte-compile cconv tooltip eldoc electric
> uniquify ediff-hook vc-hooks lisp-float-type 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 elisp-mode lisp-mode
> prog-mode register page tab-bar menu-bar rfn-eshadow isearch timer
> select scroll-bar mouse jit-lock font-lock syntax facemenu font-core
> term/tty-colors frame minibuffer cl-generic 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 charscript charprop case-table epa-hook
> jka-cmpr-hook help simple abbrev obarray cl-preloaded nadvice loaddefs
> button faces cus-face macroexp files text-properties overlay sha1 md5
> base64 format env code-pages mule custom widget hashtable-print-readable
> backquote threads dbusbind inotify lcms2 dynamic-setting
> system-font-setting font-render-setting cairo move-toolbar gtk x-toolkit
> x multi-tty make-network-process emacs)
>
> Memory information:
> ((conses 16 238745 23438)
>  (symbols 48 9577 2)
>  (strings 32 29283 2492)
>  (string-bytes 1 1268698)
>  (vectors 16 23567)
>  (vector-slots 8 1083940 157766)
>  (floats 8 55 178)
>  (intervals 56 80877 0)
>  (buffers 1000 14))