If a process is sent a SIGURG signal and it is blocking SIGURG
signals, when the process subsequently unblocks SIGURG signals it will
be terminated even if it is set to the default action (SIG_DFL) which
is specified by SUSv3 to ignore that signal.
The following patch fixes the problem:
--- linux-2.4.18/arch/i386/kernel/signal.c~ Thu Mar 21 16:04:30 2002
+++ linux-2.4.18/arch/i386/kernel/signal.c Thu Apr 18 12:19:37 2002
@@ -658,7 +658,7 @@
continue;
switch (signr) {
- case SIGCONT: case SIGCHLD: case SIGWINCH:
+ case SIGCONT: case SIGCHLD: case SIGWINCH: case SIGURG:
continue;
case SIGTSTP: case SIGTTIN: case SIGTTOU:
A quick browse of the other architectures indicates that most (if not
all) of them also need the same fix applied to their arch specific
signal.c files.
Chris
--
[email protected]
IBM OzLabs Linux Development Group
Canberra, Australia
On Thu, 18 Apr 2002, Christopher Yeoh wrote:
>
> If a process is sent a SIGURG signal and it is blocking SIGURG
> signals, when the process subsequently unblocks SIGURG signals it will
> be terminated even if it is set to the default action (SIG_DFL) which
> is specified by SUSv3 to ignore that signal.
>
> The following patch fixes the problem:
>
> --- linux-2.4.18/arch/i386/kernel/signal.c~ Thu Mar 21 16:04:30 2002
> +++ linux-2.4.18/arch/i386/kernel/signal.c Thu Apr 18 12:19:37 2002
> @@ -658,7 +658,7 @@
> continue;
>
> switch (signr) {
> - case SIGCONT: case SIGCHLD: case SIGWINCH:
> + case SIGCONT: case SIGCHLD: case SIGWINCH: case SIGURG:
> continue;
>
> case SIGTSTP: case SIGTTIN: case SIGTTOU:
>
> A quick browse of the other architectures indicates that most (if not
> all) of them also need the same fix applied to their arch specific
> signal.c files.
Christopher,
Could you please fixup (and test ;)) and other archs too ?
>>>>> On Thu, 18 Apr 2002 15:52:32 +1000, Christopher Yeoh <[email protected]> said:
Christopher> If a process is sent a SIGURG signal and it is blocking
Christopher> SIGURG signals, when the process subsequently unblocks
Christopher> SIGURG signals it will be terminated even if it is set
Christopher> to the default action (SIG_DFL) which is specified by
Christopher> SUSv3 to ignore that signal.
Looks like a correct fix to me. I made this change to the ia64 tree.
Thanks,
--david