Fix wrong sigchild handler 25/294625/1
authorHwankyu Jhun <h.jhun@samsung.com>
Thu, 22 Jun 2023 01:55:07 +0000 (01:55 +0000)
committerHwankyu Jhun <h.jhun@samsung.com>
Thu, 22 Jun 2023 01:55:07 +0000 (01:55 +0000)
The event listener should be called when getting the sigchld signal.

Change-Id: I9dc085b04237c1df3df84f73b1345032c4fe9cc3
Signed-off-by: Hwankyu Jhun <h.jhun@samsung.com>
src/launchpad-process-pool/sigchld_event.cc
src/lib/launchpad-hydra/signal_manager.cc

index b53624b069e8b13be2e8eb1def92069443f4e920..42aeec432034e1a1df864cddffd05a5df31b3e50 100644 (file)
@@ -56,10 +56,10 @@ void SigchldEvent::OnIOEventReceived(int fd, int condition) {
     while ((child_pid = waitpid(-1, &status, WNOHANG)) > 0) {
       if (child_pid == child_pgid)
         killpg(child_pgid, SIGKILL);
-
-      if (listener_ != nullptr)
-        listener_->OnSigchld(child_pid, status);
     }
+
+    if (listener_ != nullptr)
+      listener_->OnSigchld(child_pid, status);
   } while (ret == 0);
 }
 
index 71daa3350c6cbbf10b8e07a840e623a9c3941f43..1c22c7fa2ae423aa2dafbd00e16fba41df9b03f6 100644 (file)
@@ -120,10 +120,10 @@ void SignalManager::OnIOEventReceived(int fd, uint32_t revents) {
     while ((child_pid = waitpid(-1, &status, WNOHANG)) > 0) {
       if (child_pid == child_pgid)
         killpg(child_pgid, SIGKILL);
-
-      if (listener_ != nullptr)
-        listener_->OnSigchldReceived(child_pid, status);
     }
+
+    if (listener_ != nullptr)
+      listener_->OnSigchldReceived(child_pid, status);
   } while (ret == 0);
 }