Re: [msysGit] [PATCH/RFC 06/11] run-command: add kill_async() and is_async_alive()
- From
Johannes Sixt <j6t@kdbg.org>
- Date
- Nov 26, 2009, 21:46 UTC
- Message-ID
- <200911262246.13342.j6t@kdbg.org>
- In-Reply-To
- <1259196260-3064-7-git-send-email-kusmabite@gmail.com>
On Donnerstag, 26. November 2009, Erik Faye-Lund wrote:
Show 8 quoted lines
> +int kill_async(struct async *async)
> +{
> +#ifndef WIN32
> + return kill(async->pid, SIGTERM);
> +#else
> + DWORD ret = 0;
> + if (!TerminateThread(async->tid, 0))
> + ret = error("killing thread failed: %lu", GetLastError());Ugh! Did you read the documentation of TerminateThread()?
We need to kill processes/threads when we detect that there are too many connections. But TerminateThread() is such a dangerous function that we cannot pretend that everything is good, and we continue to accept connections.
Unless we find a different solution, I would prefer to punt and die instead.
> + else if (!GetExitCodeThread(async->tid, &ret))
> + ret = error("cannot get thread exit code: %lu", GetLastError());What should the exit code be good for? The return value of this function can only be -1 (failure, could not kill) or 0 (success, process killed).
-- Hannes