perl/perl-5.14.2-Signal-handlers-must-run-before-sigsuspend-returns.patch

44 lines
1.1 KiB
Diff

From 38d7c791f597c3d567a70466dc2e48b73ec318bf Mon Sep 17 00:00:00 2001
From: Leon Timmermans <fawaka@gmail.com>
Date: Mon, 26 Dec 2011 19:06:54 +0200
Subject: [PATCH] Signal handlers must run before sigsuspend returns
The whole point of sigsuspend and pause is to wait until a signal has
arrived, and then return *after* it has been triggered. Currently
delayed/"safe" signals prevent that from happening, which might cause
race conditions.
This patch prevents that (as far as possible) by running the signal
handlers ASAP.
Petr Pisar: Back-ported to 5.14.2.
---
ext/POSIX/POSIX.xs | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/ext/POSIX/POSIX.xs b/ext/POSIX/POSIX.xs
index 8dc1f5a..4b9779b 100644
--- a/ext/POSIX/POSIX.xs
+++ b/ext/POSIX/POSIX.xs
@@ -1550,6 +1550,8 @@ sigaction(sig, optaction, oldaction = 0)
SysRet
sigpending(sigset)
POSIX::SigSet sigset
+ CLEANUP:
+ PERL_ASYNC_CHECK();
SysRet
sigprocmask(how, sigset, oldsigset = 0)
@@ -2019,6 +2021,8 @@ pathconf(filename, name)
SysRet
pause()
+ CLEANUP:
+ PERL_ASYNC_CHECK();
SysRet
setgid(gid)
--
1.7.7.6