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

The Open Brand -- Problem Reporting and Interpretations System


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


Report 0490 Actions


    Problem Report Number 0490
    Submitter's Classification Specification problem
    State Resolved
    Resolution Rejected (REJ)
    Problem Resolution ID REJ.X.0109
    Raised 1995-08-31 08:00
    Updated 2003-03-13 08:00
    Published null
    Product Standard Internationalised System Calls and Libraries (XPG4)
    Certification Program The Open Brand certification program
    Test Suite VSX4 version 4.3.5
    Test Identification POSIX.os/procprim/sigconcept 35
    Linked Problem Reports PIN4.043, (in, old, system)
    Problem Summary PG4R.110 We have a multi-processing kernel: a stopped process may still do some execution in the kernel. The target of a stop signal that is already waiting in such functions as read() and write() can still be...
    Problem Text
    We have a multi-processing kernel: a stopped process may still do
    some execution in the kernel. The target of a stop signal that is
    already waiting in such functions as read() and write() can still be
    posted for the original wait event, do some processing (setting of
    the errno) and then enter the wait for the stop signal. The
    individual funtions aren't even aware of the stop and continue
    signals in this scenario. If the continue signal had arrived while
    the functions were in the original wait you would have seen the
    EINTR.

    Our kernel is also tied to asynchronous activity outside the
    process that was stopped.

    We believe that this is a grey area in the standard and that a waiver
    should be granted for the same reasons that were stated in
    PIN4.043:
    1) The state of stopped kernel threads is not defined by XPG4
    and should not be relied on by applications.

    2) The entry for open() states that [EINTR] will be returned
    when a signal was caught during the open() function, but it
    does not define under what circumstances this may happen (for
    example, it does not indicate that an open request for a fifo
    can be interrupted).

    3) Again in the entry for open(), XPG4 states that when opening a
    fifo with O_WRONLY and O_NONBLOCK set, the open() will return
    an error if no process currently has the file open for
    reading (in the original case cited in PIN4.043, the VSX4
    test assumes it will work even though the open for reading is
    incomplete).

    Other tests in this area fail for similar reasons using the fcntl(),
    read(), and write() functions.

    Test Output
    /tset/POSIX.os/procprim/sigconcept/T.sigconcept 35 Failed

    Test Description:
    If _POSIX_JOB_CONTROL is defined, when any of the functions fcntl(),
    open(), pause(), read(), sleep(), sigsuspend(), tcdrain(), wait(),
    waitpid(), and write() are stopped by the delivery of a signal whose
    action is to stop the process, the subsequent generation of a SIGCONT
    signal that is being caught by a signal catching function shall cause
    the process to continue after returning from the signal catching
    function with the function reporting that it has been interrupted by
    the SIGCONT signal.
    Posix Ref: Component Signal Concepts Assertion 3.3.1.4-48(C)
    Posix Ref: Component Signal Concepts Assertion 3.3.1.4-49(C:D)

    Test Strategy:
    FOR each of the test functions tcdrain(), fcntl(), sleep(), pause(),
    sigsuspend(), read(), write(), open(), wait(), waitpid():
    If terminal output is buffered or not testing tcdrain
    FORK a child process
    CHILD process:
    CREATE new process group using setpgid(0,0)
    SET the SIGCONT signal action to signal catching function
    SET the SIGSTOP signal action to SIG_DFL
    IF testing wait() or waitpid()
    FORK a child process which sleeps for 2.5 * WAITTIME
    CALL the test function
    PARENT process:
    SET alarm for time WAITTIME
    WAIT for the child process to obtain the child status
    VERIFY the child process is active
    SEND the SIGSTOP signal to the child process
    SLEEP for WAITTIME
    WAIT for the child process to obtain the child status
    VERIFY the child process stopped
    CALL a variable function dependent on the test function which
    will cause the test function to continue after SIGCONT is
    received
    SEND the SIGCONT signal to the child process
    CHILD process:
    VERIFY that test function returned an error with errno set to
    EINTR
    IF testing wait() or waitpid()
    KILL the child process waited for
    EXIT
    PARENT process:
    WAIT for the child process to obtain the child status
    VERIFY the child process exited

    Test Information:
    function reported no interruption by stopping or SIGCONT signal
    fcntl() returned 0 errno 121, should return -1 errno 120
    function reported no interruption by stopping or SIGCONT signal
    read() returned 1 errno 115, should return -1 errno 120
    function reported no interruption by stopping or SIGCONT signal
    write() returned 1 errno 112, should return -1 errno 120
    function reported no interruption by stopping or SIGCONT signal
    open() returned 8 errno 115, should return -1 errno 120
    ************************************************************************

    Review Information

    Review Type TSMA Review
    Start Date null
    Completed null
    Status Complete
    Review Recommendation No Resolution Given
    Review Response
    This requests quotes the current Permanent Interpretation for this test
    and it is not necessary to provide a new interpretation on this issue.

    It is recommended that this request is rejected.

    Review Type SA Review
    Start Date null
    Completed null
    Status Complete
    Review Resolution Rejected (REJ)
    Review Conclusion
    This request is refused. Please refer to PIN4.043.

    Problem Reporting System Options:

     

    Back   


Contact the Certification Authority