On Wed, Jul 12, 2023 at 11:15:57AM +0200, Cyril Brulebois wrote:
>Hi Michael,
>
>Cyril Brulebois <k...@debian.org> (2023-06-28):
>> Control: reassign -1 busybox-udeb 1:1.36.1-3
>
>[…]
>
>> With a local build, confirmed -3 is buggy, and that reverting only
>> busybox-udeb to -1 is sufficient to restore syslog support in the
>> installer.
>> 
>> Reassigning there; the GRUB thing can be filed separately once we have
>> actual information via syslog.
>
>A fix would be appreciated, we've got reports piling up about things we
>have no logs for.

After weeks with this breakage, I've just uploaded a minimal NMU to
fix it, reverting the syslog changes since -1. I've buit and tested
successfully locally.

Here's the NMU diff.

-- 
Steve McIntyre, Cambridge, UK.                                st...@einval.com
You raise the blade, you make the change... You re-arrange me 'til I'm sane...
diff -Nru busybox-1.36.1/debian/changelog busybox-1.36.1/debian/changelog
--- busybox-1.36.1/debian/changelog     2023-06-14 22:01:54.000000000 +0100
+++ busybox-1.36.1/debian/changelog     2023-08-03 21:22:44.000000000 +0100
@@ -1,3 +1,11 @@
+busybox (1:1.36.1-3.1) unstable; urgency=medium
+
+  * NMU
+  * Revert recent changes that have broken syslogd in d-i.
+    Closes: #1039710
+
+ -- Steve McIntyre <93...@debian.org>  Thu, 03 Aug 2023 21:22:44 +0100
+
 busybox (1:1.36.1-3) unstable; urgency=medium
 
   * syslogd-avoid-nulling-devlog.patch - fix overriding dev/log
diff -Nru busybox-1.36.1/debian/patches/series 
busybox-1.36.1/debian/patches/series
--- busybox-1.36.1/debian/patches/series        2023-06-14 21:55:08.000000000 
+0100
+++ busybox-1.36.1/debian/patches/series        2023-08-03 21:22:44.000000000 
+0100
@@ -14,6 +14,7 @@
 platform-linux.diff
 fix-non-linux-build.patch
 #
-syslogd-decrease-stack-usage-50-bytes.patch
-syslogd-daemonize-after-init-make-errs-visible.patch
-syslogd-avoid-nulling-devlog.patch
+syslogd-fork-after-init-not-before.patch
+#syslogd-decrease-stack-usage-50-bytes.patch
+#syslogd-daemonize-after-init-make-errs-visible.patch
+#syslogd-avoid-nulling-devlog.patch
diff -Nru 
busybox-1.36.1/debian/patches/syslogd-fork-after-init-not-before.patch 
busybox-1.36.1/debian/patches/syslogd-fork-after-init-not-before.patch
--- busybox-1.36.1/debian/patches/syslogd-fork-after-init-not-before.patch      
1970-01-01 01:00:00.000000000 +0100
+++ busybox-1.36.1/debian/patches/syslogd-fork-after-init-not-before.patch      
2023-08-03 21:22:44.000000000 +0100
@@ -0,0 +1,58 @@
+From: Michael Tokarev <m...@tls.msk.ru>
+Date: Tue, 6 Jun 2023 17:08:18 +0300
+Subject: [PATCH] syslogd: fork after init on a regular system, not before
+
+Current syslogd performs all init after daemonizing, meanwhile
+main process exits successfully. This means any errors during init
+will not be even shown up because at this time the process has its
+stderr redirected to /dev/null already.
+
+On a MMU system, delay daemonizing to after init.
+On non-MMU system, keep current code.
+
+Signed-off-by: Michael Tokarev <m...@tls.msk.ru>
+---
+ sysklogd/syslogd.c | 13 ++++++++++++-
+ 1 file changed, 12 insertions(+), 1 deletion(-)
+
+diff --git a/sysklogd/syslogd.c b/sysklogd/syslogd.c
+index 6ddfd771a..2f9a727cd 100644
+--- a/sysklogd/syslogd.c
++++ b/sysklogd/syslogd.c
+@@ -1025,7 +1025,6 @@ static void do_syslogd(void)
+       signal(SIGALRM, do_mark);
+       alarm(G.markInterval);
+ #endif
+-      xmove_fd(create_socket(), STDIN_FILENO);
+ 
+       if (option_mask32 & OPT_circularlog)
+               ipcsyslog_init();
+@@ -1033,6 +1032,16 @@ static void do_syslogd(void)
+       if (option_mask32 & OPT_kmsg)
+               kmsg_init();
+ 
++      {
++              int fd = create_socket();
++#if BB_MMU
++              if (!(option_mask32 & OPT_nofork)) {
++                      bb_daemonize(DAEMON_CHDIR_ROOT);
++              }
++#endif
++              xmove_fd(fd, STDIN_FILENO);
++      }
++
+       timestamp_and_log_internal("syslogd started: BusyBox v" BB_VER);
+       write_pidfile_std_path_and_ext("syslogd");
+ 
+@@ -1179,9 +1188,11 @@ int syslogd_main(int argc UNUSED_PARAM, char **argv)
+       G.hostname = safe_gethostname();
+       *strchrnul(G.hostname, '.') = '\0';
+ 
++#if !BB_MMU
+       if (!(opts & OPT_nofork)) {
+               bb_daemonize_or_rexec(DAEMON_CHDIR_ROOT, argv);
+       }
++#endif
+ 
+       do_syslogd();
+       /* return EXIT_SUCCESS; */

Reply via email to