|
Home About Us A-Z Index Search * Contact Us Register Login Press ShopThe Open Brand -- Problem Reporting and Interpretations System |
Problem Report 1083 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 1083.
Report 1083 Actions
Problem Report Number 1083 Submitter's Classification Test Suite problem State Resolved Resolution Test Suite Deficiency (TSD) Problem Resolution ID TSD.X.0539 Raised 1970-01-01 08:00 Updated 2003-03-13 08:00 Published 1998-04-15 08:00 Product Standard Internationalised System Calls and Libraries Extended V2 (UNIX 98) Certification Program The Open Brand certification program Test Suite VSRT version 5.0.1 Test Identification rt.os/timers/timer_getoverrun 1 Problem Summary TSD4R.00001 This test may fail as it does not cause signal generation before checking for overrun count. Problem Text
The timer_getoverrun() test case one makes incorrect assumptions
that a signal has been accepted or delivered to the process being tested.
Prior to the sleep(10) call the following has been setup:
- the signal SIGRTMIN has been added to the set of signals to be accepted
and masked to be blocked
- the real time timer has been created for 2 second intervals until
expiration.
During the sleep(10) function the following happens:
- 1st 2 second timer expires and the SIGRTMIN is generated and blocked.
The SIGRTMIN is now in a pending state.
- 2nd 2 second timer expires and the SIGRTMIN is generated. There already
exists a pending SIGRTMIN so the system internal overrun count (not exported
to the application program) is incremented.
- For 3rd, 4th and 5th 2 second timers expirations is the same as the 3rd.
The overrun count should be incremented to aleast four which is what the
test case is attempting to verify.
At this point the test case performs timer_getoverrun() call.
Since no signals have been accepted or delivered, this produces undefined
behavior.
POSIX96 section 14.2.4.2, page 316, lines 271-275 states
The value returned by timer_getoverrun() applies to the most recent
expiration signal delivery or acceptance for the timer. If no
expiration signal has been delivered or accepted for the timer,
or if the RealTime Signals Extension is not supported, the meaning
of the overrun count returned is undefined.
The original SIGRTMIN signal which is pending has never been delivered
or accepted by the process at the point that timer_getoverrun() is called
and any count is undefined.
The solution is to perform a sigwaitinfo(), before the timer_getoverrun() call
which will accept the pending SIGRTMIN, and thus, transfer the value of system
internal overrun count to userland overrun count and which will then be
fetched by timer_getoverrun().Test Output
10|0 /tset/rt.os/timers/timer_getoverrun/T.timer_getoverrun 10:54:20|TC Start,
scenario ref 1-0 15|0 3.1-lite 4|TCM Start
400|0 1 1 10:54:20|IC Start
200|0 1 10:54:20|TP Start
520|0 1 00003377 1 1|Expected at least 3 overruns, received 0
220|0 1 1 10:54:30|FAIL
410|0 1 1 10:54:30|IC EndReview 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 1083
- List All PRs
- Search Reports
- Email the System Administrator
- View the The Open Brand Interpretations Database User Manual
Contact the Certification Authority