Re: [PATCH] compat/mingw: Allow SIGKILL to kill in mingw_kill.
- From
Junio C Hamano <gitster@pobox.com>
- Date
- May 22, 2026, 06:32 UTC
- Message-ID
- <xmqqwlwwt0mj.fsf@gitster.g>
- In-Reply-To
- <20260522061652.50078-1-siddh.raman.pant@oracle.com>
Siddh Raman Pant <siddh.raman.pant@oracle.com> writes:
Show 9 quoted lines
> mingw_kill() only allows SIGTERM for killing a process. > > Let's also allow the natural SIGKILL for the same so that callers don't > have to do ifdef soup for special Windows handling. > > Signed-off-by: Siddh Raman Pant <siddh.raman.pant@oracle.com> > --- > compat/mingw.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-)
I do not do windows, so I'd like to ask those much more clueful than I am to see if they see any downsides.
The current code only handles TERM (to terminate) or 0 (to probe) and everything else results in EINVAL, so the updated behaviour is to pretend as if TERM is sent and do whatever PROCESS_TERMINATE does, instead of doing nothing and erroring with EINVAL. Which does sound like an improvement over the status quo.
What I am wondering is if there are different kind of "kill" in the Windows land, just like there are distinction between TERM and KILL. For example, the program ought to be able to block TERM but not KILL. There are other termination-inducing signals like SIGQUIT but until we start using them in our code, this emulation layer does not have to know about them, I think.
Thanks.
Show 13 quoted lines
> diff --git a/compat/mingw.c b/compat/mingw.c
> index aa7525f419cb..00a994aa9f47 100644
> --- a/compat/mingw.c
> +++ b/compat/mingw.c
> @@ -2250,7 +2250,7 @@ int mingw_execvp(const char *cmd, char *const *argv)
>
> int mingw_kill(pid_t pid, int sig)
> {
> - if (pid > 0 && sig == SIGTERM) {
> + if (pid > 0 && (sig == SIGTERM || sig == SIGKILL)) {
> HANDLE h = OpenProcess(PROCESS_TERMINATE, FALSE, pid);
>
> if (TerminateProcess(h, -1)) {