Re: A fifo and signal bug

H.J. Lu (hjl@lucon.org)
Sun, 22 Nov 1998 07:42:08 -0800 (PST)


> With this change, the open_fifo syscall gets restarted for the stopped
> child process, and the test passes.

Thanks. Your change only affects x86. We need to fix all platforms.

>
> --- arch/i386/kernel/signal.c-dist Sun Nov 22 12:04:36 1998
> +++ arch/i386/kernel/signal.c Sun Nov 22 12:05:13 1998
> @@ -682,7 +682,8 @@
> current->exit_code = signr;
> if (!(current->p_pptr->sig->action[SIGCHLD-1].sa.sa_flags & SA_NOCLDSTOP))
> notify_parent(current, SIGCHLD);
> - schedule();
> + if (regs->orig_eax < 0)
> + schedule();
> continue;
>
> case SIGQUIT: case SIGILL: case SIGTRAP:
>
> The big question that I can't explain is why the test works for Linus,
> but not for others (unless this is an SMP/UP thing).
>

I'd like to know why. BTW, I got the same failure on my PPro SMP machine.
So it may indicate some weird bug.

-- 
H.J. Lu (hjl@gnu.org)

- 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/