diff --git a/.github/workflows/bsd.yml b/.github/workflows/bsd.yml index 80f0219..17f3b3d 100644 --- a/.github/workflows/bsd.yml +++ b/.github/workflows/bsd.yml @@ -48,6 +48,10 @@ jobs: curl -L https://cpanmin.us | sudo perl - --notest --installdeps --with-configure --with-develop . perl Makefile.PL make + gcc -Wall pending_signal.c && for n in `seq 15`; do ./a.out; echo $?; done + echo BARRIER1 + gcc -DREBLOCK -Wall pending_signal.c && for n in `seq 15`; do ./a.out; echo $?; done + echo BARRIER2 ktrace -di env IPCRUNDEBUG=gory perl -Iblib/lib t/kill_kill.t || true kdump || true IPCRUNDEBUG=gory prove -wlvmb t/kill_kill.t diff --git a/pending_signal.c b/pending_signal.c index dd74881..6b42ed6 100644 --- a/pending_signal.c +++ b/pending_signal.c @@ -4,8 +4,19 @@ * 2 if sigprocmask(SIG_UNBLOCK) returns w/ SIGTERM *not* pending * 90 if exec fails * - * Dies to SIGTERM about half the time, returning 1 the other half. Compiling - * with -DREBLOCK makes it die to SIGTERM always. + * Linux 3.10.0-1160.99.1.el7.x86_64: Dies to SIGTERM about half the time, + * returning 1 the other half. Compiling with -DREBLOCK makes it die to SIGTERM + * always. + * + * AIX 7300-01-02-2320: returns 1 always. Compiling with -DREBLOCK makes it die + * to SIGTERM always. + * + * Same as AIX: + * Darwin 21.6.0 + * FreeBSD 14.0-CURRENT + * Linux 6.7.12-amd64 + * OpenBSD 7.5 + * Solaris 11.4.68.164.2 */ #include #include