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

The Open Brand -- Problem Reporting and Interpretations System


Problem Report 1179 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 1179.


Report 1179 Actions


    Problem Report Number 1179
    Submitter's Classification Specification problem
    State Resolved
    Resolution Rejected (REJ)
    Problem Resolution ID REJ.X.0381
    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 25
    Problem Summary PG4U.00086 This IR claims that only the lower 8-bits of the exit value are valid in the si_status field returned.
    Problem Text
    We are returning only the low order 8 bits 0xEF = decimal 239
    and the test case is expecting 0xBEEF = decimal 48879

    In the POSIX .1 Standard and in the XPG4 standard the only documented
    usage of the status argument that is passed on the exit() function
    indicates that the low order 8 bits are the only relevant part of the
    status argument. Additionally, since the WIF macros require the status
    returned on the wait functions to contain an indication of whether the
    child terminated or stopped due to a signal or via a call to one of the
    exit functions, the status word can not be architected to pass thru
    an entire integer for the status. For these reasons, it seems
    inconsistent for the XPG4.2 test suite to require an entire integer to
    be available from a call to exit() via the si_status member of the
    siginfo_t structure rather than the one byte that is required by the
    wait functions.
    Test Output
    IC Start
    TP Start
    SPEC1170TESTSUITE CASE 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_handler 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
    TEST: signal = SIGCHLD
    TEST: si_code = CLD_EXITED
    TEST: si_status = exit value
    ERROR: si_status incorrect. Expected 48879,Received 239
    FAIL
    IC End
    TC End

    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 the test is correct.

    The exit() description specifies that only lower eight bits of the
    value passed to exit are made available, but it only applies when
    various wait*() functions are being executed:

    If the parent process of the calling process is executing a
    wait(), wait3(), waitid() or waitpid(), and has neither set
    its SA_NOCLDWAIT flag nor set SIGCHLD to SIG_IGN, it is
    notified of the calling process' termination and the low-order
    eight bits (that is, bits 0377) of status are made available
    to it. If the parent is not waiting, the child's status will
    be made available to it when the parent subsequently executes
    wait(), wait3(), waitid() or waitpid().

    Outside of these conditions, the <signal.h> description states that
    the si_status field should contain the exit value or signal without
    alteration.

    In addition, the following signal-specific
    information will be available:

    Signal Member Value

    [...]

    SIGCHLD pid_t si_pid child process ID
    int si_status exit value or signal
    uid_t si_uid real user ID of the process that sent
    the signal

    The use of the WIF* macros do not apply to these discussions, since
    the exit value and signal information are not contained within a
    single integer value. The use of WIF macros only applies to wait(),
    wait3(), and waitpid().

    The siginfo_t structure used by sigaction() divides this information
    into separate elements, so size limitations of the si_status field are
    not at issue.

    PG4U.00067 also addresses these issues from a slightly different
    perspective.

    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