diff options
author | Eric Wong <e@80x24.org> | 2021-02-02 22:11:42 -1000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2021-02-04 01:37:09 +0000 |
commit | a848cb1e2229e0b313271dad879f9a101e414316 (patch) | |
tree | 4e58d3a7360d7f7663f6c490d1ada08eb6cae731 | |
parent | 298751baed3ce7ae1549356152784b83220a31f0 (diff) | |
download | public-inbox-a848cb1e2229e0b313271dad879f9a101e414316.tar.gz |
Perl may internally race and miss signals due to a lack of self-pipe / eventfd / signalfd / EVFILT_SIGNAL usage. While our event loop paths avoid these problems by using signalfd or EVFILT_SIGNAL, thse sleep() calls are not within the event loop.
-rw-r--r-- | lib/PublicInbox/LEI.pm | 2 | ||||
-rwxr-xr-x | script/lei | 2 |
2 files changed, 2 insertions, 2 deletions
diff --git a/lib/PublicInbox/LEI.pm b/lib/PublicInbox/LEI.pm index 005f6f7a..28dce0c5 100644 --- a/lib/PublicInbox/LEI.pm +++ b/lib/PublicInbox/LEI.pm @@ -299,7 +299,7 @@ sub x_it ($$) { if (my $signum = ($code & 127)) { # usually SIGPIPE (13) $SIG{PIPE} = 'DEFAULT'; # $SIG{$signum} doesn't work kill $signum, $$; - sleep; # wait for signal + sleep(1) while 1; # wait for signal } else { $quit->($code >> 8); } @@ -116,7 +116,7 @@ Falling back to (slow) one-shot mode sigchld(); if (my $sig = ($x_it_code & 127)) { kill $sig, $$; - sleep; + sleep(1) while 1; } exit($x_it_code >> 8); } else { # for systems lacking Socket::MsgHdr or Inline::C |