From: Eric Wong Date: Wed, 27 Nov 2019 01:33:33 +0000 (+0000) Subject: httpd|nntpd: avoid missed signal wakeups X-Git-Tag: v1.3.0~249 X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=d6674af04cb74a4efd513d938bed8bf7ab2838eb;hp=d6674af04cb74a4efd513d938bed8bf7ab2838eb;p=public-inbox.git httpd|nntpd: avoid missed signal wakeups Our attempt at using a self-pipe in signal handlers was ineffective, since pure Perl code execution is deferred and Perl doesn't use an internal self-pipe/eventfd. In retrospect, I actually prefer the simplicity of Perl in this regard... We can use sigprocmask() from Perl, so we can introduce signalfd(2) and EVFILT_SIGNAL support on Linux and *BSD-based systems, respectively. These OS primitives allow us to avoid a race where Perl checks for signals right before epoll_wait() or kevent() puts the process to sleep. The (few) systems nowadays without signalfd(2) or IO::KQueue will now see wakeups every second to avoid missed signals. ---