We should not need an eval for warning with our code base. Nowadays, dwaitpid() automatically does the right thing regardless of whether we're in the event loop, so no eval is needed there, either. --- lib/PublicInbox/IPC.pm | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-)
diff --git a/lib/PublicInbox/IPC.pm b/lib/PublicInbox/IPC.pm index 7dc8ec6a..5082f110 100644 --- a/lib/PublicInbox/IPC.pm +++ b/lib/PublicInbox/IPC.pm @@ -69,7 +69,7 @@ sub ipc_worker_loop ($$$) { # this is the overwhelmingly likely case if (!defined($wantarray)) { eval { $self->$sub(@args) }; - eval { warn "$$ die: $@ (from nowait $sub)\n" } if $@; + warn "$$ die: $@ (from nowait $sub)\n" if $@; } elsif ($wantarray) { my @ret = eval { $self->$sub(@args) }; ipc_return($w_res, \@ret, $@); @@ -144,15 +144,7 @@ sub ipc_worker_stop { # allow any sibling to send ipc_worker_exit, but siblings can't wait return if $$ != $ppid; - eval { - my $reap = $self->can('ipc_worker_reap'); - PublicInbox::DS::dwaitpid($pid, $reap, $self); - }; - if ($@) { - my $wp = waitpid($pid, 0); - $pid == $wp or die "waitpid($pid) returned $wp: \$?=$?"; - $self->ipc_worker_reap($pid); - } + PublicInbox::DS::dwaitpid($pid, \&ipc_worker_reap, $self); } # use this if we have multiple readers reading curl or "pigz -dc" -- unsubscribe: one-click, see List-Unsubscribe header archive: https://public-inbox.org/meta/