Fix a test for a crash in SIGALARM handler when waiting on a child process to be closed

This commit is contained in:
Petr Písař 2019-07-17 13:57:52 +02:00
parent e060ac4b3e
commit 8fa8019ea7
2 changed files with 50 additions and 1 deletions

View File

@ -0,0 +1,39 @@
From 293a533c53d9c0fe939e23c439f4dfc47a5736dc Mon Sep 17 00:00:00 2001
From: Tony Cook <tony@develop-help.com>
Date: Tue, 25 Jun 2019 15:47:57 +1000
Subject: [PATCH] (perl #122112) make sure SIGPIPE is delivered if we test it
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
t/io/pipe.t | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/t/io/pipe.t b/t/io/pipe.t
index 9f5bb3bcf8..bdf743c26c 100644
--- a/t/io/pipe.t
+++ b/t/io/pipe.t
@@ -125,6 +125,18 @@ wait; # Collect from $pid
pipe(READER,WRITER) || die "Can't open pipe";
close READER;
+eval {
+ # one platform at least appears to block SIGPIPE by default (see #122112)
+ # so make sure it's unblocked.
+ # The eval wrapper should ensure this does nothing if these aren't
+ # implemented.
+ require POSIX;
+ my $mask = POSIX::SigSet->new(POSIX::SIGPIPE());
+ my $old = POSIX::SigSet->new();
+ POSIX::sigprocmask(POSIX::SIG_UNBLOCK(), $mask, $old);
+ note "Yes, SIGPIPE was blocked" if $old->ismember(POSIX::SIGPIPE());
+};
+
$SIG{'PIPE'} = 'broken_pipe';
sub broken_pipe {
--
2.20.1

View File

@ -83,7 +83,7 @@ License: GPL+ or Artistic
Epoch: %{perl_epoch}
Version: %{perl_version}
# release number must be even higher, because dual-lived modules will be broken otherwise
Release: 440%{?dist}
Release: 441%{?dist}
Summary: Practical Extraction and Report Language
Url: https://www.perl.org/
Source0: https://www.cpan.org/src/5.0/perl-%{perl_version}.tar.xz
@ -215,6 +215,10 @@ Patch37: perl-5.31.0-CAPTURE_ALL-was-intended-to-be-an-alias-for-make-it-
Patch38: perl-5.31.0-perl-134193-allow-CAPTURE-to-work-when-CAPTURE-comes.patch
Patch39: perl-5.31.0-perl-134193-make-the-varname-match-the-names.patch
# Fix a test for a crash in SIGALARM handler when waiting on a child process to
# be closed, RT#122112, fixed after 5.31.1
Patch40: perl-5.31.1-perl-122112-make-sure-SIGPIPE-is-delivered-if-we-tes.patch
# Link XS modules to libperl.so with EU::CBuilder on Linux, bug #960048
Patch200: perl-5.16.3-Link-XS-modules-to-libperl.so-with-EU-CBuilder-on-Li.patch
@ -2772,6 +2776,7 @@ Perl extension for Version Objects
%patch37 -p1
%patch38 -p1
%patch39 -p1
%patch40 -p1
%patch200 -p1
%patch201 -p1
@ -2818,6 +2823,7 @@ perl -x patchlevel.h \
'Fedora Patch37: Fix %%{^CAPTURE_ALL} to be an alias for %%- variable (RT#131867)' \
'Fedora Patch38: Fix %%{^CAPTURE} value when used after @{^CAPTURE} (RT#134193)' \
'Fedora Patch39: Fix %%{^CAPTURE} value when used after @{^CAPTURE} (RT#134193)' \
'Fedora Patch40: Fix a test for a crash in SIGALARM handler when waiting on a child process to be closed (RT#122112)' \
'Fedora Patch200: Link XS modules to libperl.so with EU::CBuilder on Linux' \
'Fedora Patch201: Link XS modules to libperl.so with EU::MM on Linux' \
%{nil}
@ -5063,6 +5069,10 @@ popd
# Old changelog entries are preserved in CVS.
%changelog
* Wed Jul 17 2019 Petr Pisar <ppisar@redhat.com> - 4:5.30.0-441
- Fix a test for a crash in SIGALARM handler when waiting on a child process to
be closed (RT#122112)
* Tue Jun 25 2019 Petr Pisar <ppisar@redhat.com> - 4:5.30.0-440
- Fix an out-of-buffer read while parsing a Unicode property name (RT#134134)
- Do not panic when outputting a warning (RT#134059)