HomeAbout Us A-Z IndexSearch * Contact Us Register LoginPress Shop

The Open Brand -- Problem Reporting and Interpretations System


Problem Report 1157 Details

Help 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 FAIL

    Review 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:

     

    Back   


Contact the Certification Authority