Alexander Gavrilov said the following on 14.07.2008 12:01:
kill.exe (and kill builtin in bash) just calls the 'kill' system
call, which is emulated by msys.

Signal emulation in cygwin and mingw is done on the receiving side
by allocating a shared memory area, named sprintf("cygpid.%x",pid),
plus a named semaphore for communication, and starting a listener
thread. The sender queues the signal and raises the semaphore to notify the target.

Now, what I can see is that for some reason git binaries don't even
 bother initializing their receiving infrastructure. When they are
called from the shell, bash first forks, creating a helper process
(winpid 1008 & 344 in the list above), and then emulates exec by
starting the intended binary as a separate process, changing the
cygwin process name to reflect it, and waiting for the
newly-created process to finish. In this case, the helper process
receives the signal and apparently automatically terminates the
worker process.

Git binaries are pure Windows applications, not MSys apps. (Compiled with MinGW, but not linked to MSys DLLs.) Thus, it will definitely not respond to the Cygwin/MSys process infrastructure.

--
.marius

Reply via email to