mirror of
https://github.com/robbert-vdh/yabridge.git
synced 2026-05-07 03:50:11 +02:00
Fix plugin host watchdog treating zombies as alive
This commit is contained in:
@@ -44,6 +44,10 @@ Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
tries to use REAPER's [host function
|
||||
API](https://www.reaper.fm/sdk/vst/vst_ext.php#vst_host) which currently isn't
|
||||
supported by yabridge. We now explicitly ignore these requests.
|
||||
- Fixed the plugin-side watchdog timer that checks whether the Wine plugin host
|
||||
process failed to start treating zombie processes as still running. This could
|
||||
cause plugins to hang during scanning if the Wine process crashed in a very
|
||||
specific (and likely impossible) way.
|
||||
- Fixed VST2 speaker arrangement configurations returned by the plugin not being
|
||||
serialized correctly. No plugins seem to actually use these, so it should not
|
||||
have caused any issues.
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user