Fix hanging processes for good #69

This commit is contained in:
Robbert van der Helm
2020-12-11 12:40:50 +01:00
parent 2615da51da
commit c306048988
3 changed files with 15 additions and 6 deletions
+4 -1
View File
@@ -148,7 +148,10 @@ void GroupBridge::handle_plugin_dispatch(size_t plugin_id) {
if (active_plugins.size() == 0) {
logger.log(
"All plugins have exited, shutting down the group process");
main_context.stop();
// main_context.stop();
// FIXME: See the comment in `individual-host.cpp` #69
TerminateProcess(GetCurrentProcess(), 0);
}
});
}
+9 -3
View File
@@ -85,9 +85,15 @@ main(int argc, char* argv[]) {
Win32Thread dispatch_handler([&]() {
bridge->handle_dispatch();
// When the sockets get closed, this application should terminate
// gracefully
main_context.stop();
// // When the sockets get closed, this application should
// // terminate gracefully
// main_context.stop();
// FIXME: So some of the background threads spawned by the plugin may
// get stuck if the host got terminated abruptly. After an entire
// day of debugging I still have no idea whether this is a bug in
// yabridge, Wine, or those plugins, but just killing off this
// process and all of its threads 'fixes' the issue. #69
TerminateProcess(GetCurrentProcess(), 0);
});
// Handle Win32 messages and X11 events on a timer, just like in