|
Home About Us A-Z Index Search * Contact Us Register Login Press ShopThe Open Brand -- Problem Reporting and Interpretations System |
Problem Report 0490 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 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:
- View Report 0490
- List All PRs
- Search Reports
- Email the System Administrator
- View the The Open Brand Interpretations Database User Manual
Contact the Certification Authority