In the latest *RedHat* kernel, I've noticed that there's a "workaround" implemented in: /usr/src/linux-2.4.20-13.9/kernel/exit.c, routine sys_wait4():
if (current->sighand->action[SIGCHLD-1].sa.sa_handler == SIG_IGN) { static unsigned long last_timestamp;
// rate-limit it to 1 per minute: if (jiffies - last_timestamp > 60*HZ) { last_timestamp = jiffies; printk(KERN_INFO "application bug: %s(%d) has SIGCHLD set to SIG_IGN but calls wait().\n", current->comm, current->pid); printk(KERN_INFO "(see the NOTES section of 'man 2 wait'). Workaround activated.\n"); } current->sighand->action[SIGCHLD-1].sa.sa_handler = SIG_DFL; workaround = 1; } add_wait_queue(¤t->wait_chldexit,&wait);
If the parent SIGCHLD is set to SIG_IGN, I get this printed in the system log. Nifty. I understand why this is a problem, and I see this in the RedHat 9 release notes.
But I don't see this change in Linus's 2.4 or 2.5 bitkeeper trees or in the latest kernel.org patch sets (thought it might be in one of the "ac" patch sets). Is this becoming part of the official kernel?
Is there some way I can browse RedHat kernel changes to see the history of code changes? Something like the BitKeeper or SourceForge browsers would be helpfull. The RPM changelog for the kernel-source package didn't give any hint of this change either.
Thanks for any assistance, -Bob Arendt