Fixed crash when stopping the service.
authorIain Patterson <me@iain.cx>
Sun, 2 Dec 2012 02:22:08 +0000 (18:22 -0800)
committerIain Patterson <me@iain.cx>
Sun, 2 Dec 2012 04:56:32 +0000 (23:56 -0500)
commit9884e231415258809dfb1ef117b6bc9a5b011514
tree177a010d87fefbcec848152177ddd08eee0577a2
parent293f2a969fcda19b59436269cba68d748270de3e
Fixed crash when stopping the service.

NSSM tidies up by looking for processes whose parent PID matches the PID
of the monitored application.  Because process IDs are reused, however,
it's possible for NSSM to kill a process which was not a child of the
monitored application if that process had a now-exited parent process
whose PID was reused.  On UNIX the PPID would show as 1 for an orphaned
process but under Windows, at least when querying a process with the
Toolhelp32 toolkit, we see the original PPID of the process even if the
parent is no longer running.  Thus it is not sufficient to compare
parent PIDs when checking if a process was launched by our application.

In the worst case scenario NSSM could even terminate itself and trigger
a bluescreen.

When we find process with matching PPID we now also check that it was
created after our application was created and before our application
exited.
messages.mc
process.cpp
process.h
service.cpp