my $pid = fork // DIE "fork: $!";
if ($pid == 0) {
close $wr if $wr;
+ $SIG{USR1} = undef; # undo parent $SIG{USR1}
$worker = $$;
while (1) {
my $r = sysread($rd, my $buf, UINT_SIZE);
$tb->reset;
}
kill 'USR1', $producer if !$eof; # sets $eof in $producer
- DIE join('', map { "E: $_\n" } @err) if @err;
+ if (@err) { # write to run_log for $sigchld handler
+ syswrite($run_log, "$$ @err\n");
+ DIE join('', map { "E: $_\n" } @err);
+ }
exit(0);
} else {
$pids{$pid} = $j;
print $OLDOUT "1..".($repeat * scalar(@tests))."\n" if $repeat >= 0;
if ($lei_env && $$ == $owner_pid) {
my $opt = { 1 => $OLDOUT, 2 => $OLDERR };
+ my $cur_daemon_pid;
+ run_script([qw(lei daemon-pid)], $lei_env, { 1 => \$cur_daemon_pid });
run_script([qw(lei daemon-kill)], $lei_env, $opt);
+ DIE "lei daemon restarted\n" if $cur_daemon_pid != $lei_daemon_pid;
}