all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Klaus-Dieter Bauer <bauer.klaus.dieter@gmail.com>
To: Eli Zaretskii <eliz@gnu.org>
Cc: 33016@debbugs.gnu.org
Subject: bug#33016: 26.1; (make-process ...) doesn't signal an error, when executable given as absolute Windows path does not exist
Date: Fri, 19 Oct 2018 10:03:00 +0200	[thread overview]
Message-ID: <CANtbJLEVLux4giW65UKREP7J_xVKz86Vvy+hZzEdHmEVcboaHQ@mail.gmail.com> (raw)
In-Reply-To: <835zy8y34x.fsf@gnu.org>

[-- Attachment #1: Type: text/plain, Size: 2497 bytes --]

On Thu, Oct 11, 2018 at 4:22 PM Eli Zaretskii <eliz@gnu.org> wrote:

> > From: Klaus-Dieter Bauer <bauer.klaus.dieter@gmail.com>
> > Date: Thu, 11 Oct 2018 14:55:27 +0200
> >
> > Entering
> >
> >     M-x eval-expression RET
> >       (make-process :name "test" :command '("No Such Command"))
> >
> > will bring up the debugger with
> >
> >     (file-missing "Searching for program" "No such file or directory"
> "nosuchcommand")
> >
> > However, entering
> >
> >     M-x eval-expression RET
> >       (make-process :name "test" :command '("c:/No Such Command"))
> >
> > will merely display in the echo-area message:
> >
> >     eval: Spawning child process: Invalid argument
> >
> > I stumbled upon this when debugging a quick-and-dirty
> > script, that called a program by absolute path. When a new
> > version of the program changed the name of the executable
> > (tex2lyx2.3 -> tex2lyx), this issue occurred, and hindered
> > debugging the problem.
> >
> > The wording of the message might indicate a
> > Windows-specific issue.
>
> The error in the second case is Windows specific, but the
> inconsistency isn't: on Unix the second case "succeeds", in that it
> returns a process object without any error messages.
>
> The error message you see in the first case is because Emacs searches
> for the program along exec-path (because it is not an absolute file
> name).  In the second case this search is not done, because the file
> name is already absolute.
>
> So I don't think this is a bug.
>

Now I understand the intent of the implementation better. However, the
Unix/Windows difference still seems like a bug to me.

On Unix, the elisp will succeed, but the output and exit-status of the
process clarify the issue.
On Windows, a non-local exit occurs due to the resulting exception.
As example:

    (let (p)
      (setq p
        (make-process :name "test" :command '("/tmp/nosuchcommand") :buffer
(current-buffer)))
      ;; -- Subsequent code never reached on Windows
      (while (process-live-p p)
        (sleep-for 0.01))
      (message "(Process exit status %d)"
        (process-exit-status p)))


So on Windows two issues occur:
  - The exception doesn't indicate what went wrong.
  - The control-flow of the Elisp program is different from Unix.

This different seems, like it may give rise to Windows-specific bugs, that
would be unnecessarily hard to debug.

Then again, calling programs by full path is probably rare, so it's
probably a pretty low-priority issue.

- Klaus

[-- Attachment #2: Type: text/html, Size: 4250 bytes --]

  reply	other threads:[~2018-10-19  8:03 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-10-11 12:55 bug#33016: 26.1; (make-process ...) doesn't signal an error, when executable given as absolute Windows path does not exist Klaus-Dieter Bauer
2018-10-11 14:22 ` Eli Zaretskii
2018-10-19  8:03   ` Klaus-Dieter Bauer [this message]
2018-10-19  8:30     ` Eli Zaretskii
2019-04-08 18:34 ` Noam Postavsky
2019-04-08 18:58   ` Eli Zaretskii
2019-04-09 14:13     ` Noam Postavsky
2019-04-09 14:33       ` Eli Zaretskii
2019-04-10 21:58         ` Noam Postavsky
2019-04-11 14:04           ` Eli Zaretskii
2019-04-11 17:34             ` Noam Postavsky
2019-04-11 17:55               ` Eli Zaretskii
2019-04-12  0:44                 ` Noam Postavsky
2019-04-12  8:44                   ` Eli Zaretskii
2019-04-12 18:20                     ` Noam Postavsky
2019-04-12 18:44                       ` Eli Zaretskii
2019-04-15 12:21                         ` Noam Postavsky

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CANtbJLEVLux4giW65UKREP7J_xVKz86Vvy+hZzEdHmEVcboaHQ@mail.gmail.com \
    --to=bauer.klaus.dieter@gmail.com \
    --cc=33016@debbugs.gnu.org \
    --cc=eliz@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.