Thanks for the email, I've replied on the Github issue :)
On Tue, 25 Feb 2025, at 11:43 PM, cy...@peralex.com wrote: > I'm looking at an issue on master where the process sometimes hangs on > shutdown due to an apparently lost SIGCHLD during the shutdown process. > > See my report here: https://github.com/cyrusimap/cyrus-imapd/issues/5309. > The issue appeared when I upgraded from 3.4.x to 3.8.4, but I suspect it's > timing-related, and not directly related to changes made in the code. > > I'm running Cyrus imapd 3.8.5, and I end up with a child process (or two, or > more) in a zombie state: > > `cyrus 10934 0.1 0.0 0 0 - Z 08:50 0:00.02 > <defunct>` > > These are usually imapd or pop3d processes, and prevent master from shutting > down. > > Using a lot of additional syslog messages, I see that SIGCHLD is successfully > handled for most of the child processes during shutdown, but the last one (or > more) sometimes doesn't seem to be delivered (or perhaps doesn't trigger the > handler) on master. > > pselect continues to be called regularly, and so does child_janitor, but > master never exits as it's waiting for the child's signal to trigger > reap_child. > > I can get the shutdown working reliably by explicitly calling reap_child in > the main loop when shutdown has been requested: > if (in_shutdown) > reap_child(); > > gettimeofday(&now, 0); > child_janitor(now); > do_prom_report(now); > > It's possible that this is happening during normal operation too, but that > it's not noticed because subsequent SIGCHLD signals from other exiting > children trigger reap_child, which cleans up all children. > > This fix works, but is perhaps not an elegant way to fix the problem. Does > anybody have any suggestions on a better fix? I'm happy to test fixes. > > Note that I'm running on FreeBSD 13.4. Дилян Палаузов reported a similar > issue, presumably on Linux > (https://cyrus.topicbox.com/groups/devel/Tddff7ee5049ffbc4). > *Cyrus <https://cyrus.topicbox.com/latest>* / Devel / see discussions > <https://cyrus.topicbox.com/groups/devel> + participants > <https://cyrus.topicbox.com/groups/devel/members> + delivery options > <https://cyrus.topicbox.com/groups/devel/subscription> Permalink > <https://cyrus.topicbox.com/groups/devel/Te9b1b54f74d1b828-M78426cae7fb8b33a8952d98f> ------------------------------------------ Cyrus: Devel Permalink: https://cyrus.topicbox.com/groups/devel/Te9b1b54f74d1b828-Mbf716565a3e2be6990827f62 Delivery options: https://cyrus.topicbox.com/groups/devel/subscription