|
From: | Wagemans, Peter |
Subject: | ntemacs and tramp 2.1.7, 100% CPU problem |
Date: | Fri, 8 Dec 2006 12:51:21 +0100 |
I'm having problems trying to get tramp 2.1.7 working with ntemacs,
versions [GNU Emacs 21.3.50.1 (i386-mingw-nt5.0.2195) of 2005-01-30 on
NONIQPC] and [GNU Emacs 22.0.50.1 (i386-mingw-nt5.0.2195) of
2006-10-16 on DTOP].
When tramp is loading, I end up with ntemacs using 100% CPU.
The problem during loading can be avoided by making the following stop
in the debugger and continue from there (by typing "c" twice):
(debug-on-entry 'start-process-shell-command)
The 100% CPU behaviour may surface again later in a session.
A traceback from start-process-shell-command is reproduced below.
Emacs appears to be encountering the following during load of
tramp-util.el:
(unless (tramp-exists-file-name-handler
'start-process-shell-command "" nil "ls")
(defadvice start-process-shell-command
...
and tramp-exists-file-name-handler creates a subprocess running
ls. (Cygwin including ls is available on this PC.) I haven't tried to
analyse why tramp-exists-file-name-handler is executing this command.
Without the debug breakpoint, Emacs ends up thinking it still has such
a subprocess when according to sysinternals procexp the subprocess no
longer exists. There could be a problem in ntemacs with subprocess
(IO) handling, but it would be nice if the new version of tramp could
avoid consistently hitting this problem (old versions didn't).
Any ideas on how to solve or avoid this problem?
Regards,
Peter Wagemans
------------------------------------------------------------------------
Full backtrace (with byte-code strings replaced by "..."):
* start-process-shell-command("" nil "ls")
apply(start-process-shell-command ("" nil "ls"))
(eq (apply operation args) operation)
(let ((buffer-file-name "/") (fnha file-name-handler-alist) (check-file-name-operation operation) (file-name-handler-alist ...)) (eq (apply operation args) operation))
(condition-case nil (let (... ... ... ...) (eq ... operation)) (error nil))
tramp-exists-file-name-handler(start-process-shell-command "" nil "ls")
(if (tramp-exists-file-name-handler (quote start-process-shell-command) "" nil "ls") nil (defadvice start-process-shell-command (around tramp-advice-start-process-shell-command activate) "Invoke `tramp-handle-start-process-shell-command' for Tramp files." (if ... ... ad-do-it)) (add-hook (quote tramp-util-unload-hook) (quote ...)))
(unless (tramp-exists-file-name-handler (quote start-process-shell-command) "" nil "ls") (defadvice start-process-shell-command (around tramp-advice-start-process-shell-command activate) "Invoke `tramp-handle-start-process-shell-command' for Tramp files." (if ... ... ad-do-it)) (add-hook (quote tramp-util-unload-hook) (quote ...)))
eval-buffer(#<buffer *load*<7>> nil "f:/usr/local/emacs/ntemacs22/lisp/net/tramp-util.el" nil t) ; Reading at buffer position 5745
load-with-code-conversion("f:/usr/local/emacs/ntemacs22/lisp/net/tramp-util.el" "f:/usr/local/emacs/ntemacs22/lisp/net/tramp-util.el" nil t)
require(tramp-util)
(progn (let (...) (require feature) (add-hook ... ...)) (unless (memq system-type ...) (require ...) (add-hook ... ...)) (require (quote tramp-util)) (add-hook (quote tramp-unload-hook) (quote ...)))
eval((progn (let (...) (require feature) (add-hook ... ...)) (unless (memq system-type ...) (require ...) (add-hook ... ...)) (require (quote tramp-util)) (add-hook (quote tramp-unload-hook) (quote ...))))
do-after-load-evaluation("f:/usr/local/emacs/ntemacs22/lisp/net/tramp.el")
load-with-code-conversion("f:/usr/local/emacs/ntemacs22/lisp/net/tramp.el" "f:/usr/local/emacs/ntemacs22/lisp/net/tramp.el" nil nil)
(tramp-message key 7 "%s %s" property value)
(condition-case nil (tramp-message key 7 "%s %s" property value) (error nil))
(let ((hash ...)) (puthash property value hash) (condition-case nil (tramp-message key 7 "%s %s" property value) (error nil)) value)
tramp-set-connection-property([cl-struct-tramp-file-name "plink" "root" "abz-ldap" nil] "uname" "Linux 2.6.9-5.ELsmp")
(while (setq item (pop element)) (tramp-set-connection-property key (pop item) (car item)))
(while (setq element (pop list)) (setq key (pop element)) (while (setq item ...) (tramp-set-connection-property key ... ...)))
(let ((list ...) element key item) (while (setq element ...) (setq key ...) (while ... ...)))
(save-current-buffer (set-buffer temp-buffer) (insert-file-contents tramp-persistency-file-name) (let (... element key item) (while ... ... ...)))
(with-current-buffer temp-buffer (insert-file-contents tramp-persistency-file-name) (let (... element key item) (while ... ... ...)))
(unwind-protect (with-current-buffer temp-buffer (insert-file-contents tramp-persistency-file-name) (let ... ...)) (and (buffer-name temp-buffer) (kill-buffer temp-buffer)))
(let ((temp-buffer ...)) (unwind-protect (with-current-buffer temp-buffer ... ...) (and ... ...)))
(with-temp-buffer (insert-file-contents tramp-persistency-file-name) (let (... element key item) (while ... ... ...)))
(condition-case err (with-temp-buffer (insert-file-contents tramp-persistency-file-name) (let ... ...)) (file-error (clrhash tramp-cache-data)) (error (message "%s" ...) (clrhash tramp-cache-data)))
(progn (condition-case err (with-temp-buffer ... ...) (file-error ...) (error ... ...)))
(if load-in-progress (progn (condition-case err ... ... ...)))
(when load-in-progress (condition-case err (with-temp-buffer ... ...) (file-error ...) (error ... ...)))
eval-buffer(#<buffer *load*<6>> nil "f:/usr/local/emacs/ntemacs22/lisp/net/tramp-cache.el" nil t) ; Reading at buffer position 12214
load-with-code-conversion("f:/usr/local/emacs/ntemacs22/lisp/net/tramp-cache.el" "f:/usr/local/emacs/ntemacs22/lisp/net/tramp-cache.el" nil t)
require(tramp-cache)
eval-buffer(#<buffer *load*<5>> nil "f:/usr/local/emacs/ntemacs22/lisp/net/tramp.el" nil t) ; Reading at buffer position 3519
load-with-code-conversion("f:/usr/local/emacs/ntemacs22/lisp/net/tramp.el" "f:/usr/local/emacs/ntemacs22/lisp/net/tramp.el" nil nil)
(tramp-message key 7 "%s %s" property value)
(condition-case nil (tramp-message key 7 "%s %s" property value) (error nil))
(let ((hash ...)) (puthash property value hash) (condition-case nil (tramp-message key 7 "%s %s" property value) (error nil)) value)
tramp-set-connection-property([cl-struct-tramp-file-name "plink" "root" "abz-ldap" nil] "uname" "Linux 2.6.9-5.ELsmp")
(while (setq item (pop element)) (tramp-set-connection-property key (pop item) (car item)))
(while (setq element (pop list)) (setq key (pop element)) (while (setq item ...) (tramp-set-connection-property key ... ...)))
(let ((list ...) element key item) (while (setq element ...) (setq key ...) (while ... ...)))
(save-current-buffer (set-buffer temp-buffer) (insert-file-contents tramp-persistency-file-name) (let (... element key item) (while ... ... ...)))
(with-current-buffer temp-buffer (insert-file-contents tramp-persistency-file-name) (let (... element key item) (while ... ... ...)))
(unwind-protect (with-current-buffer temp-buffer (insert-file-contents tramp-persistency-file-name) (let ... ...)) (and (buffer-name temp-buffer) (kill-buffer temp-buffer)))
(let ((temp-buffer ...)) (unwind-protect (with-current-buffer temp-buffer ... ...) (and ... ...)))
(with-temp-buffer (insert-file-contents tramp-persistency-file-name) (let (... element key item) (while ... ... ...)))
(condition-case err (with-temp-buffer (insert-file-contents tramp-persistency-file-name) (let ... ...)) (file-error (clrhash tramp-cache-data)) (error (message "%s" ...) (clrhash tramp-cache-data)))
(progn (condition-case err (with-temp-buffer ... ...) (file-error ...) (error ... ...)))
(if load-in-progress (progn (condition-case err ... ... ...)))
(when load-in-progress (condition-case err (with-temp-buffer ... ...) (file-error ...) (error ... ...)))
eval-buffer(#<buffer *load*<4>> nil "f:/usr/local/emacs/ntemacs22/lisp/net/tramp-cache.el" nil t) ; Reading at buffer position 12214
load-with-code-conversion("f:/usr/local/emacs/ntemacs22/lisp/net/tramp-cache.el" "f:/usr/local/emacs/ntemacs22/lisp/net/tramp-cache.el" nil t)
require(tramp-cache)
eval-buffer(#<buffer *load*<3>> nil "f:/usr/local/emacs/ntemacs22/lisp/net/tramp.el" nil t) ; Reading at buffer position 3519
load-with-code-conversion("f:/usr/local/emacs/ntemacs22/lisp/net/tramp.el" "f:/usr/local/emacs/ntemacs22/lisp/net/tramp.el" nil nil)
(tramp-message key 7 "%s %s" property value)
(condition-case nil (tramp-message key 7 "%s %s" property value) (error nil))
(let ((hash ...)) (puthash property value hash) (condition-case nil (tramp-message key 7 "%s %s" property value) (error nil)) value)
tramp-set-connection-property([cl-struct-tramp-file-name "plink" "root" "abz-ldap" nil] "uname" "Linux 2.6.9-5.ELsmp")
(while (setq item (pop element)) (tramp-set-connection-property key (pop item) (car item)))
(while (setq element (pop list)) (setq key (pop element)) (while (setq item ...) (tramp-set-connection-property key ... ...)))
(let ((list ...) element key item) (while (setq element ...) (setq key ...) (while ... ...)))
(save-current-buffer (set-buffer temp-buffer) (insert-file-contents tramp-persistency-file-name) (let (... element key item) (while ... ... ...)))
(with-current-buffer temp-buffer (insert-file-contents tramp-persistency-file-name) (let (... element key item) (while ... ... ...)))
(unwind-protect (with-current-buffer temp-buffer (insert-file-contents tramp-persistency-file-name) (let ... ...)) (and (buffer-name temp-buffer) (kill-buffer temp-buffer)))
(let ((temp-buffer ...)) (unwind-protect (with-current-buffer temp-buffer ... ...) (and ... ...)))
(with-temp-buffer (insert-file-contents tramp-persistency-file-name) (let (... element key item) (while ... ... ...)))
(condition-case err (with-temp-buffer (insert-file-contents tramp-persistency-file-name) (let ... ...)) (file-error (clrhash tramp-cache-data)) (error (message "%s" ...) (clrhash tramp-cache-data)))
(progn (condition-case err (with-temp-buffer ... ...) (file-error ...) (error ... ...)))
(if load-in-progress (progn (condition-case err ... ... ...)))
(when load-in-progress (condition-case err (with-temp-buffer ... ...) (file-error ...) (error ... ...)))
eval-buffer(#<buffer *load*<2>> nil "f:/usr/local/emacs/ntemacs22/lisp/net/tramp-cache.el" nil t) ; Reading at buffer position 12214
load-with-code-conversion("f:/usr/local/emacs/ntemacs22/lisp/net/tramp-cache.el" "f:/usr/local/emacs/ntemacs22/lisp/net/tramp-cache.el" nil t)
require(tramp-cache)
eval-buffer(#<buffer *load*> nil "f:/usr/local/emacs/ntemacs22/lisp/net/tramp.el" nil t) ; Reading at buffer position 3519
load-with-code-conversion("f:/usr/local/emacs/ntemacs22/lisp/net/tramp.el" "f:/usr/local/emacs/ntemacs22/lisp/net/tramp.el" nil nil)
tramp-file-name-handler(substitute-in-file-name "/address@hidden:")
substitute-in-file-name("/address@hidden:")
byte-code("..." [rfn-eshadow-overlay end start mid goal pos substitute-in-file-name minibuffer-contents overlay-end minibuffer-prompt-end nil (byte-code "..." [pos substitute-in-file-name buffer-substring-no-properties] 4) ((error)) 2 move-overlay] 5)
rfn-eshadow-update-overlay()
run-hooks(post-command-hook)
read-file-name("Find file: " nil "F:\\usr\\local\\emacs\\ntemacs22\\bin/" nil)
find-file-read-args("Find file: " nil)
call-interactively(find-file)
------------------------------------------------------------------------
[Prev in Thread] | Current Thread | [Next in Thread] |