From 26d9f9b6204d302c8337bc2338b2aac537185382 Mon Sep 17 00:00:00 2001 From: jiung-yu Date: Fri, 17 Jun 2022 13:54:38 +0900 Subject: [PATCH] Exit when there's error on select() Description: Sometimes there's an issue that dhcpd isn't killed by SigTerm and it consumes all CPU usage. We can't reproduce the issue but I think we can terminate dhcpd when select returns an error and errno is not EINTR. Change-Id: I16759a7a5eb35e594eac175496e6f5d87d7d4d25 Signed-off-by: Yu jiung (cherry picked from commit 346911646d7804ee00db6a495c22fc61d188a808) --- packaging/toybox.spec | 2 +- toys/pending/dhcpd.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packaging/toybox.spec b/packaging/toybox.spec index 07d23e8..4a67ea7 100644 --- a/packaging/toybox.spec +++ b/packaging/toybox.spec @@ -1,6 +1,6 @@ Name: toybox Version: 0.6.0 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Single binary providing simplified versions of system commands Group: Base/Utilities License: BSD-2.0 diff --git a/toys/pending/dhcpd.c b/toys/pending/dhcpd.c index 1fc2e87..6a436e5 100644 --- a/toys/pending/dhcpd.c +++ b/toys/pending/dhcpd.c @@ -1713,8 +1713,8 @@ void dhcpd_main(void) waited += (unsigned) time(NULL) - timestmp; continue; } - dbg("Error in select wait again...\n"); - continue; + dbg("Don't wait on Error in select\n"); + exit(0); } if (!retval) { // Timed out dbg("select wait Timed Out...\n"); -- 2.7.4