Bug 166258 - RHEL3 fix needed for bugzilla 7510 (pthread signal handling)
Summary: RHEL3 fix needed for bugzilla 7510 (pthread signal handling)
Alias: None
Product: Red Hat Enterprise Linux 3
Classification: Red Hat
Component: kernel
Version: 3.0
Hardware: x86_64
OS: Linux
Target Milestone: ---
Assignee: Don Howard
QA Contact: Brian Brock
Depends On:
TreeView+ depends on / blocked
Reported: 2005-08-18 12:29 UTC by Issue Tracker
Modified: 2007-11-30 22:07 UTC (History)
3 users (show)

Clone Of:
Last Closed: 2005-09-22 07:54:36 UTC

Attachments (Terms of Use)

Description Issue Tracker 2005-08-18 12:29:26 UTC
Escalated to Bugzilla from IssueTracker

Comment 10 Don Howard 2005-09-22 00:55:33 UTC
I have tracked down the SIGCHLD issue.  RHEL3 short-circuits signal delivery for
signals who's default is SIG_IGN. 

	if (sig_kernel_ignore(sig) &&
			p->sighand->action[sig-1].sa.sa_handler == SIG_DFL) {
		rm_from_queue(sigmask(sig), &p->signal->shared_pending);
		return 0;

By adding a no-op signal handler for SIGCHLD, I was able to get the expected 
behavior on RHEL3 & 4.  I'll investigate the possiblity of modifying RHEL3 to
behave like RHEL4, but the RHEL3 behaviour is arguably correct.  

Comment 12 Don Howard 2005-09-22 07:48:58 UTC
Further digging (and close reading of 'man sigwait') points this out:

       sigwait suspends the calling thread until one of the signals in set is
       delivered to the calling thread. It then stores the number of the sig-
       nal received in the location pointed to by sig and returns. The signals
       in  set must be **blocked and not ignored on entrance to sigwait.**  If 
       the delivered signal has a signal handler function attached, that  
       function is not called.

The customer's test program does not install any sort of signal handler for
SIGCHLD.  The default disposition of SIGCHLD is SIG_IGN, so the signal is
implicitly ignored.

Note You need to log in before you can comment on or make changes to this bug.