diff --git a/src/appspawn_server.cpp b/src/appspawn_server.cpp index 4f99f948f22bd1a6f192e253985b1df8e4882093..cef1951d28f723cdb08c86484ef2a4ca7025b601 100644 --- a/src/appspawn_server.cpp +++ b/src/appspawn_server.cpp @@ -187,7 +187,6 @@ void AppSpawnServer::HandleSignal() sigset_t mask; sigemptyset(&mask); sigaddset(&mask, SIGCHLD); - sigaddset(&mask, SIGHUP); sigprocmask(SIG_BLOCK, &mask, nullptr); int signalFd = signalfd(-1, &mask, SFD_CLOEXEC); if (signalFd < 0) { @@ -199,6 +198,12 @@ void AppSpawnServer::HandleSignal() if (ret != sizeof(fdsi) || fdsi.ssi_signo != SIGCHLD) { continue; } + pid_t pid; + int status; + while ((pid = waitpid(-1, &status, WNOHANG)) > 0) { + APPSPAWN_LOGE("HandleSignal: %d", pid); + } + std::lock_guard lock(mut_); isChildDie_ = true; childPid_ = fdsi.ssi_pid; @@ -252,7 +257,6 @@ static void ClearEnvironment(void) sigset_t mask; sigemptyset(&mask); sigaddset(&mask, SIGCHLD); - sigaddset(&mask, SIGTERM); sigprocmask(SIG_UNBLOCK, &mask, nullptr); return; }