|
Home About Us A-Z Index Search * Contact Us Register Login Press ShopThe Open Brand -- Problem Reporting and Interpretations System |
Problem Report 1363 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 1363.
Report 1363 Actions
Problem Report Number 1363 Submitter's Classification Test Suite problem State Resolved Resolution Test Suite Deficiency (TSD) Problem Resolution ID TSD.X.0645 Raised 1970-01-01 08:00 Updated 2003-03-13 08:00 Published 1996-12-11 08:00 Product Standard Internationalised System Calls and Libraries Extended (UNIX 95) Certification Program The Open Brand certification program Test Suite VSU version 4.1.1 Test Identification Base/wait3 1, 2 Problem Summary TSD4U.00172 This test may fail on very fast processors due to timing considerations. Problem Text
The reason that the failing wait3 tests time out on some machines rather
than others is due to a problem in UseSystemAndUserTime(). Interestingly,
on the fastest processors this call takes the longest to complete. We
instrumented this call to see where the elapsed time was being consumed.
It turned out that the loop that is attempting to accumulate the system
time was taking much longer than the loop that accumulates user time.
This is true on all machines on our current implementation. But more
importantly, the elapsed time needed to accumulate a second of system time
is much greater on some of our machines than others.
This seeming paradox can be attributed to the choice of system calls used
in UseSystemAndUserTime(). Unfortunately, the creat(), close(), and
unlink() system calls are likely to block in the kernel. Time spent being
blocked in the kernel does not count as system time. On our platform
under test, the number of instructions that can be executed in a given
clock tick is significantly higher than for our other processors.
Our suggestion is: rather than the descriptor oriented system calls
currently used in UseSystemAndUserTime(), system calls that are more
compute intensive should be used. For example, we replaced the creat(),
close(), and unlink() calls with a single call to getpid() and nearly
matched the elapsed user time consumed by the routine. We suspect that
getpid() may not be the preferred choice of yours because of portability
concerns. Perhaps a better choice would be to provide a signal handler
and repeatedly send a signal to the calling process via raise() or
kill(). We had about the same behavior doing this as getpid() since the
signal handling functionality in the kernel is pretty compute intensive
and is likely to be so on other implementations.Test Output
TEST CASE: wait3
TEST PURPOSE #1
A successful call to pid_t wait3(int *stat_loc, int
options, struct rusage *resource_usage) when a child
process has not changed state prior to the call shall
suspend the calling process until a child changes
state, place the child's resource usage in the
structure pointed to by resource_usage, and return the
process id of the child process.
PREP: fork() and wait for a child that uses some cpu time
TEST: wait3
ERROR: wait3 failed, errno = 4(EINTR - Interrupted system call)
PREP: use at least 1 second user and 1 second system time
1 FAIL
TEST PURPOSE #2
A successful call to pid_t wait3(int *stat_loc, int
options, struct rusage *resource_usage) when a child
process has changed state prior to the call shall
immediately return the process id of the child process
(after placing the child's resource usage in the
structure pointed to by resource_usage).
PREP: fork() and wait for a child that uses some cpu time
PREP: use at least 1 second user and 1 second system time
ERROR: Timed out waiting for completion.
2 UNRESOLVEDReview Information
Review Type TSMA Review Start Date null Completed null Status Complete Review Recommendation No Resolution Given Review Response
We agree this is a test suite deficiency in the test
suite version(s) listed.
Review Type SA Review Start Date null Completed null Status Complete Review Resolution Test Suite Deficiency (TSD) Review Conclusion
This is an agreed Test Suite Deficiency.
Problem Reporting System Options:
- View Report 1363
- List All PRs
- Search Reports
- Email the System Administrator
- View the The Open Brand Interpretations Database User Manual
Contact the Certification Authority