all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Eli Zaretskii <eliz@gnu.org>
To: Joan Karadimov <joan.karadimov@gmail.com>
Cc: sjm@sjm.io, bozhidar.batsov@gmail.com, 15983@debbugs.gnu.org
Subject: bug#15983: 24.3; Emacs Not Killing Child Process
Date: Sat, 21 Dec 2013 20:38:32 +0200	[thread overview]
Message-ID: <834n629hhz.fsf@gnu.org> (raw)
In-Reply-To: <CAGVACNXijXM+dC396wou4WPvNRtK_4vyeQ7mcOHwjvttQjBwmg@mail.gmail.com>

> Date: Sat, 21 Dec 2013 18:22:06 +0200
> From: Joan Karadimov <joan.karadimov@gmail.com>
> Cc: 15983@debbugs.gnu.org, Simon Morgan <sjm@sjm.io>, 
> 	Bozhidar Batsov <bozhidar.batsov@gmail.com>
> 
> > Unfortunately, taskkill is not available widely enough.  E.g., on my
> > XP Home edition, it is not available, and I believe it is not there on
> > systems older than XP, which we still support.
> 
> I am aware that 'taskkill' is not present on windowses (is that a word?)
> older than XP. This makes it no worse than 'CreateToolhelp32Snapshot'.

No, the toolhelp functions are available on Windows 2000 and even on
Windows 98.  They are unavailable only on NT 4.0.

> > This might be "good enough" -- we err on the safe side, and only leave
> > some subprocesses not killed in rare situations.  Does this strategy
> > solve the problem which started this bug report?

You didn't answer that question, but I assume the answer is YES.

>  If so, please tell
> > the main ideas of how you intend to avoid killing unrelated processes.
> 
> Here is some pseudo-code for it...
> 
> # This returns [a subset] of the edges in the process tree
> def get-process-tree:
>   1. let process-snapshot be the current process snapshot
>   2. let process-tree be an empty list
>   3. for parent-pid, child-pid in process-snapshot:
>        if process-start-time(child-pid) < process-start-time(parent-pid):
>          add(process-tree, (parent-pid . child-pid))

I think it would be better to also require that process-start-time is
before the time kill-process-tree is called.  This might miss some
children, if they happen to be spawned right after the call, but it is
safer.

Also, didn't you mean ">" in the above inequality?  A child process
cannot be born before its parent, right?  Or am I missing something?

> 
> def kill-process-tree(root-process):
>   1. open a process handle to the root-process (I am guessing that Emacs
> already
>      keeps a handle to all process it spawned so this step might be
> unnecessary)

Yes, Emacs already keeps a handle on each of its immediate child
processes.  That's how we know that those children exit.

> Other potential issue is the non-atomicity of step (4.) and the
> possibility of grabbing a handle to a process that wasn't in
> initial-process-tree. I claim that this is not an issue, because
> those will not end up in revised-kill-list.
> 
> Both, of course, I cannot prove formally. But so far I have been
> unable to find counterexamples.

The only thing that we should worry about is not to accidentally kill
unrelated processes.  Everything else is no worse than what we have
now.





  reply	other threads:[~2013-12-21 18:38 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-11-27 17:47 bug#15983: 24.3; Emacs Not Killing Child Process sjm
2013-11-27 21:02 ` Eli Zaretskii
2013-12-19 15:44 ` Joan Karadimov
2013-12-19 15:56   ` bug#15983: Fw: " Bozhidar Batsov
2013-12-19 17:24   ` Eli Zaretskii
2013-12-20 22:28     ` Joan Karadimov
2013-12-21  8:15       ` Eli Zaretskii
2013-12-21 16:22         ` Joan Karadimov
2013-12-21 18:38           ` Eli Zaretskii [this message]
2013-12-22  2:03             ` Joan Karadimov
2013-12-22  3:53               ` Eli Zaretskii
2013-12-23 16:02                 ` Joan Karadimov

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=834n629hhz.fsf@gnu.org \
    --to=eliz@gnu.org \
    --cc=15983@debbugs.gnu.org \
    --cc=bozhidar.batsov@gmail.com \
    --cc=joan.karadimov@gmail.com \
    --cc=sjm@sjm.io \
    /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.