This likely affects all other *BSDs with kevent, as well;
since SIGCHLD is special w.r.t. EVFILT_SIGNAL
---
lib/PublicInbox/CodeSearchIdx.pm | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/lib/PublicInbox/CodeSearchIdx.pm b/lib/PublicInbox/CodeSearchIdx.pm
index 1000dc6f..82a96cf3 100644
--- a/lib/PublicInbox/CodeSearchIdx.pm
+++ b/lib/PublicInbox/CodeSearchIdx.pm
@@ -636,6 +636,11 @@ EOM
sub scan_git_dirs ($) {
my ($self) = @_;
+
+ # FreeBSD ignores/discards SIGCHLD while signals are blocked and
+ # EVFILT_SIGNAL is inactive, so we pretend we have a SIGCHLD pending
+ PublicInbox::DS::enqueue_reap();
+
@$GIT_TODO = @{$self->{git_dirs}};
index_next($self) for (1..$LIVE_JOBS);
}