[BUG (also in 2.2)] SIGURG signal to traced processes

Project BRAVO (bravo@russell.ce.uniroma2.it)
Mon, 8 Feb 1999 19:40:55 +0100


A traced program that receives a SIGURG signal (neither caught
nor explicitly ignored) aborts:

--------------------------------------------------------------
(gdb) run
Starting program: /tmp/a.out

Program received signal SIGWINCH, Window size changed.
0x8048424 in main () at prova.c:1
1 void main(void){for(;;);}
(gdb) cont
Continuing.

Program terminated with signal SIGURG, Urgent I/O condition.
The program no longer exists.
(gdb)
--------------------------------------------------------------

I believe that this could be a bug, since the default action of SIGURG
(like SIGWINCH) is to ignore the signal.

The fix obviously consists of adding the SIGURG case in the switch statements
of the do_signal() functions (arch/XXX/kernel/signal.c). For instance:

====================================================
--- linux-2.2.2-pre2/arch/i386/kernel/signal.c Mon Feb 8 19:17:07 1999
+++ linux/arch/i386/kernel/signal.c Mon Feb 8 19:15:56 1999
@@ -670,6 +670,7 @@

switch (signr) {
case SIGCONT: case SIGCHLD: case SIGWINCH:
+ case SIGURG:
continue;

case SIGTSTP: case SIGTTIN: case SIGTTOU:
====================================================

Or is the actual behavior correct?

Marco Cesati

+---------------------------------------------------------------+
| Computer Engineering - Project BRAVO |
+---------------------------------------------------------------+
| University of Rome "Tor Vergata" |
| Dept. of Computer Science, Systems and Industrial Engineering |
| via di Tor Vergata, 00133 Rome (Italy) |
| e-mail: bravo@russell.ce.uniroma2.it |
+---------------------------------------------------------------+

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/