From 6ed644fbf4869a7e042826900eff531cf6660cfb Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Wed, 16 Nov 2022 09:19:18 +0100 Subject: [PATCH] script: fix use of utempter libutempter uses SIGCHLD, but script(1) pty implementation completely control all signals by signalfd and utempter does not work. The solution is to setup signalfd later (after libutempter use). Fixes: https://github.com/util-linux/util-linux/issues/1904 Signed-off-by: Karel Zak --- term-utils/script.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/term-utils/script.c b/term-utils/script.c index c918ecd6e9..516a6cf93e 100644 --- a/term-utils/script.c +++ b/term-utils/script.c @@ -947,13 +947,16 @@ int main(int argc, char **argv) printf(_(".\n")); } -#ifdef HAVE_LIBUTEMPTER - utempter_add_record(ul_pty_get_childfd(ctl.pty), NULL); -#endif if (ul_pty_setup(ctl.pty)) err(EXIT_FAILURE, _("failed to create pseudo-terminal")); +#ifdef HAVE_LIBUTEMPTER + utempter_add_record(ul_pty_get_childfd(ctl.pty), NULL); +#endif + + if (ul_pty_signals_setup(ctl.pty)) + err(EXIT_FAILURE, _("failed to initialize signals handler")); fflush(stdout); /* -- 2.47.3