FEXServer: Fixes squashfs/erofs with newer fuse releases

Newer fuse releases changed how they are waiting on child processes to
exit. Setting the signal action to SIG_IGN would cause
erofsfuse/squashfuse to inherit the ignored action and cause their
internal `wait4` syscalls to fail with ECHLD.

Set the action back to default inside the FEXServer because our original
reasoning for setting the ignoring is no longer valid. FEXInterpreter
still ignores SIGCHLD while launching FEXServer.

Maybe fixes the muvm thing people have been complaining about.

Also fixes accidental comma delimiter usage.
This commit is contained in:
Ryan Houdek committed 2025-05-01 13:47:46 -07:00
1 parent 4f2d2e646e
commit cdbcdfe397
2 files changed
+5 -4

No files matched your search

+2 -1
View File
@@ -235,7 +235,8 @@ int ConnectToAndStartServer(std::string_view InterpreterPath) {
// We want to ignore the signal so that if FEXServer starts in daemon mode, it
// doesn't leave a zombie process around waiting for something to get the result.
struct sigaction action {};
action.sa_handler = SIG_IGN, sigaction(SIGCHLD, &action, &action);
action.sa_handler = SIG_IGN;
sigaction(SIGCHLD, &action, &action);
pid_t pid = fork();
if (pid == 0) {