Subject: Re: bug#23186: closed (Re: bug#23186: 25.0.92; Tramp: Windows does not always set COMSPEC, tramp blows up in a string-match)

From: Jerry Asher <[email-masked]>
Date: Sat, 2 Apr 2016 10:32:09 -0700

Heh, a bug report is a bug report REGARDLESS of how you felt you were
treated.

Since you started off your response to me

+ disparaging my bug report
+ misrepresenting what I said
+ summarizing it inaccurately
+ dismissing the evidence

You received in kind a report filled with frustration.

I can just see other people closing bug reports that discuss a clearly
documented and widely reported bug as seen by google searches with
responses like "I felt reporter was mean to me so I closed this bug report."

Jerry

On Sat, Apr 2, 2016 at 10:28 AM, GNU bug Tracking System <
[email-masked]> wrote:

> Your bug report
>
> #23186: 25.0.92; Tramp: Windows does not always set COMSPEC, tramp blows
> up in a string-match
>
> which was filed against the emacs package, has been closed.
>
> The explanation is attached below, along with your original report.
> If you require more details, please reply to [email-masked].
>
> --
> 23186: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=23186
> GNU Bug Tracking System
> Contact [email-masked] with problems
>
>
> ---------- Forwarded message ----------
> From: Eli Zaretskii <[email-masked]>
> To: [email-masked]
> Cc:
> Date: Sat, 02 Apr 2016 20:26:41 +0300
> Subject: Re: bug#23186: 25.0.92; Tramp: Windows does not always set
> COMSPEC, tramp blows up in a string-match
> > Date: Sat, 02 Apr 2016 19:44:18 +0300
> > From: Eli Zaretskii <[email-masked]>
> > Cc: [email-masked]
> >
> > What is the full contents of the environment of the Emacs process when
> > you run that zapped binary?
>
> Since the OP refused to answer even the above simplest question, and
> instead sent off-list a hostile email with personal attacks on me, I'm
> closing this bug report.
>
>
>
> ---------- Forwarded message ----------
> From: Jerry Asher <[email-masked]>
> To: [email-masked]
> Cc:
> Date: Sat, 2 Apr 2016 09:06:57 -0700
> Subject: 25.0.92; Tramp: Windows does not always set COMSPEC, tramp blows
> up in a string-match
>
> --text follows this line--
>
> I started the 64 bit version of windows emacs from a shortcut on my
> taskbar. I
> created the shortcut a few minutes ago by running emacs from the command
> line, then pinning the shortcut. (There is a big caveat and I'll discuss
> that at the end.)
>
> Starting emacs up in restoring my desktop it loaded a python file. That
> python file triggered python mode. Somewhere in there, ...
>
> Debugger entered--Lisp error: (wrong-type-argument stringp nil)
>   string-match("cmd\\.exe" nil)
>   (if (string-match "cmd\\.exe" tramp-encoding-shell) "/c" "-c")
>   eval((if (string-match "cmd\\.exe" tramp-encoding-shell) "/c" "-c"))
>   custom-initialize-reset(tramp-encoding-command-switch (if (string-match
> "cmd\\.exe" tramp-encoding-shell) "/c" "-c"))
>   custom-declare-variable(tramp-encoding-command-switch (if (string-match
> "cmd\\.exe" tramp-encoding-shell) "/c" "-c") "Use this switch together with
> `tramp-encoding-shell' for local commands.\nSee the variable
> `tramp-encoding-shell' for more information." :group tramp :type string)
>
> byte-code("\300\301!\210\302\303\304\305\306\307\306\310\311\312\313\314&
> \210\315\316\317\320\306\303\321\322& \210\315\323\324\325\306\303\321\326&
> \210\327\330!\203:
>
> I believe the problem is in tramp.el which assumes that COMSPEC has been
> set.
>
> (defcustom tramp-encoding-shell
>   (if (memq system-type '(windows-nt))
>       (getenv "COMSPEC")
>     "/bin/sh")
>
> The problem is that Windows can sometimes (see caveat below) start emacs
> such that COMSPEC is not defined.
>
> I think perhaps a fix would be something along the lines of:
>
> (defcustom tramp-encoding-shell
>   (if (memq system-type '(windows-nt))
>       (or (getenv "COMSPEC")
>           (concat (getenv "systemroot") "\\system32\\cmd.exe"))
>     "/bin/sh")
>
> I'm not a windows developer, but it seems that modulo the systemroot, the
> system32\cmd.exe path is always (?) the right path.
>
> So here's the caveat, I have poked the emacs.exe image so that it does not
> start as a console app, but so that it starts as a windows app. Now, I am
> not a windows developer, I do not know that this is why COMSPEC has not
> been set, but boy, it's got to be, right? ?
>
> For more on how to poke the emacs.exe image to start as a windows app, see
> here https://github.com/jerryasher/consoleAppToWin basically, doing so
> seems to make both ntemacs and cygwin emacs run a bit nicer, and so far,
> this is the only issue I've seen crop up.
>
> Now, you might reasonably claim that since I am starting up emacs in a
> very non-standard unsupported manner, the issue is totally mine and no fix
> is necessary. And there is some logic to that.
>
> Regardless, I would say the assumption that COMSPEC is always set and so
> therefore if it fails it is okay to assign nil to tramp-encoding-shell
> knowing that later on it will be in a string-match is problematic in and of
> itself.
>
> But I've seen other users report the basic cmd.exe tramp-encoding-shell
> string match problem, see:
>
> https://www.google.com/search?q=string-match%28
> "cmd%5C%5C.exe"+nil%29+tramp-encoding-shell
>
> I don't know that my fix would fix those issues as well, but those issues
> point to a basic problem where tramp-encoding-shell is set to nil and then
> later compared in string-match.
>
> So why not assign tramp-encoding-shell a default that will probably work
> instead?
>
> Thanks,
>
> Jerry Asher
>
> In GNU Emacs 25.0.92.1 (x86_64-w64-mingw32)
>  of 2016-03-03 built on KAEL
> Windowing system distributor 'Microsoft Corp.', version 6.1.7601
> Configured using:
>  'configure --prefix=/tmp/emacs --without-imagemagick 'CFLAGS=-O2
>  -fomit-frame-pointer -g0''
>
> Configured features:
> XPM JPEG TIFF GIF PNG RSVG SOUND DBUS NOTIFY ACL GNUTLS LIBXML2 ZLIB
> TOOLKIT_SCROLL_BARS
>
> Important settings:
>   value of $LANG: ENU
>   locale-coding-system: cp1252
>
> Major mode: Emacs-Lisp
>
> Minor modes in effect:
>   diff-auto-refine-mode: t
>   shell-dirtrack-mode: t
>   display-time-mode: t
>   tooltip-mode: t
>   global-eldoc-mode: t
>   electric-indent-mode: t
>   mouse-wheel-mode: t
>   menu-bar-mode: t
>   file-name-shadow-mode: t
>   global-font-lock-mode: t
>   font-lock-mode: t
>   auto-composition-mode: t
>   auto-encryption-mode: t
>   auto-compression-mode: t
>   column-number-mode: t
>   line-number-mode: t
>   transient-mark-mode: t
>
> Recent messages:
> Mark saved where search started
> Mark set
> nil
> Auto-saving...
> Unable to load color "peach"
> Mark set [3 times]
> Quit
> Mark saved where search started [2 times]
> Auto-saving...done
> Unable to load color "peach" [2 times]
>
> Load-path shadows:
> c:/Users/Jerry/.emacs.d/user-library/loaddefs hides
> c:/gnu/emacs-bin-w64-25.0.92-O2/emacs/share/emacs/25.0.92/lisp/loaddefs
> c:/Users/Jerry/Dropbox/elpa/seq-2.15/seq hides
> c:/gnu/emacs-bin-w64-25.0.92-O2/emacs/share/emacs/25.0.92/lisp/emacs-lisp/seq
> c:/gnu/emacs-bin-w64-25.0.92-O2/emacs/share/emacs/25.0.92/lisp/emacs-lisp/cl-generic
> hides c:/Users/Jerry/Dropbox/elpa/cl-generic-0.2/cl-generic
>
> Features:
> (shadow sort mail-extr emacsbug message rfc822 mml mml-sec epg mm-decode
> mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader
> sendmail rfc2047 rfc2045 ietf-drums mail-utils thingatpt find-or-tag
> find-func dired-aux dired misearch multi-isearch vc vc-dispatcher vc-git
> diff-mode easy-mmode warnings tramp-compat auth-source gnus-util mm-util
> help-fns mail-prsvr password-cache tramp-loaddefs trampver ucs-normalize
> shell pcomplete format-spec advice json map ido seq seq-25 grep compile
> files-x etags xref project eieio byte-opt bytecomp byte-compile cl-extra
> help-mode cconv eieio-core cus-edit wid-edit projectile-init
> paredit-init package-sync-init nssh-mode-init neotree-init
> multiple-cursor-init modeline-tweaks markdown-init magit-init
> javascript-init find-or-tag-init expand-region-init edmacro kmacro
> eldoc-init dired-init dev-requires desktop-init cygwin-init cygwin-mount
> ange-ftp comint ansi-color ring basic-defuns.el cl-seq cl-macs gv
> cl-loaddefs pcase cl-lib amazon-tweaks update-auto-loads utf-coding
> required-libraries print-list key-bindings finder-inf slime-autoloads
> info package easymenu epg-config time cus-start cus-load time-date
> mule-util tooltip eldoc electric uniquify ediff-hook vc-hooks
> lisp-float-type mwheel dos-w32 ls-lisp disp-table w32-win w32-vars
> term/common-win tool-bar dnd fontset image regexp-opt fringe
> tabulated-list newcomment elisp-mode lisp-mode prog-mode register page
> menu-bar rfn-eshadow timer select scroll-bar mouse jit-lock font-lock
> syntax facemenu font-core frame cl-generic cham georgian utf-8-lang
> misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms
> cp51932 hebrew greek romanian slovak czech european ethiopic indian
> cyrillic chinese charscript case-table epa-hook jka-cmpr-hook help
> simple abbrev minibuffer cl-preloaded nadvice loaddefs button faces
> cus-face macroexp files text-properties overlay sha1 md5 base64 format
> env code-pages mule custom widget hashtable-print-readable backquote
> w32notify dbusbind w32 multi-tty make-network-process emacs)
>
> Memory information:
> ((conses 16 369391 18287)
>  (symbols 56 30368 0)
>  (miscs 48 160 430)
>  (strings 32 54134 10687)
>  (string-bytes 1 1555262)
>  (vectors 16 45846)
>  (vector-slots 8 806255 5532)
>  (floats 8 306 365)
>  (intervals 56 11467 2656)
>  (buffers 976 28))
>
>