From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Daniel Pittman Newsgroups: gmane.emacs.devel Subject: Re: TRAMP VC optimization fails: non-TRAMP filenames handled incorrectly in async operations. Date: Fri, 29 Mar 2019 12:36:21 +0000 Message-ID: References: <87bm1wmhw6.fsf@gmx.de> <8736n8i4wa.fsf@gmx.de> Mime-Version: 1.0 Content-Type: multipart/alternative; boundary="0000000000003327d705853aede5" Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="124159"; mail-complaints-to="usenet@blaine.gmane.org" Cc: emacs-devel To: Michael Albinus Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Fri Mar 29 13:37:42 2019 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1h9qlP-000W1m-MK for ged-emacs-devel@m.gmane.org; Fri, 29 Mar 2019 13:37:41 +0100 Original-Received: from localhost ([127.0.0.1]:52317 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h9qlO-0004fg-Ef for ged-emacs-devel@m.gmane.org; Fri, 29 Mar 2019 08:37:38 -0400 Original-Received: from eggs.gnu.org ([209.51.188.92]:37632) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h9ql3-0004fC-Kt for emacs-devel@gnu.org; Fri, 29 Mar 2019 08:37:28 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1h9qkq-0007iG-Bd for emacs-devel@gnu.org; Fri, 29 Mar 2019 08:37:17 -0400 Original-Received: from mail-it1-x135.google.com ([2607:f8b0:4864:20::135]:33994) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1h9qkn-0007em-FX for emacs-devel@gnu.org; Fri, 29 Mar 2019 08:37:02 -0400 Original-Received: by mail-it1-x135.google.com with SMTP id l4so10898748ite.1 for ; Fri, 29 Mar 2019 05:36:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=vFh+iambd9gr1kQ+vWx066yRBaAe1YR5yXADbblBx6M=; b=PhGm4/uHidSMXK2miyzo76Gw0TPS00knzpAp9vwrSdRl6rTHeRBlzOx5jZx0WAcMBH 3e2EIJ56VS80FuLF1HnldZxOAHYLF/j9N2/4XMp5A9czR0WwtDV09CTLeJx+v4VZoJiw 4tYeD7IlTFB3SZxfv3ivuSSJRv1zM6m/HOI71xt6QZ13Bkg5EabiEyVZ+uOZc4upZcmz pwSBTzFxoaHdbJzDmI1sQqV+Yerp76FYamQsKA8+0ThJV/Wzvmsb+Oa9fxRlQE6SjYo6 GV3iM1GXko0IE5xQnjUV9W4m9C3AHiyEJ5T+xPrCF+QDpVc57DXBzd5TjSCrlj1xTPiu EQwQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=vFh+iambd9gr1kQ+vWx066yRBaAe1YR5yXADbblBx6M=; b=Ua6xcM5pZYbS+SwZYqGvCkh6Ef7zbr1y0pgIh5CDVMeSsJy0jCSN1UwXMtWfM5asH/ CzbWvdsG2WmCxBTQ+LZhdQn5QmgB/FXumF7ud82wOR5qEqBP5NQro+QswmKJ3EtRm8mp 3gy0rMdMhEKDy1Uw8KXLUiuxSODHpJTh21A+E56aLmWni6AG5+7Q/37k2ZGYgp4fM6f8 VwgDtteUQTT2oeXtVpxKyom0d8l44xIqhcGywzrz/E6MTZbpqlgMjSwZW33DN9SsYEPy xTlUXuPr9yGOByEb+1VkH/nAo6FcNegNXrNxrPoaLw86X9Wug5Wn9gg73iD82OTBQMct awZA== X-Gm-Message-State: APjAAAWe0alV6P+GB/JV0T3z2WYB22hmLuFATjEDzKbucdWXXrB4dyLR o0Us+yuj3Z2vHEtRHQ6w9/ZpVs9sZSCUYJ8zsyxbQ5ZTZmz+5Q== X-Google-Smtp-Source: APXvYqxkmj1zecUdq+WaM3Oy28TFdMkHcb/ATE9vzeFq8jNdPq7xlVFkTX1woFSQcuKRO3HLJJeurzT+jbDr74sI+no= X-Received: by 2002:a24:b649:: with SMTP id d9mr3811780itj.18.1553863017672; Fri, 29 Mar 2019 05:36:57 -0700 (PDT) In-Reply-To: <8736n8i4wa.fsf@gmx.de> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::135 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:234811 Archived-At: --0000000000003327d705853aede5 Content-Type: text/plain; charset="UTF-8" On Wed, Mar 27, 2019 at 5:49 PM Michael Albinus wrote: > Daniel Pittman 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. [1] https://github.com/kiwanami/emacs-deferred 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 . #) (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 . #) (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 . #) (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 . #) (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 () #)() 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 . #) (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 . #) (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 . #) (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 . #) (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(# "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) --0000000000003327d705853aede5 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
On Wed, Mar 27, 2019 at 5:49 PM= Michael Albinus <michael.albi= nus@gmx.de> wrote:
Daniel Pittman <slippycheeze@google.com> w= rites:

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= .=C2=A0 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.
=C2=A0
Since I cannot reproduce the problem (yet), do you have a backtrace?

Sure, please see it follow.=C2=A0 I have cens= ored the content of a small number of strings, but this is replacing a stan= dard ASCII letter with 'X' so should have no semantic effect.=C2=A0= Sorry to have to do that.=C2=A0 Fair warning, it is ... long.=C2=A0
<= div>
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.

<= div>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 cau= sing `tramp-send-string` to run `process-send-string`, and then a timer fir= es 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.=C2=A0=C2=A0

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

Anywa= y, 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=3Dgoogle-piper.el" "--format= =3D%clientName%\n%clientRoot%" "info"))

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

=C2=A0 tramp-vc-file-name-handler(expand-fil= e-name "~" "/gssh:slippycheeze.X.XXXXXXXX.XXX:/XXXXXX/XXX/XX= XX...")

...and there we have our proble= m start.

=

=C2=A0 backtrace()
=C2=A0 tramp-error(ni= l user-error "Not a Tramp file name: \"%s\"" "~&qu= ot;)
=C2=A0 apply(tramp-error nil user-error "Not a Tramp fi= le name: \"%s\"" "~")
=C2=A0 tramp-user-= error(nil "Not a Tramp file name: \"%s\"" "~"= )
=C2=A0 (if (tramp-tramp-file-p name) nil (tramp-user-error nil = "Not a Tramp file name: \"%s\"" name))
=C2=A0= (unless (tramp-tramp-file-p name) (tramp-user-error nil "Not a Tramp = file name: \"%s\"" name))
=C2=A0 (progn (unless (t= ramp-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-st= ring (nth 4 tramp-file-name-structure) name)) (hop (match-string (nth 5 tra= mp-file-name-structure) name)) domain port v) (when user (when (string-matc= h tramp-user-with-domain-regexp user) (setq domain (match-string 2 user) us= er (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 hos= t))) (when (string-match tramp-prefix-ipv6-regexp host) (setq host (replace= -match "" nil t host))) (when (string-match tramp-postfix-ipv6-re= gexp host) (setq host (replace-match "" nil t host)))) (unless no= default (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-h= ost))) (setq method (tramp-find-method method user host) user (tramp-find-u= ser method user host) host (tramp-find-host method user host) hop (and hop = (format-spec hop ...))))) (prog1 (setq v (make-tramp-file-name :method meth= od :user user :domain domain :host host :port port :localname localname :ho= p hop)) (when (and hop (or (not ...) (tramp-get-method-parameter v ...))) (= tramp-user-error v "Method `%s' is not supported for multi-hops.&q= uot; method))))))
=C2=A0 (unwind-protect (progn (unless (tramp-tr= amp-file-p name) (tramp-user-error nil "Not a Tramp file name: \"= %s\"" name)) (if (not (string-match (nth 0 tramp-file-name-struct= ure) name)) (error "`tramp-file-name-structure' didn't match!&= quot;) (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 (n= th 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 (mat= ch-string 1 user)))) (when host (when (string-match tramp-host-with-port-re= gexp host) (setq port (match-string 2 host) host (match-string 1 host))) (w= hen (string-match tramp-prefix-ipv6-regexp host) (setq host (replace-match = "" nil t host))) (when (string-match tramp-postfix-ipv6-regexp ho= st) (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 h= ost) hop (and hop ...)))) (prog1 (setq v (make-tramp-file-name :method meth= od :user user :domain domain :host host :port port :localname localname :ho= p hop)) (when (and hop (or ... ...)) (tramp-user-error v "Method `%s&#= 39; is not supported for multi-hops." method)))))) (set-match-data sav= e-match-data-internal 'evaporate))
=C2=A0 (let ((save-match-d= ata-internal (match-data))) (unwind-protect (progn (unless (tramp-tramp-fil= e-p name) (tramp-user-error nil "Not a Tramp file name: \"%s\&quo= t;" name)) (if (not (string-match (nth 0 tramp-file-name-structure) na= me)) (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-s= tring ... name)) domain port v) (when user (when (string-match tramp-user-w= ith-domain-regexp user) (setq domain ... user ...))) (when host (when (stri= ng-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 use= r :domain domain :host host :port port :localname localname :hop hop)) (whe= n (and hop ...) (tramp-user-error v "Method `%s' is not supported = for multi-hops." method)))))) (set-match-data save-match-data-internal= 'evaporate)))
=C2=A0 (save-match-data (unless (tramp-tramp-f= ile-p name) (tramp-user-error nil "Not a Tramp file name: \"%s\&q= uot;" 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)) (use= r (match-string (nth 2 tramp-file-name-structure) name)) (host (match-strin= g (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-st= ring 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 (whe= n hop (setq v (tramp-dissect-hop-name hop) hop (and hop (tramp-make-tramp-h= op-name v)))) (let ((tramp-default-host (or ... tramp-default-host))) (setq= method (tramp-find-method method user host) user (tramp-find-user method u= ser host) host (tramp-find-host method user host) hop (and hop (format-spec= hop ...))))) (prog1 (setq v (make-tramp-file-name :method method :user use= r :domain domain :host host :port port :localname localname :hop hop)) (whe= n (and hop (or (not ...) (tramp-get-method-parameter v ...))) (tramp-user-e= rror v "Method `%s' is not supported for multi-hops." method)= )))))
=C2=A0 tramp-dissect-file-name("~")
=C2= =A0 (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)) (localn= ame (tramp-file-name-localname v)) (hop (tramp-file-name-hop v))) (ignore m= ethod user domain host port localname hop) (cond ((and fn (memq operation &= #39;(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 arg= s))))
=C2=A0 (with-parsed-tramp-file-name filename nil (cond ((an= d fn (memq operation '(file-exists-p file-readable-p))) (add-to-list &#= 39;tramp-vc-registered-file-names localname 'append) nil) ((and fn (eq = operation 'process-file) 0)) ((and fn (eq operation 'start-file-pro= cess) nil)) (fn (save-match-data (apply (cdr fn) args))) (t (tramp-run-real= -handler operation args))))
=C2=A0 (let ((filename (tramp-replace= -environment-variables (apply #'tramp-file-name-for-operation operation= args))) (fn (assoc operation tramp-sh-file-name-handler-alist))) (with-par= sed-tramp-file-name filename nil (cond ((and fn (memq operation '(file-= exists-p file-readable-p))) (add-to-list 'tramp-vc-registered-file-name= s 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)))))
=C2=A0 (progn (let ((filename (tramp-replace-environment-variables (= apply #'tramp-file-name-for-operation operation args))) (fn (assoc oper= ation tramp-sh-file-name-handler-alist))) (with-parsed-tramp-file-name file= name 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))))))
=C2=A0 (unwind-protect (progn (let ((filenam= e (tramp-replace-environment-variables (apply #'tramp-file-name-for-ope= ration operation args))) (fn (assoc operation tramp-sh-file-name-handler-al= ist))) (with-parsed-tramp-file-name filename nil (cond ((and fn (memq opera= tion ...)) (add-to-list 'tramp-vc-registered-file-names localname '= append) nil) ((and fn (eq operation ...) 0)) ((and fn (eq operation ...) ni= l)) (fn (save-match-data (apply ... args))) (t (tramp-run-real-handler oper= ation args)))))) (set-match-data save-match-data-internal 'evaporate))<= /div>
=C2=A0 (let ((save-match-data-internal (match-data))) (unwind-pro= tect (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-matc= h-data ...)) (t (tramp-run-real-handler operation args)))))) (set-match-dat= a save-match-data-internal 'evaporate)))
=C2=A0 (save-match-d= ata (let ((filename (tramp-replace-environment-variables (apply #'tramp= -file-name-for-operation operation args))) (fn (assoc operation tramp-sh-fi= le-name-handler-alist))) (with-parsed-tramp-file-name filename nil (cond ((= and fn (memq operation '...)) (add-to-list 'tramp-vc-registered-fil= e-names localname 'append) nil) ((and fn (eq operation 'process-fil= e) 0)) ((and fn (eq operation 'start-file-process) nil)) (fn (save-matc= h-data (apply (cdr fn) args))) (t (tramp-run-real-handler operation args)))= )))
=C2=A0 tramp-vc-file-name-handler(expand-file-name "~&qu= ot; "/gssh:slippycheeze.X.XXXXXXXX.com:/XXXXXX/XXX/XXXX...")
=C2=A0 make-process(:name "*deferred:*/usr/bin/timeout*:42"= :buffer " *deferred:*/usr/bin/timeout*:42" :command ("/usr/= bin/timeout" "5s" "p4" "-zprog=3Dgoogle-piper= .el" "--format=3D%depotFile%\n%clientFile%\n%action%\n%change...&= quot; "fstat" "--" "/gssh:slippycheeze.X.XXXXXXXX.= XXX:/XXXXXX/XXX/XXXX..."))
=C2=A0 apply(make-process (:name = "*deferred:*/usr/bin/timeout*:42" :buffer " *deferred:*/usr/= bin/timeout*:42" :command ("/usr/bin/timeout" "5s"= "p4" "-zprog=3Dgoogle-piper.el" "--format=3D%depo= tFile%\n%clientFile%\n%action%\n%change..." "fstat" "--= " "/gssh:slippycheeze.X.XXXXXXXX.XXX:/XXXXXX/XXX/XXXX...")))=
=C2=A0 start-process("*deferred:*/usr/bin/timeout*:42"= " *deferred:*/usr/bin/timeout*:42" "/usr/bin/timeout" = "5s" "p4" "-zprog=3Dgoogle-piper.el" "--= format=3D%depotFile%\n%clientFile%\n%action%\n%change..." "fstat&= quot; "--" "/gssh:slippycheeze.X.XXXXXXXX.XXX:/XXXXXX/XXX/XX= XX...")
=C2=A0 apply(start-process "*deferred:*/usr/bin= /timeout*:42" " *deferred:*/usr/bin/timeout*:42" "/usr/= bin/timeout" ("5s" "p4" "-zprog=3Dgoogle-pipe= r.el" "--format=3D%depotFile%\n%clientFile%\n%action%\n%change...= " "fstat" "--" "/gssh:slippycheeze.X.XXXXXXXX= .XXX:/XXXXXX/XXX/XXXX..."))
=C2=A0 (if (null (car args)) (ap= ply f proc-name buf-name command nil) (apply f proc-name buf-name command a= rgs))
=C2=A0 (setq proc (if (null (car args)) (apply f proc-name = buf-name command nil) (apply f proc-name buf-name command args)))
=C2=A0 (let ((default-directory pwd) (process-environment env) (process-co= nnection-type con-type)) (setq proc (if (null (car args)) (apply f proc-nam= e buf-name command nil) (apply f proc-name buf-name command args))) (set-pr= ocess-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:pos= t-task nd 'ok proc-buf))))) (progn (or (and (memq (type-of nd) cl-struc= t-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 ... ...)))))))
=C2=A0 (condition-case err (let ((= default-directory pwd) (process-environment env) (process-connection-type c= on-type)) (setq proc (if (null (car args)) (apply f proc-name buf-name comm= and nil) (apply f proc-name buf-name command args))) (set-process-sentinel = proc #'(lambda (_proc event) (cond ((string-match "exited abnormal= ly" event) (let ... ... ...)) ((equal event "finished\n") (d= eferred:post-task nd ... proc-buf))))) (progn (or (and (memq (type-of nd) c= l-struct-deferred-tags) t) (signal 'wrong-type-argument (list 'defe= rred nd))) (let* ((v nd)) (aset v 3 #'(lambda (x) (deferred:default-can= cel x) (if proc ...)))))) (error (deferred:post-task nd 'ng err)))
=C2=A0 (closure ((proc) (proc-buf . #<buffer=C2=A0 *deferred:*/usr= /bin/timeout*:42>) (nd . #s(deferred :callback deferred:default-callback= :errorback deferred:default-errorback :cancel deferred:default-cancel :nex= t #s(deferred :callback (closure ... ... ...) :errorback deferred:default-e= rrorback :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=3Ddumb" "P4CONFIG=3D.p4config&q= uot; "MANPATH=3D/Users/slippycheeze/share/man:/User..." "INF= OPATH=3D/Users/slippycheeze/share/info:/Us..." "LANG=3Den_US.UTF-= 8" "XPC_FLAGS=3D0x0" "SECURITYSESSIONID=3DXXXXX" &= quot;USER=3Dslippycheeze" "COMMAND_MODE=3Dunix2003" "XP= C_SERVICE_NAME=3Dorg.gnu.Emacs.15324" "DISPLAY=3D/private/tmp/com= .apple.launchd.O28B..." "LOGNAME=3Dslippycheeze" "PATH= =3D/Users/slippycheeze/.bagpipe:/Users/sl..." "SSH_AUTH_SOCK=3D/p= rivate/tmp/com.apple.launch..." "Apple_PubSub_Socket_Render=3D/pr= ivate/tmp/com..." "SHELL=3D/Users/slippycheeze/homebrew/bin/zsh&q= uot; "HOME=3D/Users/slippycheeze" "__CF_USER_TEXT_ENCODING= =3D0x64DE5:0x0:0x0" "TMPDIR=3D/var/folders/bc/tpg4l8wj7gg2722p938= 4...") (pwd . "/gssh:slippycheeze.X.XXXXXXXX.com:/XXXXXX/X...&quo= t;) (buf-name . " *deferred:*/usr/bin/timeout*:42") (proc-name . = "*deferred:*/usr/bin/timeout*:42") (uid . 42) (d . #s(deferred :c= allback deferred:default-callback :errorback deferred:default-errorback :ca= ncel deferred:default-cancel :next #s(deferred :callback #0 :errorback defe= rred:default-errorback :cancel deferred:default-cancel :next nil :status ni= l :value nil) :status nil :value nil)) (args "5s" "p4" = "-zprog=3Dgoogle-piper.el" "--format=3D%depotFile%\n%clientF= ile%\n%action%\n..." "fstat" "--" "/gssh:slip= pycheeze.X.XXXXXXXX.com:/XXXXXX/X...") (command . "/usr/bin/timeo= ut") (f . start-process) cl-struct-deferred-tags t) (_x) (setq proc-bu= f (get-buffer-create buf-name)) (condition-case err (let ((default-director= y 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)
=C2=A0 f= uncall((closure ((proc) (proc-buf . #<buffer=C2=A0 *deferred:*/usr/bin/t= imeout*:42>) (nd . #s(deferred :callback deferred:default-callback :erro= rback deferred:default-errorback :cancel deferred:default-cancel :next #s(d= eferred :callback (closure (... ... ... ... ... cl-struct-deferred-tags t) = (buf) (prog1 ... ...)) :errorback deferred:default-errorback :cancel (closu= re (... ... ... ... ... ... cl-struct-deferred-tags t) (_x) (deferred:defau= lt-cancel d) (deferred:default-cancel pd)) :next #s(deferred :callback (clo= sure ... ... ...) :errorback deferred:default-errorback :cancel deferred:de= fault-cancel :next #s(deferred :callback deferred:default-callback :errorba= ck 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=3Ddumb" "P4CONFIG=3D.p4config"= "MANPATH=3D/Users/slippycheeze/share/man:/Users/slipp..." "= INFOPATH=3D/Users/slippycheeze/share/info:/Users/sli..." "LANG=3D= en_US.UTF-8" "XPC_FLAGS=3D0x0" "SECURITYSESSIONID=3DXXX= XX" "USER=3Dslippycheeze" "COMMAND_MODE=3Dunix2003"= ; "XPC_SERVICE_NAME=3Dorg.gnu.Emacs.15324" "DISPLAY=3D/priva= te/tmp/com.apple.launchd.O28Br4hHcs/..." "LOGNAME=3Dslippycheeze&= quot; "PATH=3D/Users/slippycheeze/.bagpipe:/Users/slippyche..." &= quot;SSH_AUTH_SOCK=3D/private/tmp/com.apple.launchd.Qs29e..." "Ap= ple_PubSub_Socket_Render=3D/private/tmp/com.apple...." "SHELL=3D/= Users/slippycheeze/homebrew/bin/zsh" "HOME=3D/Users/slippycheeze&= quot; "__CF_USER_TEXT_ENCODING=3D0x64DE5:0x0:0x0" "TMPDIR=3D= /var/folders/bc/tpg4l8wj7gg2722p9384ftww00c...") (pwd . "/gssh:sl= ippycheeze.X.XXXXXXXX.XXX:/XXXXXX/XXX/XXXX...") (buf-name . " *de= ferred:*/usr/bin/timeout*:42") (proc-name . "*deferred:*/usr/bin/= timeout*:42") (uid . 42) (d . #s(deferred :callback deferred:default-c= allback :errorback deferred:default-errorback :cancel deferred:default-canc= el :next #s(deferred :callback #1 :errorback deferred:default-errorback :ca= ncel deferred:default-cancel :next nil :status nil :value nil) :status nil = :value nil)) (args "5s" "p4" "-zprog=3Dgoogle-pipe= r.el" "--format=3D%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-buffe= r-create buf-name)) (condition-case err (let ((default-directory pwd) (proc= ess-environment env) (process-connection-type con-type)) (setq proc (if (nu= ll (car args)) (apply f proc-name buf-name command nil) (apply f proc-name = buf-name command args))) (set-process-sentinel proc #'(lambda (_proc ev= ent) (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)
<= div>=C2=A0 (condition-case err (funcall f arg) ('wrong-number-of-argume= nts (display-warning 'deferred "Callback that takes no argument ma= y be specified.\n..." err) (condition-case nil (funcall f) ('wrong= -number-of-arguments (signal 'wrong-number-of-arguments (cdr err))))))<= /div>
=C2=A0 deferred:call-lambda((closure ((proc) (proc-buf . #<buf= fer=C2=A0 *deferred:*/usr/bin/timeout*:42>) (nd . #s(deferred :callback = deferred:default-callback :errorback deferred:default-errorback :cancel def= erred:default-cancel :next #s(deferred :callback (closure (... ... ... ... = ... cl-struct-deferred-tags t) (buf) (prog1 ... ...)) :errorback deferred:d= efault-errorback :cancel (closure (... ... ... ... ... ... cl-struct-deferr= ed-tags t) (_x) (deferred:default-cancel d) (deferred:default-cancel pd)) := next #s(deferred :callback (closure ... ... ...) :errorback deferred:defaul= t-errorback :cancel deferred:default-cancel :next #s(deferred :callback def= erred:default-callback :errorback ignore :cancel deferred:default-cancel :n= ext ... :status nil :value nil) :status nil :value nil) :status nil :value = nil) :status nil :value nil)) (con-type . t) (env "TERM=3Ddumb" &= quot;P4CONFIG=3D.p4config" "MANPATH=3D/Users/slippycheeze/share/m= an:/Users/slipp..." "INFOPATH=3D/Users/slippycheeze/share/info:/U= sers/sli..." "LANG=3Den_US.UTF-8" "XPC_FLAGS=3D0x0"= ; "SECURITYSESSIONID=3DXXXXX" "USER=3Dslippycheeze" &qu= ot;COMMAND_MODE=3Dunix2003" "XPC_SERVICE_NAME=3Dorg.gnu.Emacs.153= 24" "DISPLAY=3D/private/tmp/com.apple.launchd.O28Br4hHcs/..."= ; "LOGNAME=3Dslippycheeze" "PATH=3D/Users/slippycheeze/.bagp= ipe:/Users/slippyche..." "SSH_AUTH_SOCK=3D/private/tmp/com.apple.= launchd.Qs29e..." "Apple_PubSub_Socket_Render=3D/private/tmp/com.= apple...." "SHELL=3D/Users/slippycheeze/homebrew/bin/zsh" &q= uot;HOME=3D/Users/slippycheeze" "__CF_USER_TEXT_ENCODING=3D0x64DE= 5:0x0:0x0" "TMPDIR=3D/var/folders/bc/tpg4l8wj7gg2722p9384ftww00c.= ..") (pwd . "/gssh:slippycheeze.X.XXXXXXXX.XXX:/XXXXXX/XXX/XXXX..= .") (buf-name . " *deferred:*/usr/bin/timeout*:42") (proc-na= me . "*deferred:*/usr/bin/timeout*:42") (uid . 42) (d . #s(deferr= ed :callback deferred:default-callback :errorback deferred:default-errorbac= k :cancel deferred:default-cancel :next #s(deferred :callback #1 :errorback= deferred:default-errorback :cancel deferred:default-cancel :next nil :stat= us nil :value nil) :status nil :value nil)) (args "5s" "p4&q= uot; "-zprog=3Dgoogle-piper.el" "--format=3D%depotFile%\n%cl= ientFile%\n%action%\n%change..." "fstat" "--" &quo= t;/gssh:slippycheeze.X.XXXXXXXX.XXX:/XXXXXX/XXX/XXXX...") (command . &= quot;/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-typ= e con-type)) (setq proc (if (null (car args)) (apply f proc-name buf-name c= ommand nil) (apply f proc-name buf-name command args))) (set-process-sentin= el 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)
=C2=A0 (let ((value (deferred:call-lambd= a 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) (prog= n (or (and (memq ... cl-struct-deferred-tags) t) (signal 'wrong-type-ar= gument (list ... d))) (let* ((v d)) (aset v 5 'ok))) (progn (or (and (m= emq ... cl-struct-deferred-tags) t) (signal 'wrong-type-argument (list = ... d))) (let* ((v d)) (aset v 6 value))) value))))
=C2=A0 (condi= tion-case err (let ((value (deferred:call-lambda callback arg))) (cond ((an= d (memq (type-of value) cl-struct-deferred-tags) t) nil (if next-deferred (= deferred:set-next value next-deferred) value)) (t (if next-deferred (deferr= ed: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 (de= ferred:post-task next-deferred 'ng err)) (deferred:onerror (deferred:ca= ll-lambda deferred:onerror err)) (t nil (message "deferred error : %S&= quot; err) (progn (or (and (memq ... cl-struct-deferred-tags) t) (signal &#= 39;wrong-type-argument (list ... d))) (let* ((v d)) (aset v 5 'ng))) (p= rogn (or (and (memq ... cl-struct-deferred-tags) t) (signal 'wrong-type= -argument (list ... d))) (let* ((v d)) (aset v 6 err))) err))))
= =C2=A0 (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-d= eferred (deferred:set-next value next-deferred) value)) (t (if next-deferre= d (deferred:post-task next-deferred 'ok value) (progn (or ... ...) (let= * ... ...)) (progn (or ... ...) (let* ... ...)) value)))) (error (cond (nex= t-deferred (deferred:post-task next-deferred 'ng err)) (deferred:onerro= r (deferred:call-lambda deferred:onerror err)) (t nil (message "deferr= ed error : %S" err) (progn (or (and ... t) (signal ... ...)) (let* (..= .) (aset v 5 ...))) (progn (or (and ... t) (signal ... ...)) (let* (...) (a= set v 6 err))) err)))))
=C2=A0 (cond (callback (let ((debug-on-si= gnal (or debug-on-signal deferred:debug-on-signal))) (condition-case err (l= et ((value (deferred:call-lambda callback arg))) (cond ((and ... t) nil (if= next-deferred ... value)) (t (if next-deferred ... ... ... value)))) (erro= r (cond (next-deferred (deferred:post-task next-deferred ... err)) (deferre= d:onerror (deferred:call-lambda deferred:onerror err)) (t nil (message &quo= t;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)))))
=C2=A0 (let ((= callback (if (eq which 'ok) (progn (or (and (memq ... cl-struct-deferre= d-tags) t) (signal 'wrong-type-argument (list ... d))) (aref d 1)) (pro= gn (or (and (memq ... cl-struct-deferred-tags) t) (signal 'wrong-type-a= rgument (list ... d))) (aref d 2)))) (next-deferred (progn (or (and (memq (= type-of d) cl-struct-deferred-tags) t) (signal 'wrong-type-argument (li= st '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))))))
=C2=A0 deferred:exec-task(#s(deferre= d :callback (closure ((proc) (proc-buf . #<buffer=C2=A0 *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-er= rorback :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=3Ddumb" "P4CONFIG=3D.p4config&qu= ot; "MANPATH=3D/Users/slippycheeze/share/man:/Users/slipp..." &qu= ot;INFOPATH=3D/Users/slippycheeze/share/info:/Users/sli..." "LANG= =3Den_US.UTF-8" "XPC_FLAGS=3D0x0" "SECURITYSESSIONID=3D= XXXXX" "USER=3Dslippycheeze" "COMMAND_MODE=3Dunix2003&q= uot; "XPC_SERVICE_NAME=3Dorg.gnu.Emacs.15324" "DISPLAY=3D/pr= ivate/tmp/com.apple.launchd.O28Br4hHcs/..." "LOGNAME=3Dslippychee= ze" "PATH=3D/Users/slippycheeze/.bagpipe:/Users/slippyche..."= ; "SSH_AUTH_SOCK=3D/private/tmp/com.apple.launchd.Qs29e..." "= ;Apple_PubSub_Socket_Render=3D/private/tmp/com.apple...." "SHELL= =3D/Users/slippycheeze/homebrew/bin/zsh" "HOME=3D/Users/slippyche= eze" "__CF_USER_TEXT_ENCODING=3D0x64DE5:0x0:0x0" "TMPDI= R=3D/var/folders/bc/tpg4l8wj7gg2722p9384ftww00c...") (pwd . "/gss= h: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:defau= lt-callback :errorback deferred:default-errorback :cancel deferred:default-= cancel :next #1 :status nil :value nil)) (args "5s" "p4"= ; "-zprog=3Dgoogle-piper.el" "--format=3D%depotFile%\n%clien= tFile%\n%action%\n%change..." "fstat" "--" "/= gssh:slippycheeze.X.XXXXXXXX.XXX:/XXXXXX/XXX/XXXX...") (command . &quo= t;/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 c= on-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 #&= #39;(lambda ... ...)) (progn (or (and ... t) (signal ... ...)) (let* (...) = (aset v 3 ...)))) (error (deferred:post-task nd 'ng err))) nil) :errorb= ack deferred:default-errorback :cancel deferred:default-cancel :next nil :s= tatus nil :value nil) ok nil)
=C2=A0 (setq value (deferred:exec-t= ask d which arg))
=C2=A0 (condition-case err (setq value (deferre= d:exec-task d which arg)) (error nil (message "deferred error : %s&quo= t; err)))
=C2=A0 (let* ((pack (car (last deferred:queue))) (d (ca= r pack)) (which (car (cdr pack))) (arg (cdr (cdr pack))) value) (setq defer= red:queue (nbutlast deferred:queue)) (condition-case err (setq value (defer= red:exec-task d which arg)) (error nil (message "deferred error : %s&q= uot; err))) value)
=C2=A0 (progn (let* ((pack (car (last deferred= :queue))) (d (car pack)) (which (car (cdr pack))) (arg (cdr (cdr pack))) va= lue) (setq deferred:queue (nbutlast deferred:queue)) (condition-case err (s= etq value (deferred:exec-task d which arg)) (error nil (message "defer= red error : %s" err))) value))
=C2=A0 (if deferred:queue (pr= ogn (let* ((pack (car (last deferred:queue))) (d (car pack)) (which (car (c= dr pack))) (arg (cdr (cdr pack))) value) (setq deferred:queue (nbutlast def= erred:queue)) (condition-case err (setq value (deferred:exec-task d which a= rg)) (error nil (message "deferred error : %s" err))) value)))
=C2=A0 deferred:worker()
=C2=A0 apply(deferred:worker nil= )
=C2=A0 timer-event-handler([t 23709 65205 28583 nil deferred:wo= rker nil nil 0])
=C2=A0 input-pending-p(t)
=C2=A0 sit-f= or(30)
=C2=A0 #f(compiled-function () #<bytecode 0x1fe44d8a039= 9>)()
=C2=A0 tramp-user-error(nil "Not a Tramp file name:= \"%s\"" "~")
=C2=A0 (if (tramp-tramp-fi= le-p name) nil (tramp-user-error nil "Not a Tramp file name: \"%s= \"" name))
=C2=A0 (unless (tramp-tramp-file-p name) (tr= amp-user-error nil "Not a Tramp file name: \"%s\"" name= ))
=C2=A0 (progn (unless (tramp-tramp-file-p name) (tramp-user-er= ror 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-str= ing (nth 1 tramp-file-name-structure) name)) (user (match-string (nth 2 tra= mp-file-name-structure) name)) (host (match-string (nth 3 tramp-file-name-s= tructure) 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-st= ring 2 host) host (match-string 1 host))) (when (string-match tramp-prefix-= ipv6-regexp host) (setq host (replace-match "" nil t host))) (whe= n (string-match tramp-postfix-ipv6-regexp host) (setq host (replace-match &= quot;" nil t host)))) (unless nodefault (when hop (setq v (tramp-disse= ct-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 hos= t :port port :localname localname :hop hop)) (when (and hop (or (not ...) (= tramp-get-method-parameter v ...))) (tramp-user-error v "Method `%s= 9; is not supported for multi-hops." method))))))
=C2=A0 (un= wind-protect (progn (unless (tramp-tramp-file-p name) (tramp-user-error nil= "Not a Tramp file name: \"%s\"" name)) (if (not (strin= g-match (nth 0 tramp-file-name-structure) name)) (error "`tramp-file-n= ame-structure' didn't match!") (let ((method (match-string (nt= h 1 tramp-file-name-structure) name)) (user (match-string (nth 2 tramp-file= -name-structure) name)) (host (match-string (nth 3 tramp-file-name-structur= e) 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 d= omain (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-re= gexp host) (setq host (replace-match "" nil t host))) (when (stri= ng-match tramp-postfix-ipv6-regexp host) (setq host (replace-match "&q= uot; 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 hos= t :port port :localname localname :hop hop)) (when (and hop (or ... ...)) (= tramp-user-error v "Method `%s' is not supported for multi-hops.&q= uot; method)))))) (set-match-data save-match-data-internal 'evaporate))=
=C2=A0 (let ((save-match-data-internal (match-data))) (unwind-pr= otect (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-str= ucture' 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 h= ost) (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-tra= mp-file-name :method method :user user :domain domain :host host :port port= :localname localname :hop hop)) (when (and hop ...) (tramp-user-error v &q= uot;Method `%s' is not supported for multi-hops." method)))))) (se= t-match-data save-match-data-internal 'evaporate)))
=C2=A0 (s= ave-match-data (unless (tramp-tramp-file-p name) (tramp-user-error nil &quo= t;Not a Tramp file name: \"%s\"" name)) (if (not (string-mat= ch (nth 0 tramp-file-name-structure) name)) (error "`tramp-file-name-s= tructure' didn't match!") (let ((method (match-string (nth 1 t= ramp-file-name-structure) name)) (user (match-string (nth 2 tramp-file-name= -structure) name)) (host (match-string (nth 3 tramp-file-name-structure) na= me)) (localname (match-string (nth 4 tramp-file-name-structure) name)) (hop= (match-string (nth 5 tramp-file-name-structure) name)) domain port v) (whe= n user (when (string-match tramp-user-with-domain-regexp user) (setq domain= (match-string 2 user) user (match-string 1 user)))) (when host (when (stri= ng-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-ma= tch 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-hos= t (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-tra= mp-file-name :method method :user user :domain domain :host host :port port= :localname localname :hop hop)) (when (and hop (or (not ...) (tramp-get-me= thod-parameter v ...))) (tramp-user-error v "Method `%s' is not su= pported for multi-hops." method))))))
=C2=A0 tramp-dissect-f= ile-name("~")
=C2=A0 (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)) (p= ort (tramp-file-name-port v)) (localname (tramp-file-name-localname v)) (ho= p (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))))
=C2=A0 (with-parsed-tr= amp-file-name filename nil (cond ((and fn (memq operation '(file-exists= -p file-readable-p))) (add-to-list 'tramp-vc-registered-file-names loca= lname 'append) nil) ((and fn (eq operation 'process-file) 0)) ((and= fn (eq operation 'start-file-process) nil)) (fn (save-match-data (appl= y (cdr fn) args))) (t (tramp-run-real-handler operation args))))
= =C2=A0 (let ((filename (tramp-replace-environment-variables (apply #'tr= amp-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-li= st 'tramp-vc-registered-file-names localname 'append) nil) ((and fn= (eq operation 'process-file) 0)) ((and fn (eq operation 'start-fil= e-process) nil)) (fn (save-match-data (apply (cdr fn) args))) (t (tramp-run= -real-handler operation args)))))
=C2=A0 (progn (let ((filename (= tramp-replace-environment-variables (apply #'tramp-file-name-for-operat= ion operation args))) (fn (assoc operation tramp-sh-file-name-handler-alist= ))) (with-parsed-tramp-file-name filename nil (cond ((and fn (memq operatio= n '...)) (add-to-list 'tramp-vc-registered-file-names localname = 9;append) nil) ((and fn (eq operation 'process-file) 0)) ((and fn (eq o= peration 'start-file-process) nil)) (fn (save-match-data (apply (cdr fn= ) args))) (t (tramp-run-real-handler operation args))))))
=C2=A0 = (unwind-protect (progn (let ((filename (tramp-replace-environment-variables= (apply #'tramp-file-name-for-operation operation args))) (fn (assoc op= eration tramp-sh-file-name-handler-alist))) (with-parsed-tramp-file-name fi= lename 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 ... ar= gs))) (t (tramp-run-real-handler operation args)))))) (set-match-data save-= match-data-internal 'evaporate))
=C2=A0 (let ((save-match-dat= a-internal (match-data))) (unwind-protect (progn (let ((filename (tramp-rep= lace-environment-variables (apply ... operation args))) (fn (assoc operatio= n 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-handle= r operation args)))))) (set-match-data save-match-data-internal 'evapor= ate)))
=C2=A0 (save-match-data (let ((filename (tramp-replace-env= ironment-variables (apply #'tramp-file-name-for-operation operation arg= s))) (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 'sta= rt-file-process) nil)) (fn (save-match-data (apply (cdr fn) args))) (t (tra= mp-run-real-handler operation args))))))
=C2=A0 tramp-vc-file-nam= e-handler(expand-file-name "~" "/gssh:slippycheeze.X.XXXXXXX= X.XXX:/XXXXXX/XXX/XXXX...")
=C2=A0 make-process(:name "= *deferred:*/usr/bin/timeout*:41" :buffer " *deferred:*/usr/bin/ti= meout*:41" :command ("/usr/bin/timeout" "1s" "= ;p4" "-zprog=3Dgoogle-piper.el" "--format=3D%clientName= %\n%clientRoot%" "info"))
=C2=A0 apply(make-proces= s (:name "*deferred:*/usr/bin/timeout*:41" :buffer " *deferr= ed:*/usr/bin/timeout*:41" :command ("/usr/bin/timeout" "= ;1s" "p4" "-zprog=3Dgoogle-piper.el" "--forma= t=3D%clientName%\n%clientRoot%" "info")))
=C2=A0 s= tart-process("*deferred:*/usr/bin/timeout*:41" " *deferred:*= /usr/bin/timeout*:41" "/usr/bin/timeout" "1s" &quo= t;p4" "-zprog=3Dgoogle-piper.el" "--format=3D%clientNam= e%\n%clientRoot%" "info")
=C2=A0 apply(start-proce= ss "*deferred:*/usr/bin/timeout*:41" " *deferred:*/usr/bin/t= imeout*:41" "/usr/bin/timeout" ("1s" "p4"= ; "-zprog=3Dgoogle-piper.el" "--format=3D%clientName%\n%clie= ntRoot%" "info"))
=C2=A0 (if (null (car args)) (ap= ply f proc-name buf-name command nil) (apply f proc-name buf-name command a= rgs))
=C2=A0 (setq proc (if (null (car args)) (apply f proc-name = buf-name command nil) (apply f proc-name buf-name command args)))
=C2=A0 (let ((default-directory pwd) (process-environment env) (process-co= nnection-type con-type)) (setq proc (if (null (car args)) (apply f proc-nam= e buf-name command nil) (apply f proc-name buf-name command args))) (set-pr= ocess-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:pos= t-task nd 'ok proc-buf))))) (progn (or (and (memq (type-of nd) cl-struc= t-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 ... ...)))))))
=C2=A0 (condition-case err (let ((= default-directory pwd) (process-environment env) (process-connection-type c= on-type)) (setq proc (if (null (car args)) (apply f proc-name buf-name comm= and nil) (apply f proc-name buf-name command args))) (set-process-sentinel = proc #'(lambda (_proc event) (cond ((string-match "exited abnormal= ly" event) (let ... ... ...)) ((equal event "finished\n") (d= eferred:post-task nd ... proc-buf))))) (progn (or (and (memq (type-of nd) c= l-struct-deferred-tags) t) (signal 'wrong-type-argument (list 'defe= rred nd))) (let* ((v nd)) (aset v 3 #'(lambda (x) (deferred:default-can= cel x) (if proc ...)))))) (error (deferred:post-task nd 'ng err)))
=C2=A0 (closure ((proc) (proc-buf . #<buffer=C2=A0 *deferred:*/usr= /bin/timeout*:41>) (nd . #s(deferred :callback deferred:default-callback= :errorback deferred:default-errorback :cancel deferred:default-cancel :nex= t #s(deferred :callback (closure ... ... ...) :errorback deferred:default-e= rrorback :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=3Ddumb" "P4CONFIG=3D.p4config&q= uot; "MANPATH=3D/Users/slippycheeze/share/man:/User..." "INF= OPATH=3D/Users/slippycheeze/share/info:/Us..." "LANG=3Den_US.UTF-= 8" "XPC_FLAGS=3D0x0" "SECURITYSESSIONID=3DXXXXX" &= quot;USER=3Dslippycheeze" "COMMAND_MODE=3Dunix2003" "XP= C_SERVICE_NAME=3Dorg.gnu.Emacs.15324" "DISPLAY=3D/private/tmp/com= .apple.launchd.O28B..." "LOGNAME=3Dslippycheeze" "PATH= =3D/Users/slippycheeze/.bagpipe:/Users/sl..." "SSH_AUTH_SOCK=3D/p= rivate/tmp/com.apple.launch..." "Apple_PubSub_Socket_Render=3D/pr= ivate/tmp/com..." "SHELL=3D/Users/slippycheeze/homebrew/bin/zsh&q= uot; "HOME=3D/Users/slippycheeze" "__CF_USER_TEXT_ENCODING= =3D0x64DE5:0x0:0x0" "TMPDIR=3D/var/folders/bc/tpg4l8wj7gg2722p938= 4...") (pwd . "/gssh:slippycheeze.X.XXXXXXXX.com:/XXXXXX/X...&quo= t;) (buf-name . " *deferred:*/usr/bin/timeout*:41") (proc-name . = "*deferred:*/usr/bin/timeout*:41") (uid . 41) (d . #s(deferred :c= allback deferred:default-callback :errorback deferred:default-errorback :ca= ncel deferred:default-cancel :next #s(deferred :callback #0 :errorback defe= rred:default-errorback :cancel deferred:default-cancel :next nil :status ni= l :value nil) :status nil :value nil)) (args "1s" "p4" = "-zprog=3Dgoogle-piper.el" "--format=3D%clientName%\n%client= Root%" "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) (proces= s-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 (defe= rred:post-task nd 'ng err))) nil)(nil)
=C2=A0 funcall((closur= e ((proc) (proc-buf . #<buffer=C2=A0 *deferred:*/usr/bin/timeout*:41>= ) (nd . #s(deferred :callback deferred:default-callback :errorback deferred= :default-errorback :cancel deferred:default-cancel :next #s(deferred :callb= ack (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 :cance= l deferred:default-cancel :next ... :status nil :value nil) :status nil :va= lue nil) :status nil :value nil) :status nil :value nil)) (con-type . t) (e= nv "TERM=3Ddumb" "P4CONFIG=3D.p4config" "MANPATH= =3D/Users/slippycheeze/share/man:/Users/slipp..." "INFOPATH=3D/Us= ers/slippycheeze/share/info:/Users/sli..." "LANG=3Den_US.UTF-8&qu= ot; "XPC_FLAGS=3D0x0" "SECURITYSESSIONID=3DXXXXX" "= ;USER=3Dslippycheeze" "COMMAND_MODE=3Dunix2003" "XPC_SE= RVICE_NAME=3Dorg.gnu.Emacs.15324" "DISPLAY=3D/private/tmp/com.app= le.launchd.O28Br4hHcs/..." "LOGNAME=3Dslippycheeze" "PA= TH=3D/Users/slippycheeze/.bagpipe:/Users/slippyche..." "SSH_AUTH_= SOCK=3D/private/tmp/com.apple.launchd.Qs29e..." "Apple_PubSub_Soc= ket_Render=3D/private/tmp/com.apple...." "SHELL=3D/Users/slippych= eeze/homebrew/bin/zsh" "HOME=3D/Users/slippycheeze" "__= CF_USER_TEXT_ENCODING=3D0x64DE5:0x0:0x0" "TMPDIR=3D/var/folders/b= c/tpg4l8wj7gg2722p9384ftww00c...") (pwd . "/gssh:slippycheeze.X.X= XXXXXXX.XXX:/XXXXXX/XXX/XXXX...") (buf-name . " *deferred:*/usr/b= in/timeout*:41") (proc-name . "*deferred:*/usr/bin/timeout*:41&qu= ot;) (uid . 41) (d . #s(deferred :callback deferred:default-callback :error= back deferred:default-errorback :cancel deferred:default-cancel :next #s(de= ferred :callback #1 :errorback deferred:default-errorback :cancel deferred:= default-cancel :next nil :status nil :value nil) :status nil :value nil)) (= args "1s" "p4" "-zprog=3Dgoogle-piper.el" &qu= ot;--format=3D%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 (l= et ((default-directory pwd) (process-environment env) (process-connection-t= ype 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-sent= inel proc #'(lambda (_proc event) (cond ... ...))) (progn (or (and (mem= q ... cl-struct-deferred-tags) t) (signal 'wrong-type-argument (list ..= . nd))) (let* ((v nd)) (aset v 3 #'...)))) (error (deferred:post-task n= d 'ng err))) nil) nil)
=C2=A0 (condition-case err (funcall f = arg) ('wrong-number-of-arguments (display-warning 'deferred "C= allback that takes no argument may be specified.\n..." err) (condition= -case nil (funcall f) ('wrong-number-of-arguments (signal 'wrong-nu= mber-of-arguments (cdr err))))))
=C2=A0 deferred:call-lambda((clo= sure ((proc) (proc-buf . #<buffer=C2=A0 *deferred:*/usr/bin/timeout*:41&= gt;) (nd . #s(deferred :callback deferred:default-callback :errorback defer= red:default-errorback :cancel deferred:default-cancel :next #s(deferred :ca= llback (closure (... ... ... ... ... cl-struct-deferred-tags t) (buf) (prog= 1 ... ...)) :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-cance= l :next #s(deferred :callback ... :errorback deferred:default-errorback :ca= ncel 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=3Ddumb" "P4CONFIG=3D.p4config" "MANPAT= H=3D/Users/slippycheeze/share/man:/Users/slipp..." "INFOPATH=3D/U= sers/slippycheeze/share/info:/Users/sli..." "LANG=3Den_US.UTF-8&q= uot; "XPC_FLAGS=3D0x0" "SECURITYSESSIONID=3DXXXXX" &quo= t;USER=3Dslippycheeze" "COMMAND_MODE=3Dunix2003" "XPC_S= ERVICE_NAME=3Dorg.gnu.Emacs.15324" "DISPLAY=3D/private/tmp/com.ap= ple.launchd.O28Br4hHcs/..." "LOGNAME=3Dslippycheeze" "P= ATH=3D/Users/slippycheeze/.bagpipe:/Users/slippyche..." "SSH_AUTH= _SOCK=3D/private/tmp/com.apple.launchd.Qs29e..." "Apple_PubSub_So= cket_Render=3D/private/tmp/com.apple...." "SHELL=3D/Users/slippyc= heeze/homebrew/bin/zsh" "HOME=3D/Users/slippycheeze" "_= _CF_USER_TEXT_ENCODING=3D0x64DE5:0x0:0x0" "TMPDIR=3D/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&q= uot;) (uid . 41) (d . #s(deferred :callback deferred:default-callback :erro= rback deferred:default-errorback :cancel deferred:default-cancel :next #s(d= eferred :callback #1 :errorback deferred:default-errorback :cancel deferred= :default-cancel :next nil :status nil :value nil) :status nil :value nil)) = (args "1s" "p4" "-zprog=3Dgoogle-piper.el" &q= uot;--format=3D%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-nam= e command nil) (apply f proc-name buf-name command args))) (set-process-sen= tinel proc #'(lambda (_proc event) (cond ... ...))) (progn (or (and (me= mq ... 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)
=C2=A0 (let ((value (deferred:call-la= mbda callback arg))) (cond ((and (memq (type-of value) cl-struct-deferred-t= ags) t) nil (if next-deferred (deferred:set-next value next-deferred) value= )) (t (if next-deferred (deferred:post-task next-deferred 'ok value) (p= rogn (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 (li= st ... d))) (let* ((v d)) (aset v 6 value))) value))))
=C2=A0 (co= ndition-case err (let ((value (deferred:call-lambda callback arg))) (cond (= (and (memq (type-of value) cl-struct-deferred-tags) t) nil (if next-deferre= d (deferred:set-next value next-deferred) value)) (t (if next-deferred (def= erred: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-t= ype-argument (list ... d))) (let* ((v d)) (aset v 6 err))) err))))
=C2=A0 (let ((debug-on-signal (or debug-on-signal deferred:debug-on-signa= l))) (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-defer= red (deferred:post-task next-deferred 'ok value) (progn (or ... ...) (l= et* ... ...)) (progn (or ... ...) (let* ... ...)) value)))) (error (cond (n= ext-deferred (deferred:post-task next-deferred 'ng err)) (deferred:oner= ror (deferred:call-lambda deferred:onerror err)) (t nil (message "defe= rred error : %S" err) (progn (or (and ... t) (signal ... ...)) (let* (= ...) (aset v 5 ...))) (progn (or (and ... t) (signal ... ...)) (let* (...) = (aset v 6 err))) err)))))
=C2=A0 (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)))) (er= ror (cond (next-deferred (deferred:post-task next-deferred ... err)) (defer= red:onerror (deferred:call-lambda deferred:onerror err)) (t nil (message &q= uot;deferred error : %S" err) (progn ... ...) (progn ... ...) err)))))= ) (t (cond (next-deferred (deferred:exec-task next-deferred which arg)) ((e= q which 'ok) arg) (t (deferred:resignal arg)))))
=C2=A0 (let = ((callback (if (eq which 'ok) (progn (or (and (memq ... cl-struct-defer= red-tags) t) (signal 'wrong-type-argument (list ... d))) (aref d 1)) (p= rogn (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-signa= l (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-deferr= ed (deferred:exec-task next-deferred which arg)) ((eq which 'ok) arg) (= t (deferred:resignal arg))))))
=C2=A0 deferred:exec-task(#s(defer= red :callback (closure ((proc) (proc-buf . #<buffer=C2=A0 *deferred:*/us= r/bin/timeout*:41>) (nd . #s(deferred :callback deferred:default-callbac= k :errorback deferred:default-errorback :cancel deferred:default-cancel :ne= xt #s(deferred :callback (closure ... ... ...) :errorback deferred:default-= errorback :cancel (closure ... ... ... ...) :next #s(deferred :callback ...= :errorback deferred:default-errorback :cancel deferred:default-cancel :nex= t ... :status nil :value nil) :status nil :value nil) :status nil :value ni= l)) (con-type . t) (env "TERM=3Ddumb" "P4CONFIG=3D.p4config&= quot; "MANPATH=3D/Users/slippycheeze/share/man:/Users/slipp..." &= quot;INFOPATH=3D/Users/slippycheeze/share/info:/Users/sli..." "LA= NG=3Den_US.UTF-8" "XPC_FLAGS=3D0x0" "SECURITYSESSIONID= =3DXXXXX" "USER=3Dslippycheeze" "COMMAND_MODE=3Dunix200= 3" "XPC_SERVICE_NAME=3Dorg.gnu.Emacs.15324" "DISPLAY=3D= /private/tmp/com.apple.launchd.O28Br4hHcs/..." "LOGNAME=3Dslippyc= heeze" "PATH=3D/Users/slippycheeze/.bagpipe:/Users/slippyche...&q= uot; "SSH_AUTH_SOCK=3D/private/tmp/com.apple.launchd.Qs29e..." &q= uot;Apple_PubSub_Socket_Render=3D/private/tmp/com.apple...." "SHE= LL=3D/Users/slippycheeze/homebrew/bin/zsh" "HOME=3D/Users/slippyc= heeze" "__CF_USER_TEXT_ENCODING=3D0x64DE5:0x0:0x0" "TMP= DIR=3D/var/folders/bc/tpg4l8wj7gg2722p9384ftww00c...") (pwd . "/g= ssh:slippycheeze.X.XXXXXXXX.XXX:/XXXXXX/XXX/XXXX...") (buf-name . &quo= t; *deferred:*/usr/bin/timeout*:41") (proc-name . "*deferred:*/us= r/bin/timeout*:41") (uid . 41) (d . #s(deferred :callback deferred:def= ault-callback :errorback deferred:default-errorback :cancel deferred:defaul= t-cancel :next #1 :status nil :value nil)) (args "1s" "p4&qu= ot; "-zprog=3Dgoogle-piper.el" "--format=3D%clientName%\n%cl= ientRoot%" "info") (command . "/usr/bin/timeout") = (f . start-process) cl-struct-deferred-tags t) (_x) (setq proc-buf (get-buf= fer-create buf-name)) (condition-case err (let ((default-directory pwd) (pr= ocess-environment env) (process-connection-type con-type)) (setq proc (if (= null ...) (apply f proc-name buf-name command nil) (apply f proc-name buf-n= ame command args))) (set-process-sentinel proc #'(lambda ... ...)) (pro= gn (or (and ... t) (signal ... ...)) (let* (...) (aset v 3 ...)))) (error (= deferred:post-task nd 'ng err))) nil) :errorback deferred:default-error= back :cancel deferred:default-cancel :next nil :status nil :value nil) ok n= il)
=C2=A0 (setq value (deferred:exec-task d which arg))
=C2=A0 (condition-case err (setq value (deferred:exec-task d which arg)) = (error nil (message "deferred error : %s" err)))
=C2=A0= (let* ((pack (car (last deferred:queue))) (d (car pack)) (which (car (cdr = pack))) (arg (cdr (cdr pack))) value) (setq deferred:queue (nbutlast deferr= ed:queue)) (condition-case err (setq value (deferred:exec-task d which arg)= ) (error nil (message "deferred error : %s" err))) value)
=C2=A0 (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-t= ask d which arg)) (error nil (message "deferred error : %s" err))= ) value))
=C2=A0 (if deferred:queue (progn (let* ((pack (car (las= t deferred:queue))) (d (car pack)) (which (car (cdr pack))) (arg (cdr (cdr = pack))) value) (setq deferred:queue (nbutlast deferred:queue)) (condition-c= ase err (setq value (deferred:exec-task d which arg)) (error nil (message &= quot;deferred error : %s" err))) value)))
=C2=A0 deferred:wo= rker()
=C2=A0 apply(deferred:worker nil)
=C2=A0 timer-e= vent-handler([t 23709 65205 28556 nil deferred:worker nil nil 0])
=C2=A0 process-send-string(#<process *tramp/gssh slippycheeze.c.googlers.com*> "tramp_v= c_registered_read_file_names <<'c231581b08e...")
= =C2=A0 tramp-send-string((tramp-file-name "gssh" nil nil "slippycheeze.c.googlers.com" nil "/google/src/cloud/slippycheeze/work/google3/storag...&quo= t; nil) "tramp_vc_registered_read_file_names <<'c231581b08e.= ..")
=C2=A0 tramp-send-command((tramp-file-name "gssh&q= uot; nil nil "slippyche= eze.c.googlers.com" nil "/google/src/cloud/slippycheeze/work/= google3/storag..." nil) "tramp_vc_registered_read_file_names <= <'c231581b08e...")
=C2=A0 tramp-sh-handle-vc-register= ed("/gssh:slippycheeze.X.XXXXXXXX.XXX:/XXXXXX/XXX/XXXX...")
=
=C2=A0 apply(tramp-sh-handle-vc-registered "/gssh:slippycheeze.X.= XXXXXXXX.XXX:/XXXXXX/XXX/XXXX...")
=C2=A0 tramp-sh-file-name= -handler(vc-registered "/gssh:slippycheeze.X.XXXXXXXX.XXX:/XXXXXX/XXX/= XXXX...")
=C2=A0 apply(tramp-sh-file-name-handler vc-registe= red "/gssh:slippycheeze.X.XXXXXXXX.XXX:/XXXXXX/XXX/XXXX...")
=C2=A0 tramp-file-name-handler(vc-registered "/gssh:slippycheeze= .X.XXXXXXXX.XXX:/XXXXXX/XXX/XXXX...")
=C2=A0 vc-registered(&= quot;/gssh:slippycheeze.X.XXXXXXXX.XXX:/XXXXXX/XXX/XXXX...")
=C2=A0 vc-backend("/gssh:slippycheeze.X.XXXXXXXX.XXX:/XXXXXX/XXX/XXXX= ...")
=C2=A0 vc-refresh-state()
=C2=A0 run-hooks(f= ind-file-hook)
=C2=A0 after-find-file(nil nil t nil nil)
=C2=A0 revert-buffer--default(t nil)
=C2=A0 revert-buffer(t)
=C2=A0 funcall-interactively(revert-buffer t)
=C2=A0 call= -interactively(revert-buffer record nil)
=C2=A0 command-execute(r= evert-buffer record)
=C2=A0 execute-extended-command(nil "re= vert-buffer" "revert-buf")
=C2=A0 funcall-interact= ively(execute-extended-command nil "revert-buffer" "revert-b= uf")
=C2=A0 call-interactively(execute-extended-command nil = nil)
=C2=A0 command-execute(execute-extended-command)
=

--0000000000003327d705853aede5--