|
Home About Us A-Z Index Search * Contact Us Register Login Press ShopThe Open Brand -- Problem Reporting and Interpretations System |
Problem Report 1157 Details
Show help | Quick Search | Submit a Test Suite Support Request | Click here to view your privileges
This page provides all information on Problem Report 1157.
Report 1157 Actions
Problem Report Number 1157 Submitter's Classification Specification problem State Resolved Resolution Rejected (REJ) Problem Resolution ID REJ.X.0359 Raised 1970-01-01 08:00 Updated 2003-03-13 08:00 Published null Product Standard Internationalised System Calls and Libraries Extended (UNIX 95) Certification Program The Open Brand certification program Test Suite VSU version 4.1.0 Test Identification Base/sigaction 13,25,26,27,39 Problem Summary PG4U.00111 This request claims SIGCHLD need not be generated when SA_NOCLDWAIT is used. Problem Text
The question of if a SIGCHLD should be generated when the parent sets up
a signal handler with SA_NOCLDWAIT set is unspecified in the X/Open
specification.
All of the failed tests setup a handler to catch SIGCHLD, similar to:
struct sigaction act;
act.sa_flags |= SA_NOCLDWAIT;
act.sa_sigaction = test_sig_handler;
sigaction(SIGCHLD, &act, 0);
These tests all fork a child, and the child process terminates, either
by calling exit() or sending itself a signal via kill(). The parent then
expects to see the handler called for SIGCHLD.
The XSH4v2 specification does not specify when a SIGCHLD signal is to be
generated. Our implementation generates a SIGCHLD when a process becomes
a zombie. The sigaction() description of the SA_NOCLDWAIT flag says that
zombies will not be formed. We therefore believe these tests are testing
beyond the specification.Test Output
TEST CASE: sigaction
TEST PURPOSE #13
After a call to int sigaction(int sig, const struct
sigaction *act, struct sigaction *oact) when
SA_NOCLDWAIT is set in the sa_flags member of the
structure pointed to by act and sig is SIGCHLD, child
processes of the calling process shall not be
transformed into zombie processes when they terminate.
PREP: Set up action for SIGCHLD
PREP: fork() a child that does nothing but exit
ERROR: Timed out waiting for signal
13 FAIL
TEST PURPOSE #25
After a call to int sigaction(int sig, const struct
sigaction *act, struct sigaction *oact) with
SA_SIGINFO set in the sa_flags member of the sigaction
structure pointed to by act and sig equal to SIGCHLD,
on entry to the signal catching function specified by
the sa_sigaction member when the child exited the
si_code member of the structure pointed to by the
siginfo argument shall contain CLD_EXITED, the si_pid
member shall contain the child process ID, the
si_status member shall contain the child's exit value
and the si_uid member shall contain the real
user ID of the process that sent the signal.
PREP: Set up action for SIGCHLD
PREP: fork() a child that exits normally
ERROR: Timed out waiting for signal
25 FAIL
TEST PURPOSE #26
After a call to int sigaction(int sig, const struct
sigaction *act, struct sigaction *oact) with
SA_SIGINFO set in the sa_flags member of the sigaction
structure pointed to by act and sig equal to SIGCHLD,
on entry to the signal catching function specified by
the sa_sigaction member when the child was killed the
si_code member of the structure pointed to by the
siginfo argument shall contain CLD_KILLED, the si_pid
member shall contain the child process ID, the
si_status member shall contain the child's
signal, the si_uid member shall contain the real
user ID of the process that sent the signal and no
core file shall be present.
PREP: Set up action for SIGCHLD
PREP: fork() a child that kills itself
PREP: Generate SIGUSR1 from child
ERROR: Timed out waiting for signal
26 FAIL
TEST PURPOSE #27
If the implementation supports a signal which causes
abnormal process termination and the generation of a core
file:
After a call to int sigaction(int sig, const struct
sigaction *act, struct sigaction *oact) with
SA_SIGINFO set in the sa_flags member of the sigaction
structure pointed to by act and sig equal to SIGCHLD,
on entry to the signal catching function specified by
the sa_sigaction member when the child terminated
abnormally with a signal that causes generation of a core
file the si_code member of the structure pointed
to by the siginfo argument shall contain CLD_DUMPED,
the si_pid member shall contain the child process ID,
the si_status member shall contain the child's
signal, the si_uid member shall contain the
real user ID of the process that sent the signal and a
core file shall be present.
PREP: Obtain the configuration parameter
VSU_SIGNAL_GENERATING_CORE
PREP: Set up action for SIGCHLD
PREP: fork() a child that dumps itself
PREP: generate SIGILL from child
ERROR: Timed out waiting for signal
27 FAIL
TEST PURPOSE #39
If the implementation supports a signal which causes
abnormal process termination but does not cause the
generation of a core file:
After a call to int sigaction(int sig, const struct
sigaction *act, struct sigaction *oact) with
SA_SIGINFO set in the sa_flags member of the sigaction
structure pointed to by act and sig equal to SIGCHLD,
on entry to the signal catching function specified by
the sa_sigaction member when the child terminated
abnormally with a signal does not cause generation of a core
file the si_code member of the structure pointed
to by the siginfo argument shall contain CLD_KILLED,
the si_pid member shall contain the child process ID,
the si_status member shall contain the child's
signal, the si_uid member shall contain the
real user ID of the process that sent the signal and a
core file shall not be present.
PREP: Set up action for SIGCHLD
PREP: fork() a child that ends abnormally
PREP: generate SIGALRM from child
ERROR: Timed out waiting for signal
39 FAILReview Information
Review Type TSMA Review Start Date null Completed null Status Complete Review Recommendation No Resolution Given Review Response
We recommend this request be refused.
We believe these tests are correct as written.
The specification states that a SIGCHLD is generated when a child
process is terminated or stopped. We believe the spec's
discussion of SA_NOCLDWAIT is solely in terms of whether zombie
processes are generated, with no mention of any delta to the need
to generate the signal.
Review Type SA Review Start Date null Completed null Status Complete Review Resolution Rejected (REJ) Review Conclusion
This request is refused.
Problem Reporting System Options:
- View Report 1157
- List All PRs
- Search Reports
- Email the System Administrator
- View the The Open Brand Interpretations Database User Manual
Contact the Certification Authority