Fix plugin host watchdog treating zombies as alive

This commit is contained in:
Robbert van der Helm
2021-06-22 16:54:05 +02:00
parent 0156b61e64
commit 780d562909
3 changed files with 10 additions and 7 deletions
+4 -5
View File
@@ -96,11 +96,10 @@ fs::path IndividualHost::path() {
return host_path;
}
bool IndividualHost::running() noexcept {
std::error_code error{};
const bool running = host.running(error);
return running && !error;
bool IndividualHost::running() {
// NOTE: `boost::process::child::running()` still considers zombies as
// running, so it's useless for our purposes.
return pid_running(host.id());
}
void IndividualHost::terminate() {
+2 -2
View File
@@ -52,7 +52,7 @@ class HostProcess {
* Return true if the host process is still running. Used during startup to
* abort connecting to sockets if the Wine process has crashed.
*/
virtual bool running() noexcept = 0;
virtual bool running() = 0;
/**
* Kill the process or cause the plugin that's being hosted to exit.
@@ -200,7 +200,7 @@ class IndividualHost : public HostProcess {
const HostRequest& host_request);
boost::filesystem::path path() override;
bool running() noexcept override;
bool running() override;
void terminate() override;
private: