tramp-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

tramp (2.1.9); high cpu utilization on windows


From: Ye Wenbin
Subject: tramp (2.1.9); high cpu utilization on windows
Date: Wed, 11 Jul 2007 10:47:00 +0800
User-agent: Opera Mail/9.20 (Win32)

Enter your bug report in this message, including as much detail
as you possibly can about the problem, what you did to cause it
and what the local and remote machines are.

If you can give a simple set of instructions to make this bug
happen reliably, please include those.  Thank you for helping
kill bugs in TRAMP.

Another useful thing to do is to put

  (setq tramp-verbose 8)

in the ~/.emacs file and to repeat the bug.  Then, include the
contents of the *tramp/foo* buffer and the *debug tramp/foo*
buffer in your bug report.

--bug report follows this line--

I put latest tramp in site-lisp directory, and make sure that the version of
the tramp loaded is 2.1.9. Then start emacs with `emacs -Q`, eval
(require 'tramp) in *scratch* buffer. The cpu utilization of emacs
become 99%. And use M-x list-process can see a remain process with no
name as following:
Proc Status   Buffer Command
---- ------   ------ -------
     run      (none) ls

After compare with old version, I found the problem is introduced from
(require 'tramp-util). Comment the line 170, and eval
(require 'tramp), everything is well. And final find the problem is
come from tramp-exists-file-name-handler in line 131 and 159.
Eval this will reproduce the situation:
(progn
   (tramp-exists-file-name-handler 'start-process "" nil "ls")
   (tramp-exists-file-name-handler 'call-process "ls"))

Change the order of the two form will be ok. But I think wait until
the process exit will be better. And this is my patch:

--- tramp-util.el       2007/07/10 17:59:38     1.2
+++ tramp-util.el       2007/07/10 18:02:10
@@ -98,6 +98,12 @@
 ;; local host.

 ;; Other open problems are `setenv'/`getenv'.
+(defun tramp-safe-run-process-test (code)
+  (let ((proc-list (process-list))
+        (res (eval code)))
+    (while (not (equal (process-list) proc-list))
+      (sit-for 0.1))
+    res))

 (unless (tramp-exists-file-name-handler 'executable-find "ls")
   (defadvice executable-find
@@ -122,7 +128,8 @@
   (add-hook 'tramp-util-unload-hook
             '(lambda () (ad-unadvise 'executable-find))))

-(unless (tramp-exists-file-name-handler 'start-process "" nil "ls")
+(unless (tramp-safe-run-process-test
+         '(tramp-exists-file-name-handler 'start-process "" nil "ls"))
   (defadvice start-process
     (around tramp-advice-start-process activate)
     "Invoke `tramp-handle-start-process' for Tramp files."
@@ -148,7 +155,8 @@
   (add-hook 'tramp-util-unload-hook
             '(lambda () (ad-unadvise 'start-process-shell-command))))

-(unless (tramp-exists-file-name-handler 'call-process "ls")
+(unless (tramp-safe-run-process-test
+         '(tramp-exists-file-name-handler 'call-process "ls"))
   (defadvice call-process
     (around tramp-advice-call-process activate)
     "Invoke `tramp-handle-call-process' for Tramp files."


Emacs  : GNU Emacs 23.0.0.1 (i386-mingw-nt5.1.2600)
 of 2006-03-18 on BREP
Package: tramp (2.1.9)

current state:
==============
(setq
 tramp-current-method nil
 tramp-current-user nil
 tramp-current-host nil
 tramp-auto-save-directory nil
 tramp-default-method "pscp"
 tramp-default-method-alist '(("" "\\`\\(anonymous\\|ftp\\)\\'" "ftp")
                              ("\\`ftp\\." "" "ftp")
                              ("\\`localhost\\'" "\\`root\\'" "su"))
 tramp-default-host "TSINGHUA-64DC66"
 tramp-default-proxies-alist nil
 tramp-default-user nil
 tramp-default-user-alist '(("socks" nil "ywb") ("tunnel" nil "ywb")
                            ("fish" nil "ywb")
                            ("\\`su\\(do\\)?\\'" nil "root")
                            ("\\`r\\(em\\)?\\(cp\\|sh\\)\\|telnet\\'" nil
                             "ywb")
                            )
 tramp-rsh-end-of-line "\n"
 tramp-default-password-end-of-line "\n"
 tramp-remote-path '(tramp-default-remote-path "/usr/sbin" "/usr/local/bin"
                     "/local/bin" "/local/freeware/bin" "/local/gnu/bin"
                     "/usr/freeware/bin" "/usr/pkg/bin" "/usr/contrib/bin")
 tramp-login-prompt-regexp ".*ogin\\( .*\\)?: *"
tramp-password-prompt-regexp "(base64-decode-string \"Xi4qXChbcFBdYXNzd29yZFx8W3BQXWFzc3BocmFzZVwpLio6AD8gKg==\"" tramp-wrong-passwd-regexp "^.*\\(Connection \\(?:closed by foreign host\\.\\|refused\\)\\|Host key verification failed\\.\\|Login \\(?:[Ii]ncorrect\\)\\|N\\(?:ame or service not known\\|o supported authentication methods left to try!\\)\\|Permission denied\\.\\|Sorry, try again\\.\\|Tramp connection closed\\).*\\|^.*\\(Received signal [0-9]+\\).*" tramp-yesno-prompt-regexp "\\(Are you sure you want to continue connecting (yes/no)\\?\\)\\s-*" tramp-yn-prompt-regexp "\\(\\(?:Store key in cache\\? (y/\\|Update cached key\\? (y/n, Return cancels connectio\\)n)\\)\\s-*" tramp-terminal-prompt-regexp "\\(TERM = (.*)\\|Terminal type\\? \\[.*\\]\\)\\s-*"
 tramp-temp-name-prefix "tramp."
tramp-file-name-structure '("^/\\(\\([a-zA-Z_0-9-]+\\):\\)?\\(\\([^:/ ]+\\)@\\)?\\([a-zA-Z0-9_.-]+\\(#[0-9]+\\)?\\)?:\\(.*$\\)" 2 4 5 7)
 tramp-file-name-regexp "\\`/[^/:]+:"
 tramp-methods '(("fish") ("ftp")
                 ("rcp" (tramp-login-program "rsh")
                  (tramp-login-args (("%h") ("-l" "%u")))
                  (tramp-remote-sh "/bin/sh") (tramp-copy-program "rcp")
                  (tramp-copy-args (("-p" "%k"))) (tramp-copy-keep-date t)
                  (tramp-password-end-of-line nil))
                 ("scp" (tramp-login-program "ssh")
                  (tramp-login-args
                   (("%h") ("-l" "%u") ("-p" "%p") ("-e" "none")))
                  (tramp-remote-sh "/bin/sh") (tramp-copy-program "scp")
                  (tramp-copy-args (("-P" "%p") ("-p" "%k") ("-q")))
                  (tramp-copy-keep-date t) (tramp-password-end-of-line nil)
                  (tramp-gw-args
                   (("-o" "GlobalKnownHostsFile=/dev/null")
                    ("-o" "UserKnownHostsFile=/dev/null")
                    ("-o" "StrictHostKeyChecking=no"))
                   )
                  (tramp-default-port 22))
                 ("scp1" (tramp-login-program "ssh")
                  (tramp-login-args
                   (("%h") ("-l" "%u") ("-p" "%p") ("-1" "-e" "none")))
                  (tramp-remote-sh "/bin/sh") (tramp-copy-program "scp")
                  (tramp-copy-args (("-1") ("-P" "%p") ("-p" "%k") ("-q")))
                  (tramp-copy-keep-date t) (tramp-password-end-of-line nil)
                  (tramp-gw-args
                   (("-o" "GlobalKnownHostsFile=/dev/null")
                    ("-o" "UserKnownHostsFile=/dev/null")
                    ("-o" "StrictHostKeyChecking=no"))
                   )
                  (tramp-default-port 22))
                 ("scp2" (tramp-login-program "ssh")
                  (tramp-login-args
                   (("%h") ("-l" "%u") ("-p" "%p") ("-2" "-e" "none")))
                  (tramp-remote-sh "/bin/sh") (tramp-copy-program "scp")
                  (tramp-copy-args (("-2") ("-P" "%p") ("-p" "%k") ("-q")))
                  (tramp-copy-keep-date t) (tramp-password-end-of-line nil)
                  (tramp-gw-args
                   (("-o" "GlobalKnownHostsFile=/dev/null")
                    ("-o" "UserKnownHostsFile=/dev/null")
                    ("-o" "StrictHostKeyChecking=no"))
                   )
                  (tramp-default-port 22))
                 ("scp1_old" (tramp-login-program "ssh1")
                  (tramp-login-args
                   (("%h") ("-l" "%u") ("-p" "%p") ("-e" "none")))
                  (tramp-remote-sh "/bin/sh") (tramp-copy-program "scp1")
                  (tramp-copy-args (("-p" "%k"))) (tramp-copy-keep-date t)
                  (tramp-password-end-of-line nil))
                 ("scp2_old" (tramp-login-program "ssh2")
                  (tramp-login-args
                   (("%h") ("-l" "%u") ("-p" "%p") ("-e" "none")))
                  (tramp-remote-sh "/bin/sh") (tramp-copy-program "scp2")
                  (tramp-copy-args (("-p" "%k"))) (tramp-copy-keep-date t)
                  (tramp-password-end-of-line nil))
                 ("sftp" (tramp-login-program "ssh")
                  (tramp-login-args
                   (("%h") ("-l" "%u") ("-p" "%p") ("-e" "none")))
                  (tramp-remote-sh "/bin/sh") (tramp-copy-program "sftp")
                  (tramp-copy-args nil) (tramp-copy-keep-date nil)
                  (tramp-password-end-of-line nil))
                 ("rsync" (tramp-login-program "ssh")
                  (tramp-login-args
                   (("%h") ("-l" "%u") ("-p" "%p") ("-e" "none")))
                  (tramp-remote-sh "/bin/sh") (tramp-copy-program "rsync")
                  (tramp-copy-args (("-e" "ssh") ("-t" "%k")))
                  (tramp-copy-keep-date t) (tramp-password-end-of-line nil))
                 ("remcp" (tramp-login-program "remsh")
                  (tramp-login-args (("%h") ("-l" "%u")))
                  (tramp-remote-sh "/bin/sh") (tramp-copy-program "rcp")
                  (tramp-copy-args (("-p" "%k"))) (tramp-copy-keep-date t)
                  (tramp-password-end-of-line nil))
                 ("rsh" (tramp-login-program "rsh")
                  (tramp-login-args (("%h") ("-l" "%u")))
                  (tramp-remote-sh "/bin/sh") (tramp-copy-program nil)
                  (tramp-copy-args nil) (tramp-copy-keep-date nil)
                  (tramp-password-end-of-line nil))
                 ("ssh" (tramp-login-program "ssh")
                  (tramp-login-args
                   (("%h") ("-l" "%u") ("-p" "%p") ("-e" "none")))
                  (tramp-remote-sh "/bin/sh") (tramp-copy-program nil)
                  (tramp-copy-args nil) (tramp-copy-keep-date nil)
                  (tramp-password-end-of-line nil)
                  (tramp-gw-args
                   (("-o" "GlobalKnownHostsFile=/dev/null")
                    ("-o" "UserKnownHostsFile=/dev/null")
                    ("-o" "StrictHostKeyChecking=no"))
                   )
                  (tramp-default-port 22))
                 ("ssh1" (tramp-login-program "ssh")
                  (tramp-login-args
                   (("%h") ("-l" "%u") ("-p" "%p") ("-1" "-e" "none")))
                  (tramp-remote-sh "/bin/sh") (tramp-copy-program nil)
                  (tramp-copy-args nil) (tramp-copy-keep-date nil)
                  (tramp-password-end-of-line nil)
                  (tramp-gw-args
                   (("-o" "GlobalKnownHostsFile=/dev/null")
                    ("-o" "UserKnownHostsFile=/dev/null")
                    ("-o" "StrictHostKeyChecking=no"))
                   )
                  (tramp-default-port 22))
                 ("ssh2" (tramp-login-program "ssh")
                  (tramp-login-args
                   (("%h") ("-l" "%u") ("-p" "%p") ("-2" "-e" "none")))
                  (tramp-remote-sh "/bin/sh") (tramp-copy-program nil)
                  (tramp-copy-args nil) (tramp-copy-keep-date nil)
                  (tramp-password-end-of-line nil)
                  (tramp-gw-args
                   (("-o" "GlobalKnownHostsFile=/dev/null")
                    ("-o" "UserKnownHostsFile=/dev/null")
                    ("-o" "StrictHostKeyChecking=no"))
                   )
                  (tramp-default-port 22))
                 ("ssh1_old" (tramp-login-program "ssh1")
                  (tramp-login-args
                   (("%h") ("-l" "%u") ("-p" "%p") ("-e" "none")))
                  (tramp-remote-sh "/bin/sh") (tramp-copy-program nil)
                  (tramp-copy-args nil) (tramp-copy-keep-date nil)
                  (tramp-password-end-of-line nil))
                 ("ssh2_old" (tramp-login-program "ssh2")
                  (tramp-login-args
                   (("%h") ("-l" "%u") ("-p" "%p") ("-e" "none")))
                  (tramp-remote-sh "/bin/sh") (tramp-copy-program nil)
                  (tramp-copy-args nil) (tramp-copy-keep-date nil)
                  (tramp-password-end-of-line nil))
                 ("remsh" (tramp-login-program "remsh")
                  (tramp-login-args (("%h") ("-l" "%u")))
                  (tramp-remote-sh "/bin/sh") (tramp-copy-program nil)
                  (tramp-copy-args nil) (tramp-copy-keep-date nil)
                  (tramp-password-end-of-line nil))
                 ("telnet" (tramp-login-program "telnet")
                  (tramp-login-args (("%h") ("%p")))
                  (tramp-remote-sh "/bin/sh") (tramp-copy-program nil)
                  (tramp-copy-args nil) (tramp-copy-keep-date nil)
                  (tramp-password-end-of-line nil) (tramp-default-port 23))
                 ("su" (tramp-login-program "su")
                  (tramp-login-args (("-") ("%u")))
                  (tramp-remote-sh "/bin/sh") (tramp-copy-program nil)
                  (tramp-copy-args nil) (tramp-copy-keep-date nil)
                  (tramp-password-end-of-line nil))
                 ("sudo" (tramp-login-program "sudo")
                  (tramp-login-args (("-u" "%u") ("-s" "-p" "Password:")))
                  (tramp-remote-sh "/bin/sh") (tramp-copy-program nil)
                  (tramp-copy-args nil) (tramp-copy-keep-date nil)
                  (tramp-password-end-of-line nil))
                 ("scpc" (tramp-login-program "ssh")
                  (tramp-login-args
                   (("%h") ("-l" "%u") ("-p" "%p")
                    ("-o" "address@hidden:%%p")
                    ("-o" "ControlMaster=yes") ("-e" "none"))
                   )
                  (tramp-remote-sh "/bin/sh") (tramp-copy-program "scp")
                  (tramp-copy-args
                   (("-P" "%p") ("-p" "%k") ("-q")
                    ("-o" "address@hidden:%%p")
                    ("-o" "ControlMaster=auto"))
                   )
                  (tramp-copy-keep-date t) (tramp-password-end-of-line nil)
                  (tramp-gw-args
                   (("-o" "GlobalKnownHostsFile=/dev/null")
                    ("-o" "UserKnownHostsFile=/dev/null")
                    ("-o" "StrictHostKeyChecking=no"))
                   )
                  (tramp-default-port 22))
                 ("scpx" (tramp-login-program "ssh")
                  (tramp-login-args
                   (("%h") ("-l" "%u") ("-p" "%p")
                    ("-e" "none" "-t" "-t" "/bin/sh"))
                   )
                  (tramp-remote-sh "/bin/sh") (tramp-copy-program "scp")
                  (tramp-copy-args (("-p" "%k"))) (tramp-copy-keep-date t)
                  (tramp-password-end-of-line nil)
                  (tramp-gw-args
                   (("-o" "GlobalKnownHostsFile=/dev/null")
                    ("-o" "UserKnownHostsFile=/dev/null")
                    ("-o" "StrictHostKeyChecking=no"))
                   )
                  (tramp-default-port 22))
                 ("sshx" (tramp-login-program "ssh")
                  (tramp-login-args
                   (("%h") ("-l" "%u") ("-p" "%p")
                    ("-e" "none" "-t" "-t" "/bin/sh"))
                   )
                  (tramp-remote-sh "/bin/sh") (tramp-copy-program nil)
                  (tramp-copy-args nil) (tramp-copy-keep-date nil)
                  (tramp-password-end-of-line nil)
                  (tramp-gw-args
                   (("-o" "GlobalKnownHostsFile=/dev/null")
                    ("-o" "UserKnownHostsFile=/dev/null")
                    ("-o" "StrictHostKeyChecking=no"))
                   )
                  (tramp-default-port 22))
                 ("krlogin" (tramp-login-program "krlogin")
                  (tramp-login-args (("%h") ("-l" "%u") ("-x")))
                  (tramp-remote-sh "/bin/sh") (tramp-copy-program nil)
                  (tramp-copy-args nil) (tramp-copy-keep-date nil)
                  (tramp-password-end-of-line nil))
                 ("plink" (tramp-login-program "plink")
                  (tramp-login-args (("%h") ("-l" "%u") ("-P" "%p") ("-ssh")))
                  (tramp-remote-sh "/bin/sh") (tramp-copy-program nil)
                  (tramp-copy-args nil) (tramp-copy-keep-date nil)
                  (tramp-password-end-of-line "xy") (tramp-default-port 22))
                 ("plink1" (tramp-login-program "plink")
                  (tramp-login-args
                   (("%h") ("-l" "%u") ("-P" "%p") ("-1" "-ssh")))
                  (tramp-remote-sh "/bin/sh") (tramp-copy-program nil)
                  (tramp-copy-args nil) (tramp-copy-keep-date nil)
                  (tramp-password-end-of-line "xy") (tramp-default-port 22))
                 ("pscp" (tramp-login-program "plink")
                  (tramp-login-args (("%h") ("-l" "%u") ("-P" "%p") ("-ssh")))
                  (tramp-remote-sh "/bin/sh") (tramp-copy-program "pscp")
                  (tramp-copy-args (("-scp") ("-p" "%k")))
                  (tramp-copy-keep-date t) (tramp-password-end-of-line "xy")
                  (tramp-default-port 22))
                 ("psftp" (tramp-login-program "plink")
                  (tramp-login-args (("%h") ("-l" "%u") ("-P" "%p") ("-ssh")))
                  (tramp-remote-sh "/bin/sh") (tramp-copy-program "pscp")
                  (tramp-copy-args (("-psftp") ("-p" "%k")))
                  (tramp-copy-keep-date t) (tramp-password-end-of-line "xy"))
                 ("fcp" (tramp-login-program "fsh")
                  (tramp-login-args (("%h") ("-l" "%u") ("sh" "-i")))
                  (tramp-remote-sh "/bin/sh -i") (tramp-copy-program "fcp")
                  (tramp-copy-args (("-p" "%k"))) (tramp-copy-keep-date t)
                  (tramp-password-end-of-line nil))
                 )
 tramp-end-of-output "///338ae342da93fd3ecc91fe4aefec4766"
tramp-local-coding-commands '((b64 base64-encode-region base64-decode-region)
                               (uu tramp-uuencode-region
                                uudecode-decode-region)
                               (pack
"perl -e 'binmode STDIN; binmode STDOUT; print pack(q{u*}, join q{}, <>)'" "perl -e 'binmode STDIN; binmode STDOUT; print unpack(q{u*}, join q{}, <>)'")
                               )
 tramp-remote-coding-commands '((b64 "mimencode -b" "mimencode -u -b")
                                (b64 "mmencode -b" "mmencode -u -b")
                                (b64 "recode data..base64"
                                 "recode base64..data")
                                (b64 tramp-perl-encode-with-module
                                 tramp-perl-decode-with-module)
                                (b64 tramp-perl-encode tramp-perl-decode)
                                (uu "uuencode xxx" "uudecode -o /dev/stdout")
                                (uu "uuencode xxx" "uudecode -o -")
                                (uu "uuencode xxx" "uudecode -p")
                                (uu "uuencode xxx" tramp-uudecode)
                                (pack
"perl -e 'binmode STDIN; binmode STDOUT; print pack(q{u*}, join q{}, <>)'" "perl -e 'binmode STDIN; binmode STDOUT; print unpack(q{u*}, join q{}, <>)'")
                                )
tramp-actions-before-shell '((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)
                              )
 tramp-actions-copy-out-of-band '((tramp-password-prompt-regexp
                                   tramp-action-password)
                                  (tramp-wrong-passwd-regexp
                                   tramp-action-permission-denied)
                                  (tramp-copy-failed-regexp
                                   tramp-action-permission-denied)
                                  (tramp-process-alive-regexp
                                   tramp-action-out-of-band)
                                  )
 tramp-terminal-type "dumb"
tramp-shell-prompt-pattern "(base64-decode-string \"XlteIyQlPgpdKlsjJCU+XSAqXCgbXFtbMC05O10qW2EtekEtWl0gKlwpKg==\""
 tramp-backup-directory-alist nil
tramp-cache-data '(([cl-struct-tramp-file-name "pscp" "ywb" "219.223.179.102"
                      nil]
                     ("uname" "CYGWIN_NT-5.1 1.5.24(0.156/4/2)")
                     ("default-remote-path" "/bin:/usr/bin") ("test" "test")
                     ("/bin" t) ("/usr/bin" t) ("/usr/sbin" t)
                     ("/usr/local/bin" t) ("/local/bin" nil)
                     ("/local/freeware/bin" nil) ("/local/gnu/bin" nil)
                     ("/usr/freeware/bin" nil) ("/usr/pkg/bin" nil)
                     ("/usr/contrib/bin" nil) ("stat" "\\stat")
                     ("ls" "/bin/ls") ("id" "/bin/id") ("gid-string" "None")
                     ("file-exists" "test -e") ("gid-integer" 513)
                     ("perl" "\\perl") ("local-encoding" base64-encode-region)
                     ("local-decoding" base64-decode-region)
                     ("remote-encoding" tramp-perl-encode-with-module)
                     ("remote-decoding" tramp-perl-decode-with-module))
                    ([cl-struct-tramp-file-name "pscp" "ywb" "localhost" nil]
                     ("uname" "CYGWIN_NT-5.1 1.5.24(0.156/4/2)")
                     ("default-remote-path" "/bin:/usr/bin") ("test" "test")
                     ("/bin" t) ("/usr/bin" t) ("/usr/sbin" t)
                     ("/usr/local/bin" t) ("/local/bin" nil)
                     ("/local/freeware/bin" nil) ("/local/gnu/bin" nil)
                     ("/usr/freeware/bin" nil) ("/usr/pkg/bin" nil)
                     ("/usr/contrib/bin" nil) ("file-exists" "test -e")
                     ("stat" "\\stat") ("id" "/bin/id") ("gid-integer" 513)
                     ("ls" "/bin/ls") ("gid-string" "None") ("perl" "\\perl")
                     ("local-encoding" base64-encode-region)
                     ("local-decoding" base64-decode-region)
                     ("remote-encoding" tramp-perl-encode-with-module)
                     ("remote-decoding" tramp-perl-decode-with-module))
                    )
 shell-prompt-pattern "^[^#$%>\n]*[#$%>] *"
 backup-by-copying nil
 backup-by-copying-when-linked nil
 backup-by-copying-when-mismatch nil
 backup-by-copying-when-privileged-mismatch 200
 password-cache t
 password-cache-expiry 16
 backup-directory-alist nil
file-name-handler-alist '(("\\.Z\\(~\\|\\.~[0-9]+~\\)?\\'\\|\\.bz2\\'\\|\\.tbz\\'\\|\\.tgz\\'\\|\\.g?z\\(~\\|\\.~[0-9]+~\\)?\\'\\|\\.dz\\'" . jka-compr-handler)
                           ("\\`/[^/:]+:" . tramp-file-name-handler)
                           ("\\`/:" . file-name-non-special))
 )




reply via email to

[Prev in Thread] Current Thread [Next in Thread]