unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
* BUG in Tramp: After sleep, saving file hangs
@ 2018-07-17 12:12 ken
  2018-07-17 14:36 ` Michael Albinus
  0 siblings, 1 reply; 9+ messages in thread
From: ken @ 2018-07-17 12:12 UTC (permalink / raw)
  To: GNU Emacs List, Suse Help

Here's the scenario:

Both the local and the remote machines are running linux.  The local
machine is a laptop.  The remote is headless and runs sshd.  I often use
tramp to work on files on the remote machine from the local machine.  So
I'll open a file on the remote machine with tramp, work on it for a
time, then some time later put the local machine into sleep mode.  Going
into sleep mode obviously causes all internet connections to be lost,
including all of those from the local machine to the remote machine.

So, as is almost always the case, if I have a terminal window open from
the local to the remote via ssh, it is lost when the local is put to
sleep, and upon waking I must rerun "ssh remote-machine" to get it
back.  That's to be expected (at least until ssh becomes a lot more
refined and sophisticated).

Similarly, when I have a remote file open in tramp/emacs, put the local
machine to sleep, bring it out of sleep, and then try to work on that
remote file some more, then there is the problem.  Specifically, I can
edit the buffer, but when I try to save the buffer, emacs hangs, for
minutes if I wait that long. 

I can always break that hang by doing "C-g".  But then the file will not
be saved.  Sometimes if I try "C-x C-s" again, it will work, and the
buffer will be saved, but not always.  Sometimes it will take third or
fourth attempt to save the remote buffer.  But sometimes even that many
repeated attempts all fail.  Yesterday, after multiple such attempts to
save, all not working, I identified the "ssh -e remote-machine" process
which was the child process to emacs and killed it -- after doing that,
I did "C-x C-s" in emacs and the remote file was successfully saved.

Sometimes with such a hang emacs will display Debugger output, most of
the time it doesn't.  Yesterday, prior to my killing the child ssh
process emacs displayed the following (byte-code removed for brevity,
sorry for any unintended word-wrapping):

Debugger entered--Lisp error: (args-out-of-range 60 198)
  tramp-process-actions(#<process *tramp/scp lunar*> ["scp" nil "lunar"
"/home/userd/dird/osten.html" nil] 198 ((tramp-login-prompt-regexp
tramp-action-login) (tramp-password-prompt-regexp tramp-action-password)
(tramp-wrong-passwd-regexp tramp-action-permission-denied)
(shell-prompt-pattern tramp-action-succeed) (tramp-shell-prompt-pattern
tramp-action-succeed) (tramp-yesno-prompt-regexp tramp-action-yesno)
(tramp-yn-prompt-regexp tramp-action-yn) (tramp-terminal-prompt-regexp
tramp-action-terminal) (tramp-process-alive-regexp
tramp-action-process-alive)) 60)
  byte-code("...." [level tramp-verbose save-match-data-internal
tramp-message-show-message fmt-string args match-data ((byte-code "...."
[save-match-data-internal set-match-data evaporate] 3)) 3 apply message
0 "" 1 2 "Warning: " "Tramp: " 4 processp buffer-name process-buffer
tramp-dissect-file-name vectorp tramp-debug-message format "(%d) # "
vec-or-proc default-directory] 6) ((error)) (byte-code "...." [vec pr tm
subrp make-progress-reporter functionp zerop tramp-file-name-user format
"Opening connection for %s using %s" tramp-file-name-host
tramp-file-name-method "Opening connection for %s@%s using %s"
run-at-time 3 0.1 tramp-progress-reporter-update] 8) ((error))
((byte-code "...." [tm vec args fmt-string level vec-or-proc subrp
cancel-timer functionp 3 "%s...done" zerop tramp-file-name-user format
"Opening connection for %s using %s" tramp-file-name-host
tramp-file-name-method "Opening connection for %s@%s using %s" nil
(byte-code "...." [level tramp-verbose save-match-data-internal
tramp-message-show-message fmt-string args match-data ((byte-code "...."
[save-match-data-internal set-match-data evaporate] 3)) 3 apply message
0 "" 1 2 "Warning: " "Tramp: " 4 processp buffer-name process-buffer
tramp-dissect-file-name vectorp tramp-debug-message format "(%d) # "
vec-or-proc default-directory] 6) ((error))] 9)) delete-process setenv
"TERM" "LC_ALL" "C" "PROMPT_COMMAND" "PS1" tramp-compute-multi-hops
temporary-file-directory eval standard-value fboundp temp-directory
subrp functionp getenv "TEMP" file-directory-p file-name-as-directory
"TMP" "TMPDIR" file-exists-p ...] 10)
  byte-code("...." [vec process-environment pos process-name p
tramp-current-connection tramp-get-connection-process
tramp-get-connection-property "process-name" nil copy-sequence
tramp-get-connection-buffer processp process-status (run open) butlast
append tramp-time-diff current-time 5 throw suppress (byte-code "...."
[p vec args fmt-string signal vec-or-proc tramp-time-diff current-time
tramp-get-connection-property "last-cmd-time" (0 0 0) 60 processp
process-status (run open) tramp-send-command "echo are you awake" t (run
open) tramp-wait-for-output 10 file-error "Awake did fail" nil 1 "%s"
error-message-string error-message apply format (byte-code "...." [level
tramp-verbose save-match-data-internal tramp-message-show-message
fmt-string args match-data ((byte-code "...." [save-match-data-internal
set-match-data evaporate] 3)) 3 apply message 0 "" 1 2 "Warning: "
"Tramp: " 4 processp buffer-name process-buffer tramp-dissect-file-name
vectorp tramp-debug-message format "(%d) # " vec-or-proc
default-directory] 6) ((error)) tramp-message-show-message level] 10)
((file-error (byte-code "...." [vec p tramp-cleanup nil] 3))) err
(byte-code "...." [p vec tm pr args fmt-string processp process-status
(run open) tramp-get-buffer boundp non-essential throw nil 3 "%s..."
zerop tramp-file-name-user format "Opening connection for %s using %s"
tramp-file-name-host tramp-file-name-method "Opening connection for
%s@%s using %s" (byte-code "...." [level tramp-verbose
save-match-data-internal tramp-message-show-message fmt-string args
match-data ((byte-code "...." [save-match-data-internal set-match-data
evaporate] 3)) 3 apply message 0 "" 1 2 "Warning: " "Tramp: " 4 processp
buffer-name process-buffer tramp-dissect-file-name vectorp
tramp-debug-message format "(%d) # " vec-or-proc default-directory] 6)
((error)) (byte-code "...." [vec pr tm subrp make-progress-reporter
functionp zerop tramp-file-name-user format "Opening connection for %s
using %s" tramp-file-name-host tramp-file-name-method "Opening
connection for %s@%s using %s" run-at-time 3 0.1
tramp-progress-reporter-update] 8) ((error)) ((byte-code "...." [tm vec
args fmt-string level vec-or-proc subrp cancel-timer functionp 3
"%s...done" zerop tramp-file-name-user format "Opening connection for %s
using %s" tramp-file-name-host tramp-file-name-method "Opening
connection for %s@%s using %s" nil (byte-code "...." [level
tramp-verbose save-match-data-internal tramp-message-show-message
fmt-string args match-data ... 3 apply message 0 "" 1 2 "Warning: "
"Tramp: " 4 processp buffer-name process-buffer tramp-dissect-file-name
vectorp tramp-debug-message format "(%d) # " vec-or-proc
default-directory] 6) ((error))] 9)) delete-process setenv "TERM"
"LC_ALL" "C" "PROMPT_COMMAND" "PS1" tramp-compute-multi-hops
temporary-file-directory eval standard-value fboundp temp-directory
subrp functionp getenv "TEMP" file-directory-p file-name-as-directory
"TMP" "TMPDIR" file-exists-p ...] 10) ((quit (byte-code
"\302\b!\210\303    @    A\"\207" [vec err tramp-cleanup signal] 3)))] 6)
  tramp-maybe-open-connection(["scp" nil "lunar"
"/home/userd/dird/osten.html" nil])
  tramp-send-command(["scp" nil "lunar" "/home/userd/dird/osten.html"
nil] "( (test -e /home/userd/dird/osten.html || test -h
/home/userd/dird/osten.html) && \\stat -c '((\"%N\") %h %ue0 %ge0 %Xe0
%Ye0 %Ze0 %se0 \"%A\" t %ie0 -1)' /home/userd/dird/osten.html || echo
nil) 2>/dev/null; echo tramp_exit_status $?")
  tramp-send-command-and-check(["scp" nil "lunar"
"/home/userd/dird/osten.html" nil] "( (test -e
/home/userd/dird/osten.html || test -h /home/userd/dird/osten.html) &&
\\stat -c '((\"%N\") %h %ue0 %ge0 %Xe0 %Ye0 %Ze0 %se0 \"%A\" t %ie0 -1)'
/home/userd/dird/osten.html || echo nil)")
  tramp-barf-unless-okay(["scp" nil "lunar"
"/home/userd/dird/osten.html" nil] "( (test -e
/home/userd/dird/osten.html || test -h /home/userd/dird/osten.html) &&
\\stat -c '((\"%N\") %h %ue0 %ge0 %Xe0 %Ye0 %Ze0 %se0 \"%A\" t %ie0 -1)'
/home/userd/dird/osten.html || echo nil)" "`%s' returns with error" "(
(test -e /home/userd/dird/osten.html || test -h
/home/userd/dird/osten.html) && \\stat -c '((\"%N\") %h %ue0 %ge0 %Xe0
%Ye0 %Ze0 %se0 \"%A\" t %ie0 -1)' /home/userd/dird/osten.html || echo nil)")
  tramp-send-command-and-read(["scp" nil "lunar"
"/home/userd/dird/osten.html" nil] "( (test -e
/home/userd/dird/osten.html || test -h /home/userd/dird/osten.html) &&
\\stat -c '((\"%N\") %h %ue0 %ge0 %Xe0 %Ye0 %Ze0 %se0 \"%A\" t %ie0 -1)'
/home/userd/dird/osten.html || echo nil)")
  tramp-do-file-attributes-with-stat(["scp" nil "lunar"
"/home/userd/dird/osten.html" nil] "/home/userd/dird/osten.html" integer)
  tramp-sh-handle-file-attributes("/scp:lunar:/home/userd/dird/osten.html")
  apply(tramp-sh-handle-file-attributes
"/scp:lunar:/home/userd/dird/osten.html")
  tramp-sh-file-name-handler(file-attributes
"/scp:lunar:/home/userd/dird/osten.html")
  apply(tramp-sh-file-name-handler file-attributes
"/scp:lunar:/home/userd/dird/osten.html")
  byte-code("...." [suppress (apply foreign operation args)] 2)
  #[nil "...." [foreign result sf file-name-handler-alist d
default-directory nil autoload boundp temporary-file-directory eval
standard-value fboundp temp-directory subrp functionp getenv "TEMP"
file-directory-p file-name-as-directory "TMP" "TMPDIR" file-exists-p
"c:/temp" message "Neither `temporary-file-directory' nor
`temp-directory' is defined -- using /tmp." "/tmp" load noerror
nomessage non-essential (byte-code "...." [suppress (apply foreign
operation args)] 2) 5 "Non-essential received in operation %s" append
(byte-code "...." [level tramp-verbose save-match-data-internal
tramp-message-show-message fmt-string args match-data ((byte-code "...."
[save-match-data-internal set-match-data evaporate] 3)) 3 apply message
0 "" 1 2 "Warning: " "Tramp: " 4 processp buffer-name process-buffer
tramp-dissect-file-name vectorp tramp-debug-message format "(%d) # "
vec-or-proc default-directory] 6) ((error)) tramp-run-real-handler
suppress 1 "Suppress received in operation %s" tramp-cleanup x v
operation args fmt-string level vec-or-proc tramp-message-show-message] 7]()
  tramp-file-name-handler(file-attributes
"/scp:lunar:/home/userd/dird/osten.html")
  file-attributes("/scp:lunar:/home/userd/dird/osten.html")
  tramp-sh-handle-verify-visited-file-modtime(#<buffer osten.html>)
  apply(tramp-sh-handle-verify-visited-file-modtime #<buffer osten.html>)
  tramp-sh-file-name-handler(verify-visited-file-modtime #<buffer
osten.html>)
  apply(tramp-sh-file-name-handler verify-visited-file-modtime #<buffer
osten.html>)
  byte-code("...." [suppress (apply foreign operation args)] 2)
  #[nil "...." [foreign result sf file-name-handler-alist d
default-directory nil autoload boundp temporary-file-directory eval
standard-value fboundp temp-directory subrp functionp getenv "TEMP"
file-directory-p file-name-as-directory "TMP" "TMPDIR" file-exists-p
"c:/temp" message "Neither `temporary-file-directory' nor
`temp-directory' is defined -- using /tmp." "/tmp" load noerror
nomessage non-essential (byte-code "...." [suppress (apply foreign
operation args)] 2) 5 "Non-essential received in operation %s" append
(byte-code "...." [level tramp-verbose save-match-data-internal
tramp-message-show-message fmt-string args match-data ((byte-code "...."
[save-match-data-internal set-match-data evaporate] 3)) 3 apply message
0 "" 1 2 "Warning: " "Tramp: " 4 processp buffer-name process-buffer
tramp-dissect-file-name vectorp tramp-debug-message format "(%d) # "
vec-or-proc default-directory] 6) ((error)) tramp-run-real-handler
suppress 1 "Suppress received in operation %s" tramp-cleanup x v
operation args fmt-string level vec-or-proc tramp-message-show-message] 7]()
  tramp-file-name-handler(verify-visited-file-modtime #<buffer osten.html>)
  verify-visited-file-modtime(#<buffer osten.html>)
  basic-save-buffer()
  save-buffer(1)
  call-interactively(save-buffer nil nil)



--
To unsubscribe, e-mail: opensuse+unsubscribe@opensuse.org
To contact the owner, e-mail: opensuse+owner@opensuse.org



^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2018-07-25  7:38 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-07-17 12:12 BUG in Tramp: After sleep, saving file hangs ken
2018-07-17 14:36 ` Michael Albinus
2018-07-18  2:47   ` Brett Gilio
2018-07-18 15:35     ` ken
2018-07-18 15:12   ` ken
2018-07-19  9:01     ` Michael Albinus
2018-07-25  2:48       ` ken
2018-07-25  7:38         ` Michael Albinus
2018-07-25  5:54       ` Bugs in Tramp in general [was: Re: BUG in Tramp: After sleep, saving file hangs] ken

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).