emacs-devel
[Top][All Lists]
Advanced

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

Re: TRAMP VC optimization fails: non-TRAMP filenames handled incorrectly


From: Daniel Pittman
Subject: Re: TRAMP VC optimization fails: non-TRAMP filenames handled incorrectly in async operations.
Date: Fri, 29 Mar 2019 12:36:21 +0000

On Wed, Mar 27, 2019 at 5:49 PM Michael Albinus <address@hidden> wrote:
Daniel Pittman <address@hidden> writes:

In your initial message you've said, that the problem happened inside
tramp-vc-file-name-handler. Is this always the case? If yes, I could
simply catch errors inside this function, and in case of, throw away all
results. This would fall back to the non-optimized solution by default.

As far as I can tell, yes, that is correct.  In addition to caching errors, testing if the filename returned is actually a tramp filename and aborting on that would also work, as far as I can tell.
 
Since I cannot reproduce the problem (yet), do you have a backtrace?

Sure, please see it follow.  I have censored the content of a small number of strings, but this is replacing a standard ASCII letter with 'X' so should have no semantic effect.  Sorry to have to do that.  Fair warning, it is ... long. 

This actually has multiple backtraces, because the error causing process triggers while displaying the first error, but I included everything because truth in advertising or something.

The most interesting part is at the very start, where my `revert-file` operation on a remote file triggers a `vc-refresh-state`, which ends up causing `tramp-send-string` to run `process-send-string`, and then a timer fires that drives the "deferred" third party library [1] to move on to running a background command, using the timeout(1) and p4(1) binaries to grab some state information.  

That p4 call is driven from some internal code here at Google, but I don't think it is mandatory: as you know, if the timer fires, any code attached to the timer could fire, and make the same calls.

Anyway, once you skip over the deferred code, you get to:

apply(start-process "*deferred:*/usr/bin/timeout*:41" " *deferred:*/usr/bin/timeout*:41" "/usr/bin/timeout" ("1s" "p4" "-zprog=google-piper.el" "--format=%clientName%\n%clientRoot%" "info"))

That in term, a few steps later calls make-process, and that calls

  tramp-vc-file-name-handler(expand-file-name "~" "/gssh:slippycheeze.X.XXXXXXXX.XXX:/XXXXXX/XXX/XXXX...")

...and there we have our problem start.


  backtrace()
  tramp-error(nil user-error "Not a Tramp file name: \"%s\"" "~")
  apply(tramp-error nil user-error "Not a Tramp file name: \"%s\"" "~")
  tramp-user-error(nil "Not a Tramp file name: \"%s\"" "~")
  (if (tramp-tramp-file-p name) nil (tramp-user-error nil "Not a Tramp file name: \"%s\"" name))
  (unless (tramp-tramp-file-p name) (tramp-user-error nil "Not a Tramp file name: \"%s\"" name))
  (progn (unless (tramp-tramp-file-p name) (tramp-user-error nil "Not a Tramp file name: \"%s\"" name)) (if (not (string-match (nth 0 tramp-file-name-structure) name)) (error "`tramp-file-name-structure' didn't match!") (let ((method (match-string (nth 1 tramp-file-name-structure) name)) (user (match-string (nth 2 tramp-file-name-structure) name)) (host (match-string (nth 3 tramp-file-name-structure) name)) (localname (match-string (nth 4 tramp-file-name-structure) name)) (hop (match-string (nth 5 tramp-file-name-structure) name)) domain port v) (when user (when (string-match tramp-user-with-domain-regexp user) (setq domain (match-string 2 user) user (match-string 1 user)))) (when host (when (string-match tramp-host-with-port-regexp host) (setq port (match-string 2 host) host (match-string 1 host))) (when (string-match tramp-prefix-ipv6-regexp host) (setq host (replace-match "" nil t host))) (when (string-match tramp-postfix-ipv6-regexp host) (setq host (replace-match "" nil t host)))) (unless nodefault (when hop (setq v (tramp-dissect-hop-name hop) hop (and hop (tramp-make-tramp-hop-name v)))) (let ((tramp-default-host (or ... tramp-default-host))) (setq method (tramp-find-method method user host) user (tramp-find-user method user host) host (tramp-find-host method user host) hop (and hop (format-spec hop ...))))) (prog1 (setq v (make-tramp-file-name :method method :user user :domain domain :host host :port port :localname localname :hop hop)) (when (and hop (or (not ...) (tramp-get-method-parameter v ...))) (tramp-user-error v "Method `%s' is not supported for multi-hops." method))))))
  (unwind-protect (progn (unless (tramp-tramp-file-p name) (tramp-user-error nil "Not a Tramp file name: \"%s\"" name)) (if (not (string-match (nth 0 tramp-file-name-structure) name)) (error "`tramp-file-name-structure' didn't match!") (let ((method (match-string (nth 1 tramp-file-name-structure) name)) (user (match-string (nth 2 tramp-file-name-structure) name)) (host (match-string (nth 3 tramp-file-name-structure) name)) (localname (match-string (nth 4 tramp-file-name-structure) name)) (hop (match-string (nth 5 tramp-file-name-structure) name)) domain port v) (when user (when (string-match tramp-user-with-domain-regexp user) (setq domain (match-string 2 user) user (match-string 1 user)))) (when host (when (string-match tramp-host-with-port-regexp host) (setq port (match-string 2 host) host (match-string 1 host))) (when (string-match tramp-prefix-ipv6-regexp host) (setq host (replace-match "" nil t host))) (when (string-match tramp-postfix-ipv6-regexp host) (setq host (replace-match "" nil t host)))) (unless nodefault (when hop (setq v (tramp-dissect-hop-name hop) hop (and hop ...))) (let ((tramp-default-host ...)) (setq method (tramp-find-method method user host) user (tramp-find-user method user host) host (tramp-find-host method user host) hop (and hop ...)))) (prog1 (setq v (make-tramp-file-name :method method :user user :domain domain :host host :port port :localname localname :hop hop)) (when (and hop (or ... ...)) (tramp-user-error v "Method `%s' is not supported for multi-hops." method)))))) (set-match-data save-match-data-internal 'evaporate))
  (let ((save-match-data-internal (match-data))) (unwind-protect (progn (unless (tramp-tramp-file-p name) (tramp-user-error nil "Not a Tramp file name: \"%s\"" name)) (if (not (string-match (nth 0 tramp-file-name-structure) name)) (error "`tramp-file-name-structure' didn't match!") (let ((method (match-string ... name)) (user (match-string ... name)) (host (match-string ... name)) (localname (match-string ... name)) (hop (match-string ... name)) domain port v) (when user (when (string-match tramp-user-with-domain-regexp user) (setq domain ... user ...))) (when host (when (string-match tramp-host-with-port-regexp host) (setq port ... host ...)) (when (string-match tramp-prefix-ipv6-regexp host) (setq host ...)) (when (string-match tramp-postfix-ipv6-regexp host) (setq host ...))) (unless nodefault (when hop (setq v ... hop ...)) (let (...) (setq method ... user ... host ... hop ...))) (prog1 (setq v (make-tramp-file-name :method method :user user :domain domain :host host :port port :localname localname :hop hop)) (when (and hop ...) (tramp-user-error v "Method `%s' is not supported for multi-hops." method)))))) (set-match-data save-match-data-internal 'evaporate)))
  (save-match-data (unless (tramp-tramp-file-p name) (tramp-user-error nil "Not a Tramp file name: \"%s\"" name)) (if (not (string-match (nth 0 tramp-file-name-structure) name)) (error "`tramp-file-name-structure' didn't match!") (let ((method (match-string (nth 1 tramp-file-name-structure) name)) (user (match-string (nth 2 tramp-file-name-structure) name)) (host (match-string (nth 3 tramp-file-name-structure) name)) (localname (match-string (nth 4 tramp-file-name-structure) name)) (hop (match-string (nth 5 tramp-file-name-structure) name)) domain port v) (when user (when (string-match tramp-user-with-domain-regexp user) (setq domain (match-string 2 user) user (match-string 1 user)))) (when host (when (string-match tramp-host-with-port-regexp host) (setq port (match-string 2 host) host (match-string 1 host))) (when (string-match tramp-prefix-ipv6-regexp host) (setq host (replace-match "" nil t host))) (when (string-match tramp-postfix-ipv6-regexp host) (setq host (replace-match "" nil t host)))) (unless nodefault (when hop (setq v (tramp-dissect-hop-name hop) hop (and hop (tramp-make-tramp-hop-name v)))) (let ((tramp-default-host (or ... tramp-default-host))) (setq method (tramp-find-method method user host) user (tramp-find-user method user host) host (tramp-find-host method user host) hop (and hop (format-spec hop ...))))) (prog1 (setq v (make-tramp-file-name :method method :user user :domain domain :host host :port port :localname localname :hop hop)) (when (and hop (or (not ...) (tramp-get-method-parameter v ...))) (tramp-user-error v "Method `%s' is not supported for multi-hops." method))))))
  tramp-dissect-file-name("~")
  (let* ((v (tramp-dissect-file-name filename)) (method (tramp-file-name-method v)) (user (tramp-file-name-user v)) (domain (tramp-file-name-domain v)) (host (tramp-file-name-host v)) (port (tramp-file-name-port v)) (localname (tramp-file-name-localname v)) (hop (tramp-file-name-hop v))) (ignore method user domain host port localname hop) (cond ((and fn (memq operation '(file-exists-p file-readable-p))) (add-to-list 'tramp-vc-registered-file-names localname 'append) nil) ((and fn (eq operation 'process-file) 0)) ((and fn (eq operation 'start-file-process) nil)) (fn (save-match-data (apply (cdr fn) args))) (t (tramp-run-real-handler operation args))))
  (with-parsed-tramp-file-name filename nil (cond ((and fn (memq operation '(file-exists-p file-readable-p))) (add-to-list 'tramp-vc-registered-file-names localname 'append) nil) ((and fn (eq operation 'process-file) 0)) ((and fn (eq operation 'start-file-process) nil)) (fn (save-match-data (apply (cdr fn) args))) (t (tramp-run-real-handler operation args))))
  (let ((filename (tramp-replace-environment-variables (apply #'tramp-file-name-for-operation operation args))) (fn (assoc operation tramp-sh-file-name-handler-alist))) (with-parsed-tramp-file-name filename nil (cond ((and fn (memq operation '(file-exists-p file-readable-p))) (add-to-list 'tramp-vc-registered-file-names localname 'append) nil) ((and fn (eq operation 'process-file) 0)) ((and fn (eq operation 'start-file-process) nil)) (fn (save-match-data (apply (cdr fn) args))) (t (tramp-run-real-handler operation args)))))
  (progn (let ((filename (tramp-replace-environment-variables (apply #'tramp-file-name-for-operation operation args))) (fn (assoc operation tramp-sh-file-name-handler-alist))) (with-parsed-tramp-file-name filename nil (cond ((and fn (memq operation '...)) (add-to-list 'tramp-vc-registered-file-names localname 'append) nil) ((and fn (eq operation 'process-file) 0)) ((and fn (eq operation 'start-file-process) nil)) (fn (save-match-data (apply (cdr fn) args))) (t (tramp-run-real-handler operation args))))))
  (unwind-protect (progn (let ((filename (tramp-replace-environment-variables (apply #'tramp-file-name-for-operation operation args))) (fn (assoc operation tramp-sh-file-name-handler-alist))) (with-parsed-tramp-file-name filename nil (cond ((and fn (memq operation ...)) (add-to-list 'tramp-vc-registered-file-names localname 'append) nil) ((and fn (eq operation ...) 0)) ((and fn (eq operation ...) nil)) (fn (save-match-data (apply ... args))) (t (tramp-run-real-handler operation args)))))) (set-match-data save-match-data-internal 'evaporate))
  (let ((save-match-data-internal (match-data))) (unwind-protect (progn (let ((filename (tramp-replace-environment-variables (apply ... operation args))) (fn (assoc operation tramp-sh-file-name-handler-alist))) (with-parsed-tramp-file-name filename nil (cond ((and fn ...) (add-to-list ... localname ...) nil) ((and fn ... 0)) ((and fn ... nil)) (fn (save-match-data ...)) (t (tramp-run-real-handler operation args)))))) (set-match-data save-match-data-internal 'evaporate)))
  (save-match-data (let ((filename (tramp-replace-environment-variables (apply #'tramp-file-name-for-operation operation args))) (fn (assoc operation tramp-sh-file-name-handler-alist))) (with-parsed-tramp-file-name filename nil (cond ((and fn (memq operation '...)) (add-to-list 'tramp-vc-registered-file-names localname 'append) nil) ((and fn (eq operation 'process-file) 0)) ((and fn (eq operation 'start-file-process) nil)) (fn (save-match-data (apply (cdr fn) args))) (t (tramp-run-real-handler operation args))))))
  tramp-vc-file-name-handler(expand-file-name "~" "/gssh:slippycheeze.X.XXXXXXXX.com:/XXXXXX/XXX/XXXX...")
  make-process(:name "*deferred:*/usr/bin/timeout*:42" :buffer " *deferred:*/usr/bin/timeout*:42" :command ("/usr/bin/timeout" "5s" "p4" "-zprog=google-piper.el" "--format=%depotFile%\n%clientFile%\n%action%\n%change..." "fstat" "--" "/gssh:slippycheeze.X.XXXXXXXX.XXX:/XXXXXX/XXX/XXXX..."))
  apply(make-process (:name "*deferred:*/usr/bin/timeout*:42" :buffer " *deferred:*/usr/bin/timeout*:42" :command ("/usr/bin/timeout" "5s" "p4" "-zprog=google-piper.el" "--format=%depotFile%\n%clientFile%\n%action%\n%change..." "fstat" "--" "/gssh:slippycheeze.X.XXXXXXXX.XXX:/XXXXXX/XXX/XXXX...")))
  start-process("*deferred:*/usr/bin/timeout*:42" " *deferred:*/usr/bin/timeout*:42" "/usr/bin/timeout" "5s" "p4" "-zprog=google-piper.el" "--format=%depotFile%\n%clientFile%\n%action%\n%change..." "fstat" "--" "/gssh:slippycheeze.X.XXXXXXXX.XXX:/XXXXXX/XXX/XXXX...")
  apply(start-process "*deferred:*/usr/bin/timeout*:42" " *deferred:*/usr/bin/timeout*:42" "/usr/bin/timeout" ("5s" "p4" "-zprog=google-piper.el" "--format=%depotFile%\n%clientFile%\n%action%\n%change..." "fstat" "--" "/gssh:slippycheeze.X.XXXXXXXX.XXX:/XXXXXX/XXX/XXXX..."))
  (if (null (car args)) (apply f proc-name buf-name command nil) (apply f proc-name buf-name command args))
  (setq proc (if (null (car args)) (apply f proc-name buf-name command nil) (apply f proc-name buf-name command args)))
  (let ((default-directory pwd) (process-environment env) (process-connection-type con-type)) (setq proc (if (null (car args)) (apply f proc-name buf-name command nil) (apply f proc-name buf-name command args))) (set-process-sentinel proc #'(lambda (_proc event) (cond ((string-match "exited abnormally" event) (let (...) (kill-buffer proc-buf) (deferred:post-task nd ... msg))) ((equal event "finished\n") (deferred:post-task nd 'ok proc-buf))))) (progn (or (and (memq (type-of nd) cl-struct-deferred-tags) t) (signal 'wrong-type-argument (list 'deferred nd))) (let* ((v nd)) (aset v 3 #'(lambda (x) (deferred:default-cancel x) (if proc (progn ... ...)))))))
  (condition-case err (let ((default-directory pwd) (process-environment env) (process-connection-type con-type)) (setq proc (if (null (car args)) (apply f proc-name buf-name command nil) (apply f proc-name buf-name command args))) (set-process-sentinel proc #'(lambda (_proc event) (cond ((string-match "exited abnormally" event) (let ... ... ...)) ((equal event "finished\n") (deferred:post-task nd ... proc-buf))))) (progn (or (and (memq (type-of nd) cl-struct-deferred-tags) t) (signal 'wrong-type-argument (list 'deferred nd))) (let* ((v nd)) (aset v 3 #'(lambda (x) (deferred:default-cancel x) (if proc ...)))))) (error (deferred:post-task nd 'ng err)))
  (closure ((proc) (proc-buf . #<buffer  *deferred:*/usr/bin/timeout*:42>) (nd . #s(deferred :callback deferred:default-callback :errorback deferred:default-errorback :cancel deferred:default-cancel :next #s(deferred :callback (closure ... ... ...) :errorback deferred:default-errorback :cancel (closure ... ... ... ...) :next #s(deferred :callback ... :errorback deferred:default-errorback :cancel deferred:default-cancel :next ... :status nil :value nil) :status nil :value nil) :status nil :value nil)) (con-type . t) (env "TERM=dumb" "P4CONFIG=.p4config" "MANPATH=/Users/slippycheeze/share/man:/User..." "INFOPATH=/Users/slippycheeze/share/info:/Us..." "LANG=en_US.UTF-8" "XPC_FLAGS=0x0" "SECURITYSESSIONID=XXXXX" "USER=slippycheeze" "COMMAND_MODE=unix2003" "XPC_SERVICE_NAME=org.gnu.Emacs.15324" "DISPLAY=/private/tmp/com.apple.launchd.O28B..." "LOGNAME=slippycheeze" "PATH=/Users/slippycheeze/.bagpipe:/Users/sl..." "SSH_AUTH_SOCK=/private/tmp/com.apple.launch..." "Apple_PubSub_Socket_Render=/private/tmp/com..." "SHELL=/Users/slippycheeze/homebrew/bin/zsh" "HOME=/Users/slippycheeze" "__CF_USER_TEXT_ENCODING=0x64DE5:0x0:0x0" "TMPDIR=/var/folders/bc/tpg4l8wj7gg2722p9384...") (pwd . "/gssh:slippycheeze.X.XXXXXXXX.com:/XXXXXX/X...") (buf-name . " *deferred:*/usr/bin/timeout*:42") (proc-name . "*deferred:*/usr/bin/timeout*:42") (uid . 42) (d . #s(deferred :callback deferred:default-callback :errorback deferred:default-errorback :cancel deferred:default-cancel :next #s(deferred :callback #0 :errorback deferred:default-errorback :cancel deferred:default-cancel :next nil :status nil :value nil) :status nil :value nil)) (args "5s" "p4" "-zprog=google-piper.el" "--format=%depotFile%\n%clientFile%\n%action%\n..." "fstat" "--" "/gssh:slippycheeze.X.XXXXXXXX.com:/XXXXXX/X...") (command . "/usr/bin/timeout") (f . start-process) cl-struct-deferred-tags t) (_x) (setq proc-buf (get-buffer-create buf-name)) (condition-case err (let ((default-directory pwd) (process-environment env) (process-connection-type con-type)) (setq proc (if (null ...) (apply f proc-name buf-name command nil) (apply f proc-name buf-name command args))) (set-process-sentinel proc #'(lambda ... ...)) (progn (or (and ... t) (signal ... ...)) (let* (...) (aset v 3 ...)))) (error (deferred:post-task nd 'ng err))) nil)(nil)
  funcall((closure ((proc) (proc-buf . #<buffer  *deferred:*/usr/bin/timeout*:42>) (nd . #s(deferred :callback deferred:default-callback :errorback deferred:default-errorback :cancel deferred:default-cancel :next #s(deferred :callback (closure (... ... ... ... ... cl-struct-deferred-tags t) (buf) (prog1 ... ...)) :errorback deferred:default-errorback :cancel (closure (... ... ... ... ... ... cl-struct-deferred-tags t) (_x) (deferred:default-cancel d) (deferred:default-cancel pd)) :next #s(deferred :callback (closure ... ... ...) :errorback deferred:default-errorback :cancel deferred:default-cancel :next #s(deferred :callback deferred:default-callback :errorback ignore :cancel deferred:default-cancel :next ... :status nil :value nil) :status nil :value nil) :status nil :value nil) :status nil :value nil)) (con-type . t) (env "TERM=dumb" "P4CONFIG=.p4config" "MANPATH=/Users/slippycheeze/share/man:/Users/slipp..." "INFOPATH=/Users/slippycheeze/share/info:/Users/sli..." "LANG=en_US.UTF-8" "XPC_FLAGS=0x0" "SECURITYSESSIONID=XXXXX" "USER=slippycheeze" "COMMAND_MODE=unix2003" "XPC_SERVICE_NAME=org.gnu.Emacs.15324" "DISPLAY=/private/tmp/com.apple.launchd.O28Br4hHcs/..." "LOGNAME=slippycheeze" "PATH=/Users/slippycheeze/.bagpipe:/Users/slippyche..." "SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.Qs29e..." "Apple_PubSub_Socket_Render=/private/tmp/com.apple...." "SHELL=/Users/slippycheeze/homebrew/bin/zsh" "HOME=/Users/slippycheeze" "__CF_USER_TEXT_ENCODING=0x64DE5:0x0:0x0" "TMPDIR=/var/folders/bc/tpg4l8wj7gg2722p9384ftww00c...") (pwd . "/gssh:slippycheeze.X.XXXXXXXX.XXX:/XXXXXX/XXX/XXXX...") (buf-name . " *deferred:*/usr/bin/timeout*:42") (proc-name . "*deferred:*/usr/bin/timeout*:42") (uid . 42) (d . #s(deferred :callback deferred:default-callback :errorback deferred:default-errorback :cancel deferred:default-cancel :next #s(deferred :callback #1 :errorback deferred:default-errorback :cancel deferred:default-cancel :next nil :status nil :value nil) :status nil :value nil)) (args "5s" "p4" "-zprog=google-piper.el" "--format=%depotFile%\n%clientFile%\n%action%\n%change..." "fstat" "--" "/gssh:slippycheeze.X.XXXXXXXX.XXX:/XXXXXX/XXX/XXXX...") (command . "/usr/bin/timeout") (f . start-process) cl-struct-deferred-tags t) (_x) (setq proc-buf (get-buffer-create buf-name)) (condition-case err (let ((default-directory pwd) (process-environment env) (process-connection-type con-type)) (setq proc (if (null (car args)) (apply f proc-name buf-name command nil) (apply f proc-name buf-name command args))) (set-process-sentinel proc #'(lambda (_proc event) (cond ... ...))) (progn (or (and (memq ... cl-struct-deferred-tags) t) (signal 'wrong-type-argument (list ... nd))) (let* ((v nd)) (aset v 3 #'...)))) (error (deferred:post-task nd 'ng err))) nil) nil)
  (condition-case err (funcall f arg) ('wrong-number-of-arguments (display-warning 'deferred "Callback that takes no argument may be specified.\n..." err) (condition-case nil (funcall f) ('wrong-number-of-arguments (signal 'wrong-number-of-arguments (cdr err))))))
  deferred:call-lambda((closure ((proc) (proc-buf . #<buffer  *deferred:*/usr/bin/timeout*:42>) (nd . #s(deferred :callback deferred:default-callback :errorback deferred:default-errorback :cancel deferred:default-cancel :next #s(deferred :callback (closure (... ... ... ... ... cl-struct-deferred-tags t) (buf) (prog1 ... ...)) :errorback deferred:default-errorback :cancel (closure (... ... ... ... ... ... cl-struct-deferred-tags t) (_x) (deferred:default-cancel d) (deferred:default-cancel pd)) :next #s(deferred :callback (closure ... ... ...) :errorback deferred:default-errorback :cancel deferred:default-cancel :next #s(deferred :callback deferred:default-callback :errorback ignore :cancel deferred:default-cancel :next ... :status nil :value nil) :status nil :value nil) :status nil :value nil) :status nil :value nil)) (con-type . t) (env "TERM=dumb" "P4CONFIG=.p4config" "MANPATH=/Users/slippycheeze/share/man:/Users/slipp..." "INFOPATH=/Users/slippycheeze/share/info:/Users/sli..." "LANG=en_US.UTF-8" "XPC_FLAGS=0x0" "SECURITYSESSIONID=XXXXX" "USER=slippycheeze" "COMMAND_MODE=unix2003" "XPC_SERVICE_NAME=org.gnu.Emacs.15324" "DISPLAY=/private/tmp/com.apple.launchd.O28Br4hHcs/..." "LOGNAME=slippycheeze" "PATH=/Users/slippycheeze/.bagpipe:/Users/slippyche..." "SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.Qs29e..." "Apple_PubSub_Socket_Render=/private/tmp/com.apple...." "SHELL=/Users/slippycheeze/homebrew/bin/zsh" "HOME=/Users/slippycheeze" "__CF_USER_TEXT_ENCODING=0x64DE5:0x0:0x0" "TMPDIR=/var/folders/bc/tpg4l8wj7gg2722p9384ftww00c...") (pwd . "/gssh:slippycheeze.X.XXXXXXXX.XXX:/XXXXXX/XXX/XXXX...") (buf-name . " *deferred:*/usr/bin/timeout*:42") (proc-name . "*deferred:*/usr/bin/timeout*:42") (uid . 42) (d . #s(deferred :callback deferred:default-callback :errorback deferred:default-errorback :cancel deferred:default-cancel :next #s(deferred :callback #1 :errorback deferred:default-errorback :cancel deferred:default-cancel :next nil :status nil :value nil) :status nil :value nil)) (args "5s" "p4" "-zprog=google-piper.el" "--format=%depotFile%\n%clientFile%\n%action%\n%change..." "fstat" "--" "/gssh:slippycheeze.X.XXXXXXXX.XXX:/XXXXXX/XXX/XXXX...") (command . "/usr/bin/timeout") (f . start-process) cl-struct-deferred-tags t) (_x) (setq proc-buf (get-buffer-create buf-name)) (condition-case err (let ((default-directory pwd) (process-environment env) (process-connection-type con-type)) (setq proc (if (null (car args)) (apply f proc-name buf-name command nil) (apply f proc-name buf-name command args))) (set-process-sentinel proc #'(lambda (_proc event) (cond ... ...))) (progn (or (and (memq ... cl-struct-deferred-tags) t) (signal 'wrong-type-argument (list ... nd))) (let* ((v nd)) (aset v 3 #'...)))) (error (deferred:post-task nd 'ng err))) nil) nil)
  (let ((value (deferred:call-lambda callback arg))) (cond ((and (memq (type-of value) cl-struct-deferred-tags) t) nil (if next-deferred (deferred:set-next value next-deferred) value)) (t (if next-deferred (deferred:post-task next-deferred 'ok value) (progn (or (and (memq ... cl-struct-deferred-tags) t) (signal 'wrong-type-argument (list ... d))) (let* ((v d)) (aset v 5 'ok))) (progn (or (and (memq ... cl-struct-deferred-tags) t) (signal 'wrong-type-argument (list ... d))) (let* ((v d)) (aset v 6 value))) value))))
  (condition-case err (let ((value (deferred:call-lambda callback arg))) (cond ((and (memq (type-of value) cl-struct-deferred-tags) t) nil (if next-deferred (deferred:set-next value next-deferred) value)) (t (if next-deferred (deferred:post-task next-deferred 'ok value) (progn (or (and ... t) (signal ... ...)) (let* (...) (aset v 5 ...))) (progn (or (and ... t) (signal ... ...)) (let* (...) (aset v 6 value))) value)))) (error (cond (next-deferred (deferred:post-task next-deferred 'ng err)) (deferred:onerror (deferred:call-lambda deferred:onerror err)) (t nil (message "deferred error : %S" err) (progn (or (and (memq ... cl-struct-deferred-tags) t) (signal 'wrong-type-argument (list ... d))) (let* ((v d)) (aset v 5 'ng))) (progn (or (and (memq ... cl-struct-deferred-tags) t) (signal 'wrong-type-argument (list ... d))) (let* ((v d)) (aset v 6 err))) err))))
  (let ((debug-on-signal (or debug-on-signal deferred:debug-on-signal))) (condition-case err (let ((value (deferred:call-lambda callback arg))) (cond ((and (memq (type-of value) cl-struct-deferred-tags) t) nil (if next-deferred (deferred:set-next value next-deferred) value)) (t (if next-deferred (deferred:post-task next-deferred 'ok value) (progn (or ... ...) (let* ... ...)) (progn (or ... ...) (let* ... ...)) value)))) (error (cond (next-deferred (deferred:post-task next-deferred 'ng err)) (deferred:onerror (deferred:call-lambda deferred:onerror err)) (t nil (message "deferred error : %S" err) (progn (or (and ... t) (signal ... ...)) (let* (...) (aset v 5 ...))) (progn (or (and ... t) (signal ... ...)) (let* (...) (aset v 6 err))) err)))))
  (cond (callback (let ((debug-on-signal (or debug-on-signal deferred:debug-on-signal))) (condition-case err (let ((value (deferred:call-lambda callback arg))) (cond ((and ... t) nil (if next-deferred ... value)) (t (if next-deferred ... ... ... value)))) (error (cond (next-deferred (deferred:post-task next-deferred ... err)) (deferred:onerror (deferred:call-lambda deferred:onerror err)) (t nil (message "deferred error : %S" err) (progn ... ...) (progn ... ...) err)))))) (t (cond (next-deferred (deferred:exec-task next-deferred which arg)) ((eq which 'ok) arg) (t (deferred:resignal arg)))))
  (let ((callback (if (eq which 'ok) (progn (or (and (memq ... cl-struct-deferred-tags) t) (signal 'wrong-type-argument (list ... d))) (aref d 1)) (progn (or (and (memq ... cl-struct-deferred-tags) t) (signal 'wrong-type-argument (list ... d))) (aref d 2)))) (next-deferred (progn (or (and (memq (type-of d) cl-struct-deferred-tags) t) (signal 'wrong-type-argument (list 'deferred d))) (aref d 4)))) (cond (callback (let ((debug-on-signal (or debug-on-signal deferred:debug-on-signal))) (condition-case err (let ((value ...)) (cond (... nil ...) (t ...))) (error (cond (next-deferred ...) (deferred:onerror ...) (t nil ... ... ... err)))))) (t (cond (next-deferred (deferred:exec-task next-deferred which arg)) ((eq which 'ok) arg) (t (deferred:resignal arg))))))
  deferred:exec-task(#s(deferred :callback (closure ((proc) (proc-buf . #<buffer  *deferred:*/usr/bin/timeout*:42>) (nd . #s(deferred :callback deferred:default-callback :errorback deferred:default-errorback :cancel deferred:default-cancel :next #s(deferred :callback (closure ... ... ...) :errorback deferred:default-errorback :cancel (closure ... ... ... ...) :next #s(deferred :callback ... :errorback deferred:default-errorback :cancel deferred:default-cancel :next ... :status nil :value nil) :status nil :value nil) :status nil :value nil)) (con-type . t) (env "TERM=dumb" "P4CONFIG=.p4config" "MANPATH=/Users/slippycheeze/share/man:/Users/slipp..." "INFOPATH=/Users/slippycheeze/share/info:/Users/sli..." "LANG=en_US.UTF-8" "XPC_FLAGS=0x0" "SECURITYSESSIONID=XXXXX" "USER=slippycheeze" "COMMAND_MODE=unix2003" "XPC_SERVICE_NAME=org.gnu.Emacs.15324" "DISPLAY=/private/tmp/com.apple.launchd.O28Br4hHcs/..." "LOGNAME=slippycheeze" "PATH=/Users/slippycheeze/.bagpipe:/Users/slippyche..." "SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.Qs29e..." "Apple_PubSub_Socket_Render=/private/tmp/com.apple...." "SHELL=/Users/slippycheeze/homebrew/bin/zsh" "HOME=/Users/slippycheeze" "__CF_USER_TEXT_ENCODING=0x64DE5:0x0:0x0" "TMPDIR=/var/folders/bc/tpg4l8wj7gg2722p9384ftww00c...") (pwd . "/gssh:slippycheeze.X.XXXXXXXX.XXX:/XXXXXX/XXX/XXXX...") (buf-name . " *deferred:*/usr/bin/timeout*:42") (proc-name . "*deferred:*/usr/bin/timeout*:42") (uid . 42) (d . #s(deferred :callback deferred:default-callback :errorback deferred:default-errorback :cancel deferred:default-cancel :next #1 :status nil :value nil)) (args "5s" "p4" "-zprog=google-piper.el" "--format=%depotFile%\n%clientFile%\n%action%\n%change..." "fstat" "--" "/gssh:slippycheeze.X.XXXXXXXX.XXX:/XXXXXX/XXX/XXXX...") (command . "/usr/bin/timeout") (f . start-process) cl-struct-deferred-tags t) (_x) (setq proc-buf (get-buffer-create buf-name)) (condition-case err (let ((default-directory pwd) (process-environment env) (process-connection-type con-type)) (setq proc (if (null ...) (apply f proc-name buf-name command nil) (apply f proc-name buf-name command args))) (set-process-sentinel proc #'(lambda ... ...)) (progn (or (and ... t) (signal ... ...)) (let* (...) (aset v 3 ...)))) (error (deferred:post-task nd 'ng err))) nil) :errorback deferred:default-errorback :cancel deferred:default-cancel :next nil :status nil :value nil) ok nil)
  (setq value (deferred:exec-task d which arg))
  (condition-case err (setq value (deferred:exec-task d which arg)) (error nil (message "deferred error : %s" err)))
  (let* ((pack (car (last deferred:queue))) (d (car pack)) (which (car (cdr pack))) (arg (cdr (cdr pack))) value) (setq deferred:queue (nbutlast deferred:queue)) (condition-case err (setq value (deferred:exec-task d which arg)) (error nil (message "deferred error : %s" err))) value)
  (progn (let* ((pack (car (last deferred:queue))) (d (car pack)) (which (car (cdr pack))) (arg (cdr (cdr pack))) value) (setq deferred:queue (nbutlast deferred:queue)) (condition-case err (setq value (deferred:exec-task d which arg)) (error nil (message "deferred error : %s" err))) value))
  (if deferred:queue (progn (let* ((pack (car (last deferred:queue))) (d (car pack)) (which (car (cdr pack))) (arg (cdr (cdr pack))) value) (setq deferred:queue (nbutlast deferred:queue)) (condition-case err (setq value (deferred:exec-task d which arg)) (error nil (message "deferred error : %s" err))) value)))
  deferred:worker()
  apply(deferred:worker nil)
  timer-event-handler([t 23709 65205 28583 nil deferred:worker nil nil 0])
  input-pending-p(t)
  sit-for(30)
  #f(compiled-function () #<bytecode 0x1fe44d8a0399>)()
  tramp-user-error(nil "Not a Tramp file name: \"%s\"" "~")
  (if (tramp-tramp-file-p name) nil (tramp-user-error nil "Not a Tramp file name: \"%s\"" name))
  (unless (tramp-tramp-file-p name) (tramp-user-error nil "Not a Tramp file name: \"%s\"" name))
  (progn (unless (tramp-tramp-file-p name) (tramp-user-error nil "Not a Tramp file name: \"%s\"" name)) (if (not (string-match (nth 0 tramp-file-name-structure) name)) (error "`tramp-file-name-structure' didn't match!") (let ((method (match-string (nth 1 tramp-file-name-structure) name)) (user (match-string (nth 2 tramp-file-name-structure) name)) (host (match-string (nth 3 tramp-file-name-structure) name)) (localname (match-string (nth 4 tramp-file-name-structure) name)) (hop (match-string (nth 5 tramp-file-name-structure) name)) domain port v) (when user (when (string-match tramp-user-with-domain-regexp user) (setq domain (match-string 2 user) user (match-string 1 user)))) (when host (when (string-match tramp-host-with-port-regexp host) (setq port (match-string 2 host) host (match-string 1 host))) (when (string-match tramp-prefix-ipv6-regexp host) (setq host (replace-match "" nil t host))) (when (string-match tramp-postfix-ipv6-regexp host) (setq host (replace-match "" nil t host)))) (unless nodefault (when hop (setq v (tramp-dissect-hop-name hop) hop (and hop (tramp-make-tramp-hop-name v)))) (let ((tramp-default-host (or ... tramp-default-host))) (setq method (tramp-find-method method user host) user (tramp-find-user method user host) host (tramp-find-host method user host) hop (and hop (format-spec hop ...))))) (prog1 (setq v (make-tramp-file-name :method method :user user :domain domain :host host :port port :localname localname :hop hop)) (when (and hop (or (not ...) (tramp-get-method-parameter v ...))) (tramp-user-error v "Method `%s' is not supported for multi-hops." method))))))
  (unwind-protect (progn (unless (tramp-tramp-file-p name) (tramp-user-error nil "Not a Tramp file name: \"%s\"" name)) (if (not (string-match (nth 0 tramp-file-name-structure) name)) (error "`tramp-file-name-structure' didn't match!") (let ((method (match-string (nth 1 tramp-file-name-structure) name)) (user (match-string (nth 2 tramp-file-name-structure) name)) (host (match-string (nth 3 tramp-file-name-structure) name)) (localname (match-string (nth 4 tramp-file-name-structure) name)) (hop (match-string (nth 5 tramp-file-name-structure) name)) domain port v) (when user (when (string-match tramp-user-with-domain-regexp user) (setq domain (match-string 2 user) user (match-string 1 user)))) (when host (when (string-match tramp-host-with-port-regexp host) (setq port (match-string 2 host) host (match-string 1 host))) (when (string-match tramp-prefix-ipv6-regexp host) (setq host (replace-match "" nil t host))) (when (string-match tramp-postfix-ipv6-regexp host) (setq host (replace-match "" nil t host)))) (unless nodefault (when hop (setq v (tramp-dissect-hop-name hop) hop (and hop ...))) (let ((tramp-default-host ...)) (setq method (tramp-find-method method user host) user (tramp-find-user method user host) host (tramp-find-host method user host) hop (and hop ...)))) (prog1 (setq v (make-tramp-file-name :method method :user user :domain domain :host host :port port :localname localname :hop hop)) (when (and hop (or ... ...)) (tramp-user-error v "Method `%s' is not supported for multi-hops." method)))))) (set-match-data save-match-data-internal 'evaporate))
  (let ((save-match-data-internal (match-data))) (unwind-protect (progn (unless (tramp-tramp-file-p name) (tramp-user-error nil "Not a Tramp file name: \"%s\"" name)) (if (not (string-match (nth 0 tramp-file-name-structure) name)) (error "`tramp-file-name-structure' didn't match!") (let ((method (match-string ... name)) (user (match-string ... name)) (host (match-string ... name)) (localname (match-string ... name)) (hop (match-string ... name)) domain port v) (when user (when (string-match tramp-user-with-domain-regexp user) (setq domain ... user ...))) (when host (when (string-match tramp-host-with-port-regexp host) (setq port ... host ...)) (when (string-match tramp-prefix-ipv6-regexp host) (setq host ...)) (when (string-match tramp-postfix-ipv6-regexp host) (setq host ...))) (unless nodefault (when hop (setq v ... hop ...)) (let (...) (setq method ... user ... host ... hop ...))) (prog1 (setq v (make-tramp-file-name :method method :user user :domain domain :host host :port port :localname localname :hop hop)) (when (and hop ...) (tramp-user-error v "Method `%s' is not supported for multi-hops." method)))))) (set-match-data save-match-data-internal 'evaporate)))
  (save-match-data (unless (tramp-tramp-file-p name) (tramp-user-error nil "Not a Tramp file name: \"%s\"" name)) (if (not (string-match (nth 0 tramp-file-name-structure) name)) (error "`tramp-file-name-structure' didn't match!") (let ((method (match-string (nth 1 tramp-file-name-structure) name)) (user (match-string (nth 2 tramp-file-name-structure) name)) (host (match-string (nth 3 tramp-file-name-structure) name)) (localname (match-string (nth 4 tramp-file-name-structure) name)) (hop (match-string (nth 5 tramp-file-name-structure) name)) domain port v) (when user (when (string-match tramp-user-with-domain-regexp user) (setq domain (match-string 2 user) user (match-string 1 user)))) (when host (when (string-match tramp-host-with-port-regexp host) (setq port (match-string 2 host) host (match-string 1 host))) (when (string-match tramp-prefix-ipv6-regexp host) (setq host (replace-match "" nil t host))) (when (string-match tramp-postfix-ipv6-regexp host) (setq host (replace-match "" nil t host)))) (unless nodefault (when hop (setq v (tramp-dissect-hop-name hop) hop (and hop (tramp-make-tramp-hop-name v)))) (let ((tramp-default-host (or ... tramp-default-host))) (setq method (tramp-find-method method user host) user (tramp-find-user method user host) host (tramp-find-host method user host) hop (and hop (format-spec hop ...))))) (prog1 (setq v (make-tramp-file-name :method method :user user :domain domain :host host :port port :localname localname :hop hop)) (when (and hop (or (not ...) (tramp-get-method-parameter v ...))) (tramp-user-error v "Method `%s' is not supported for multi-hops." method))))))
  tramp-dissect-file-name("~")
  (let* ((v (tramp-dissect-file-name filename)) (method (tramp-file-name-method v)) (user (tramp-file-name-user v)) (domain (tramp-file-name-domain v)) (host (tramp-file-name-host v)) (port (tramp-file-name-port v)) (localname (tramp-file-name-localname v)) (hop (tramp-file-name-hop v))) (ignore method user domain host port localname hop) (cond ((and fn (memq operation '(file-exists-p file-readable-p))) (add-to-list 'tramp-vc-registered-file-names localname 'append) nil) ((and fn (eq operation 'process-file) 0)) ((and fn (eq operation 'start-file-process) nil)) (fn (save-match-data (apply (cdr fn) args))) (t (tramp-run-real-handler operation args))))
  (with-parsed-tramp-file-name filename nil (cond ((and fn (memq operation '(file-exists-p file-readable-p))) (add-to-list 'tramp-vc-registered-file-names localname 'append) nil) ((and fn (eq operation 'process-file) 0)) ((and fn (eq operation 'start-file-process) nil)) (fn (save-match-data (apply (cdr fn) args))) (t (tramp-run-real-handler operation args))))
  (let ((filename (tramp-replace-environment-variables (apply #'tramp-file-name-for-operation operation args))) (fn (assoc operation tramp-sh-file-name-handler-alist))) (with-parsed-tramp-file-name filename nil (cond ((and fn (memq operation '(file-exists-p file-readable-p))) (add-to-list 'tramp-vc-registered-file-names localname 'append) nil) ((and fn (eq operation 'process-file) 0)) ((and fn (eq operation 'start-file-process) nil)) (fn (save-match-data (apply (cdr fn) args))) (t (tramp-run-real-handler operation args)))))
  (progn (let ((filename (tramp-replace-environment-variables (apply #'tramp-file-name-for-operation operation args))) (fn (assoc operation tramp-sh-file-name-handler-alist))) (with-parsed-tramp-file-name filename nil (cond ((and fn (memq operation '...)) (add-to-list 'tramp-vc-registered-file-names localname 'append) nil) ((and fn (eq operation 'process-file) 0)) ((and fn (eq operation 'start-file-process) nil)) (fn (save-match-data (apply (cdr fn) args))) (t (tramp-run-real-handler operation args))))))
  (unwind-protect (progn (let ((filename (tramp-replace-environment-variables (apply #'tramp-file-name-for-operation operation args))) (fn (assoc operation tramp-sh-file-name-handler-alist))) (with-parsed-tramp-file-name filename nil (cond ((and fn (memq operation ...)) (add-to-list 'tramp-vc-registered-file-names localname 'append) nil) ((and fn (eq operation ...) 0)) ((and fn (eq operation ...) nil)) (fn (save-match-data (apply ... args))) (t (tramp-run-real-handler operation args)))))) (set-match-data save-match-data-internal 'evaporate))
  (let ((save-match-data-internal (match-data))) (unwind-protect (progn (let ((filename (tramp-replace-environment-variables (apply ... operation args))) (fn (assoc operation tramp-sh-file-name-handler-alist))) (with-parsed-tramp-file-name filename nil (cond ((and fn ...) (add-to-list ... localname ...) nil) ((and fn ... 0)) ((and fn ... nil)) (fn (save-match-data ...)) (t (tramp-run-real-handler operation args)))))) (set-match-data save-match-data-internal 'evaporate)))
  (save-match-data (let ((filename (tramp-replace-environment-variables (apply #'tramp-file-name-for-operation operation args))) (fn (assoc operation tramp-sh-file-name-handler-alist))) (with-parsed-tramp-file-name filename nil (cond ((and fn (memq operation '...)) (add-to-list 'tramp-vc-registered-file-names localname 'append) nil) ((and fn (eq operation 'process-file) 0)) ((and fn (eq operation 'start-file-process) nil)) (fn (save-match-data (apply (cdr fn) args))) (t (tramp-run-real-handler operation args))))))
  tramp-vc-file-name-handler(expand-file-name "~" "/gssh:slippycheeze.X.XXXXXXXX.XXX:/XXXXXX/XXX/XXXX...")
  make-process(:name "*deferred:*/usr/bin/timeout*:41" :buffer " *deferred:*/usr/bin/timeout*:41" :command ("/usr/bin/timeout" "1s" "p4" "-zprog=google-piper.el" "--format=%clientName%\n%clientRoot%" "info"))
  apply(make-process (:name "*deferred:*/usr/bin/timeout*:41" :buffer " *deferred:*/usr/bin/timeout*:41" :command ("/usr/bin/timeout" "1s" "p4" "-zprog=google-piper.el" "--format=%clientName%\n%clientRoot%" "info")))
  start-process("*deferred:*/usr/bin/timeout*:41" " *deferred:*/usr/bin/timeout*:41" "/usr/bin/timeout" "1s" "p4" "-zprog=google-piper.el" "--format=%clientName%\n%clientRoot%" "info")
  apply(start-process "*deferred:*/usr/bin/timeout*:41" " *deferred:*/usr/bin/timeout*:41" "/usr/bin/timeout" ("1s" "p4" "-zprog=google-piper.el" "--format=%clientName%\n%clientRoot%" "info"))
  (if (null (car args)) (apply f proc-name buf-name command nil) (apply f proc-name buf-name command args))
  (setq proc (if (null (car args)) (apply f proc-name buf-name command nil) (apply f proc-name buf-name command args)))
  (let ((default-directory pwd) (process-environment env) (process-connection-type con-type)) (setq proc (if (null (car args)) (apply f proc-name buf-name command nil) (apply f proc-name buf-name command args))) (set-process-sentinel proc #'(lambda (_proc event) (cond ((string-match "exited abnormally" event) (let (...) (kill-buffer proc-buf) (deferred:post-task nd ... msg))) ((equal event "finished\n") (deferred:post-task nd 'ok proc-buf))))) (progn (or (and (memq (type-of nd) cl-struct-deferred-tags) t) (signal 'wrong-type-argument (list 'deferred nd))) (let* ((v nd)) (aset v 3 #'(lambda (x) (deferred:default-cancel x) (if proc (progn ... ...)))))))
  (condition-case err (let ((default-directory pwd) (process-environment env) (process-connection-type con-type)) (setq proc (if (null (car args)) (apply f proc-name buf-name command nil) (apply f proc-name buf-name command args))) (set-process-sentinel proc #'(lambda (_proc event) (cond ((string-match "exited abnormally" event) (let ... ... ...)) ((equal event "finished\n") (deferred:post-task nd ... proc-buf))))) (progn (or (and (memq (type-of nd) cl-struct-deferred-tags) t) (signal 'wrong-type-argument (list 'deferred nd))) (let* ((v nd)) (aset v 3 #'(lambda (x) (deferred:default-cancel x) (if proc ...)))))) (error (deferred:post-task nd 'ng err)))
  (closure ((proc) (proc-buf . #<buffer  *deferred:*/usr/bin/timeout*:41>) (nd . #s(deferred :callback deferred:default-callback :errorback deferred:default-errorback :cancel deferred:default-cancel :next #s(deferred :callback (closure ... ... ...) :errorback deferred:default-errorback :cancel (closure ... ... ... ...) :next #s(deferred :callback ... :errorback deferred:default-errorback :cancel deferred:default-cancel :next ... :status nil :value nil) :status nil :value nil) :status nil :value nil)) (con-type . t) (env "TERM=dumb" "P4CONFIG=.p4config" "MANPATH=/Users/slippycheeze/share/man:/User..." "INFOPATH=/Users/slippycheeze/share/info:/Us..." "LANG=en_US.UTF-8" "XPC_FLAGS=0x0" "SECURITYSESSIONID=XXXXX" "USER=slippycheeze" "COMMAND_MODE=unix2003" "XPC_SERVICE_NAME=org.gnu.Emacs.15324" "DISPLAY=/private/tmp/com.apple.launchd.O28B..." "LOGNAME=slippycheeze" "PATH=/Users/slippycheeze/.bagpipe:/Users/sl..." "SSH_AUTH_SOCK=/private/tmp/com.apple.launch..." "Apple_PubSub_Socket_Render=/private/tmp/com..." "SHELL=/Users/slippycheeze/homebrew/bin/zsh" "HOME=/Users/slippycheeze" "__CF_USER_TEXT_ENCODING=0x64DE5:0x0:0x0" "TMPDIR=/var/folders/bc/tpg4l8wj7gg2722p9384...") (pwd . "/gssh:slippycheeze.X.XXXXXXXX.com:/XXXXXX/X...") (buf-name . " *deferred:*/usr/bin/timeout*:41") (proc-name . "*deferred:*/usr/bin/timeout*:41") (uid . 41) (d . #s(deferred :callback deferred:default-callback :errorback deferred:default-errorback :cancel deferred:default-cancel :next #s(deferred :callback #0 :errorback deferred:default-errorback :cancel deferred:default-cancel :next nil :status nil :value nil) :status nil :value nil)) (args "1s" "p4" "-zprog=google-piper.el" "--format=%clientName%\n%clientRoot%" "info") (command . "/usr/bin/timeout") (f . start-process) cl-struct-deferred-tags t) (_x) (setq proc-buf (get-buffer-create buf-name)) (condition-case err (let ((default-directory pwd) (process-environment env) (process-connection-type con-type)) (setq proc (if (null ...) (apply f proc-name buf-name command nil) (apply f proc-name buf-name command args))) (set-process-sentinel proc #'(lambda ... ...)) (progn (or (and ... t) (signal ... ...)) (let* (...) (aset v 3 ...)))) (error (deferred:post-task nd 'ng err))) nil)(nil)
  funcall((closure ((proc) (proc-buf . #<buffer  *deferred:*/usr/bin/timeout*:41>) (nd . #s(deferred :callback deferred:default-callback :errorback deferred:default-errorback :cancel deferred:default-cancel :next #s(deferred :callback (closure (... ... ... ... ... cl-struct-deferred-tags t) (buf) (prog1 ... ...)) :errorback deferred:default-errorback :cancel (closure (... ... ... ... ... ... cl-struct-deferred-tags t) (_x) (deferred:default-cancel d) (deferred:default-cancel pd)) :next #s(deferred :callback (closure ... ... ...) :errorback deferred:default-errorback :cancel deferred:default-cancel :next #s(deferred :callback ... :errorback deferred:default-errorback :cancel deferred:default-cancel :next ... :status nil :value nil) :status nil :value nil) :status nil :value nil) :status nil :value nil)) (con-type . t) (env "TERM=dumb" "P4CONFIG=.p4config" "MANPATH=/Users/slippycheeze/share/man:/Users/slipp..." "INFOPATH=/Users/slippycheeze/share/info:/Users/sli..." "LANG=en_US.UTF-8" "XPC_FLAGS=0x0" "SECURITYSESSIONID=XXXXX" "USER=slippycheeze" "COMMAND_MODE=unix2003" "XPC_SERVICE_NAME=org.gnu.Emacs.15324" "DISPLAY=/private/tmp/com.apple.launchd.O28Br4hHcs/..." "LOGNAME=slippycheeze" "PATH=/Users/slippycheeze/.bagpipe:/Users/slippyche..." "SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.Qs29e..." "Apple_PubSub_Socket_Render=/private/tmp/com.apple...." "SHELL=/Users/slippycheeze/homebrew/bin/zsh" "HOME=/Users/slippycheeze" "__CF_USER_TEXT_ENCODING=0x64DE5:0x0:0x0" "TMPDIR=/var/folders/bc/tpg4l8wj7gg2722p9384ftww00c...") (pwd . "/gssh:slippycheeze.X.XXXXXXXX.XXX:/XXXXXX/XXX/XXXX...") (buf-name . " *deferred:*/usr/bin/timeout*:41") (proc-name . "*deferred:*/usr/bin/timeout*:41") (uid . 41) (d . #s(deferred :callback deferred:default-callback :errorback deferred:default-errorback :cancel deferred:default-cancel :next #s(deferred :callback #1 :errorback deferred:default-errorback :cancel deferred:default-cancel :next nil :status nil :value nil) :status nil :value nil)) (args "1s" "p4" "-zprog=google-piper.el" "--format=%clientName%\n%clientRoot%" "info") (command . "/usr/bin/timeout") (f . start-process) cl-struct-deferred-tags t) (_x) (setq proc-buf (get-buffer-create buf-name)) (condition-case err (let ((default-directory pwd) (process-environment env) (process-connection-type con-type)) (setq proc (if (null (car args)) (apply f proc-name buf-name command nil) (apply f proc-name buf-name command args))) (set-process-sentinel proc #'(lambda (_proc event) (cond ... ...))) (progn (or (and (memq ... cl-struct-deferred-tags) t) (signal 'wrong-type-argument (list ... nd))) (let* ((v nd)) (aset v 3 #'...)))) (error (deferred:post-task nd 'ng err))) nil) nil)
  (condition-case err (funcall f arg) ('wrong-number-of-arguments (display-warning 'deferred "Callback that takes no argument may be specified.\n..." err) (condition-case nil (funcall f) ('wrong-number-of-arguments (signal 'wrong-number-of-arguments (cdr err))))))
  deferred:call-lambda((closure ((proc) (proc-buf . #<buffer  *deferred:*/usr/bin/timeout*:41>) (nd . #s(deferred :callback deferred:default-callback :errorback deferred:default-errorback :cancel deferred:default-cancel :next #s(deferred :callback (closure (... ... ... ... ... cl-struct-deferred-tags t) (buf) (prog1 ... ...)) :errorback deferred:default-errorback :cancel (closure (... ... ... ... ... ... cl-struct-deferred-tags t) (_x) (deferred:default-cancel d) (deferred:default-cancel pd)) :next #s(deferred :callback (closure ... ... ...) :errorback deferred:default-errorback :cancel deferred:default-cancel :next #s(deferred :callback ... :errorback deferred:default-errorback :cancel deferred:default-cancel :next ... :status nil :value nil) :status nil :value nil) :status nil :value nil) :status nil :value nil)) (con-type . t) (env "TERM=dumb" "P4CONFIG=.p4config" "MANPATH=/Users/slippycheeze/share/man:/Users/slipp..." "INFOPATH=/Users/slippycheeze/share/info:/Users/sli..." "LANG=en_US.UTF-8" "XPC_FLAGS=0x0" "SECURITYSESSIONID=XXXXX" "USER=slippycheeze" "COMMAND_MODE=unix2003" "XPC_SERVICE_NAME=org.gnu.Emacs.15324" "DISPLAY=/private/tmp/com.apple.launchd.O28Br4hHcs/..." "LOGNAME=slippycheeze" "PATH=/Users/slippycheeze/.bagpipe:/Users/slippyche..." "SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.Qs29e..." "Apple_PubSub_Socket_Render=/private/tmp/com.apple...." "SHELL=/Users/slippycheeze/homebrew/bin/zsh" "HOME=/Users/slippycheeze" "__CF_USER_TEXT_ENCODING=0x64DE5:0x0:0x0" "TMPDIR=/var/folders/bc/tpg4l8wj7gg2722p9384ftww00c...") (pwd . "/gssh:slippycheeze.X.XXXXXXXX.XXX:/XXXXXX/XXX/XXXX...") (buf-name . " *deferred:*/usr/bin/timeout*:41") (proc-name . "*deferred:*/usr/bin/timeout*:41") (uid . 41) (d . #s(deferred :callback deferred:default-callback :errorback deferred:default-errorback :cancel deferred:default-cancel :next #s(deferred :callback #1 :errorback deferred:default-errorback :cancel deferred:default-cancel :next nil :status nil :value nil) :status nil :value nil)) (args "1s" "p4" "-zprog=google-piper.el" "--format=%clientName%\n%clientRoot%" "info") (command . "/usr/bin/timeout") (f . start-process) cl-struct-deferred-tags t) (_x) (setq proc-buf (get-buffer-create buf-name)) (condition-case err (let ((default-directory pwd) (process-environment env) (process-connection-type con-type)) (setq proc (if (null (car args)) (apply f proc-name buf-name command nil) (apply f proc-name buf-name command args))) (set-process-sentinel proc #'(lambda (_proc event) (cond ... ...))) (progn (or (and (memq ... cl-struct-deferred-tags) t) (signal 'wrong-type-argument (list ... nd))) (let* ((v nd)) (aset v 3 #'...)))) (error (deferred:post-task nd 'ng err))) nil) nil)
  (let ((value (deferred:call-lambda callback arg))) (cond ((and (memq (type-of value) cl-struct-deferred-tags) t) nil (if next-deferred (deferred:set-next value next-deferred) value)) (t (if next-deferred (deferred:post-task next-deferred 'ok value) (progn (or (and (memq ... cl-struct-deferred-tags) t) (signal 'wrong-type-argument (list ... d))) (let* ((v d)) (aset v 5 'ok))) (progn (or (and (memq ... cl-struct-deferred-tags) t) (signal 'wrong-type-argument (list ... d))) (let* ((v d)) (aset v 6 value))) value))))
  (condition-case err (let ((value (deferred:call-lambda callback arg))) (cond ((and (memq (type-of value) cl-struct-deferred-tags) t) nil (if next-deferred (deferred:set-next value next-deferred) value)) (t (if next-deferred (deferred:post-task next-deferred 'ok value) (progn (or (and ... t) (signal ... ...)) (let* (...) (aset v 5 ...))) (progn (or (and ... t) (signal ... ...)) (let* (...) (aset v 6 value))) value)))) (error (cond (next-deferred (deferred:post-task next-deferred 'ng err)) (deferred:onerror (deferred:call-lambda deferred:onerror err)) (t nil (message "deferred error : %S" err) (progn (or (and (memq ... cl-struct-deferred-tags) t) (signal 'wrong-type-argument (list ... d))) (let* ((v d)) (aset v 5 'ng))) (progn (or (and (memq ... cl-struct-deferred-tags) t) (signal 'wrong-type-argument (list ... d))) (let* ((v d)) (aset v 6 err))) err))))
  (let ((debug-on-signal (or debug-on-signal deferred:debug-on-signal))) (condition-case err (let ((value (deferred:call-lambda callback arg))) (cond ((and (memq (type-of value) cl-struct-deferred-tags) t) nil (if next-deferred (deferred:set-next value next-deferred) value)) (t (if next-deferred (deferred:post-task next-deferred 'ok value) (progn (or ... ...) (let* ... ...)) (progn (or ... ...) (let* ... ...)) value)))) (error (cond (next-deferred (deferred:post-task next-deferred 'ng err)) (deferred:onerror (deferred:call-lambda deferred:onerror err)) (t nil (message "deferred error : %S" err) (progn (or (and ... t) (signal ... ...)) (let* (...) (aset v 5 ...))) (progn (or (and ... t) (signal ... ...)) (let* (...) (aset v 6 err))) err)))))
  (cond (callback (let ((debug-on-signal (or debug-on-signal deferred:debug-on-signal))) (condition-case err (let ((value (deferred:call-lambda callback arg))) (cond ((and ... t) nil (if next-deferred ... value)) (t (if next-deferred ... ... ... value)))) (error (cond (next-deferred (deferred:post-task next-deferred ... err)) (deferred:onerror (deferred:call-lambda deferred:onerror err)) (t nil (message "deferred error : %S" err) (progn ... ...) (progn ... ...) err)))))) (t (cond (next-deferred (deferred:exec-task next-deferred which arg)) ((eq which 'ok) arg) (t (deferred:resignal arg)))))
  (let ((callback (if (eq which 'ok) (progn (or (and (memq ... cl-struct-deferred-tags) t) (signal 'wrong-type-argument (list ... d))) (aref d 1)) (progn (or (and (memq ... cl-struct-deferred-tags) t) (signal 'wrong-type-argument (list ... d))) (aref d 2)))) (next-deferred (progn (or (and (memq (type-of d) cl-struct-deferred-tags) t) (signal 'wrong-type-argument (list 'deferred d))) (aref d 4)))) (cond (callback (let ((debug-on-signal (or debug-on-signal deferred:debug-on-signal))) (condition-case err (let ((value ...)) (cond (... nil ...) (t ...))) (error (cond (next-deferred ...) (deferred:onerror ...) (t nil ... ... ... err)))))) (t (cond (next-deferred (deferred:exec-task next-deferred which arg)) ((eq which 'ok) arg) (t (deferred:resignal arg))))))
  deferred:exec-task(#s(deferred :callback (closure ((proc) (proc-buf . #<buffer  *deferred:*/usr/bin/timeout*:41>) (nd . #s(deferred :callback deferred:default-callback :errorback deferred:default-errorback :cancel deferred:default-cancel :next #s(deferred :callback (closure ... ... ...) :errorback deferred:default-errorback :cancel (closure ... ... ... ...) :next #s(deferred :callback ... :errorback deferred:default-errorback :cancel deferred:default-cancel :next ... :status nil :value nil) :status nil :value nil) :status nil :value nil)) (con-type . t) (env "TERM=dumb" "P4CONFIG=.p4config" "MANPATH=/Users/slippycheeze/share/man:/Users/slipp..." "INFOPATH=/Users/slippycheeze/share/info:/Users/sli..." "LANG=en_US.UTF-8" "XPC_FLAGS=0x0" "SECURITYSESSIONID=XXXXX" "USER=slippycheeze" "COMMAND_MODE=unix2003" "XPC_SERVICE_NAME=org.gnu.Emacs.15324" "DISPLAY=/private/tmp/com.apple.launchd.O28Br4hHcs/..." "LOGNAME=slippycheeze" "PATH=/Users/slippycheeze/.bagpipe:/Users/slippyche..." "SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.Qs29e..." "Apple_PubSub_Socket_Render=/private/tmp/com.apple...." "SHELL=/Users/slippycheeze/homebrew/bin/zsh" "HOME=/Users/slippycheeze" "__CF_USER_TEXT_ENCODING=0x64DE5:0x0:0x0" "TMPDIR=/var/folders/bc/tpg4l8wj7gg2722p9384ftww00c...") (pwd . "/gssh:slippycheeze.X.XXXXXXXX.XXX:/XXXXXX/XXX/XXXX...") (buf-name . " *deferred:*/usr/bin/timeout*:41") (proc-name . "*deferred:*/usr/bin/timeout*:41") (uid . 41) (d . #s(deferred :callback deferred:default-callback :errorback deferred:default-errorback :cancel deferred:default-cancel :next #1 :status nil :value nil)) (args "1s" "p4" "-zprog=google-piper.el" "--format=%clientName%\n%clientRoot%" "info") (command . "/usr/bin/timeout") (f . start-process) cl-struct-deferred-tags t) (_x) (setq proc-buf (get-buffer-create buf-name)) (condition-case err (let ((default-directory pwd) (process-environment env) (process-connection-type con-type)) (setq proc (if (null ...) (apply f proc-name buf-name command nil) (apply f proc-name buf-name command args))) (set-process-sentinel proc #'(lambda ... ...)) (progn (or (and ... t) (signal ... ...)) (let* (...) (aset v 3 ...)))) (error (deferred:post-task nd 'ng err))) nil) :errorback deferred:default-errorback :cancel deferred:default-cancel :next nil :status nil :value nil) ok nil)
  (setq value (deferred:exec-task d which arg))
  (condition-case err (setq value (deferred:exec-task d which arg)) (error nil (message "deferred error : %s" err)))
  (let* ((pack (car (last deferred:queue))) (d (car pack)) (which (car (cdr pack))) (arg (cdr (cdr pack))) value) (setq deferred:queue (nbutlast deferred:queue)) (condition-case err (setq value (deferred:exec-task d which arg)) (error nil (message "deferred error : %s" err))) value)
  (progn (let* ((pack (car (last deferred:queue))) (d (car pack)) (which (car (cdr pack))) (arg (cdr (cdr pack))) value) (setq deferred:queue (nbutlast deferred:queue)) (condition-case err (setq value (deferred:exec-task d which arg)) (error nil (message "deferred error : %s" err))) value))
  (if deferred:queue (progn (let* ((pack (car (last deferred:queue))) (d (car pack)) (which (car (cdr pack))) (arg (cdr (cdr pack))) value) (setq deferred:queue (nbutlast deferred:queue)) (condition-case err (setq value (deferred:exec-task d which arg)) (error nil (message "deferred error : %s" err))) value)))
  deferred:worker()
  apply(deferred:worker nil)
  timer-event-handler([t 23709 65205 28556 nil deferred:worker nil nil 0])
  process-send-string(#<process *tramp/gssh slippycheeze.c.googlers.com*> "tramp_vc_registered_read_file_names <<'c231581b08e...")
  tramp-send-string((tramp-file-name "gssh" nil nil "slippycheeze.c.googlers.com" nil "/google/src/cloud/slippycheeze/work/google3/storag..." nil) "tramp_vc_registered_read_file_names <<'c231581b08e...")
  tramp-send-command((tramp-file-name "gssh" nil nil "slippycheeze.c.googlers.com" nil "/google/src/cloud/slippycheeze/work/google3/storag..." nil) "tramp_vc_registered_read_file_names <<'c231581b08e...")
  tramp-sh-handle-vc-registered("/gssh:slippycheeze.X.XXXXXXXX.XXX:/XXXXXX/XXX/XXXX...")
  apply(tramp-sh-handle-vc-registered "/gssh:slippycheeze.X.XXXXXXXX.XXX:/XXXXXX/XXX/XXXX...")
  tramp-sh-file-name-handler(vc-registered "/gssh:slippycheeze.X.XXXXXXXX.XXX:/XXXXXX/XXX/XXXX...")
  apply(tramp-sh-file-name-handler vc-registered "/gssh:slippycheeze.X.XXXXXXXX.XXX:/XXXXXX/XXX/XXXX...")
  tramp-file-name-handler(vc-registered "/gssh:slippycheeze.X.XXXXXXXX.XXX:/XXXXXX/XXX/XXXX...")
  vc-registered("/gssh:slippycheeze.X.XXXXXXXX.XXX:/XXXXXX/XXX/XXXX...")
  vc-backend("/gssh:slippycheeze.X.XXXXXXXX.XXX:/XXXXXX/XXX/XXXX...")
  vc-refresh-state()
  run-hooks(find-file-hook)
  after-find-file(nil nil t nil nil)
  revert-buffer--default(t nil)
  revert-buffer(t)
  funcall-interactively(revert-buffer t)
  call-interactively(revert-buffer record nil)
  command-execute(revert-buffer record)
  execute-extended-command(nil "revert-buffer" "revert-buf")
  funcall-interactively(execute-extended-command nil "revert-buffer" "revert-buf")
  call-interactively(execute-extended-command nil nil)
  command-execute(execute-extended-command)


reply via email to

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