From 11f8d2f7f00b61b467bf78518036d7cb96e8b9fc Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=A9mie=20Galarneau?= Date: Thu, 5 Mar 2020 16:52:32 -0500 Subject: [PATCH] Fix: sessiond: occasional badfd error on repeated SIGTERM MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit The session daemon occasionally prints the following messages when it received multiple SIGTERM signals: PERROR - 16:50:18.505585257 [49845/49845]: write poll pipe: Bad file descriptor (in notify_thread_pipe() at utils.c:35) This is caused by a (somewhat inevitable) race between the teardown of the daemon and the closing of its quit pipe. This happens more often when kernel modules take a long time to be unloaded and the user spams ctrl+c in the hope of convincing the daemon process to close faster since modules are unloaded after closing the quit pipe. Setting closed pipe fds to '-1' is safe anyway and is already handled by the notify_thread_pipe() util. Signed-off-by: Jérémie Galarneau Change-Id: If08a455c65055dcb56ffbad3703173e6a45cfba5 --- src/common/utils.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/common/utils.c b/src/common/utils.c index d9bacad0e..646ebbbc7 100644 --- a/src/common/utils.c +++ b/src/common/utils.c @@ -537,6 +537,7 @@ void utils_close_pipe(int *src) if (ret) { PERROR("close pipe"); } + src[i] = -1; } } -- 2.34.1