|
Home About Us A-Z Index Search * Contact Us Register Login Press ShopThe Open Brand -- Problem Reporting and Interpretations System |
Problem Report 1053 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 1053.
Report 1053 Actions
Problem Report Number 1053 Submitter's Classification Test Suite problem State Resolved Resolution Rejected (REJ) Problem Resolution ID REJ.X.0290 Raised 1970-01-01 08:00 Updated 2003-03-13 08:00 Published null 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/mqueue/mq_notify 2, 3 Problem Summary PG4R.00014 These tests may fail due to signals interrupting a semaphore operation. Problem Text
This failures can be caused by a problem with SRC/common/vsrtlib/event.c:
int vsrt_wait_event(int event, int t)
{
struct sembuf mysembuf;
int save_errno, rval;
...
if (t > 0) {
got_sigalrm = 0;
sigemptyset(&(Sigaction.sa_mask));
Sigaction.sa_handler = vsrt_lsah;
Sigaction.sa_flags = 0;
rval = sigaction(SIGALRM,&Sigaction,(struct sigaction *)NULL);
if (rval == -1) {
in_rpt("vsrt_wait_event: sigaction failed, errno =
%s (%
s), errno, errname(errno)");
xx_rpt(FAILURE);
return -1;
}
(void) alarm((unsigned int)t);
}
line 142 -> rval = semop(semid, &mysembuf, 1);
....
}
The test code intends to do semaphore operations, but semop() could be
interrupted by a signal. In that case, semop() will return -1 and
errno will be set to EINTR.
suggested fix:
rval = semop(semid, &mysembuf, 1); <-- line 142
while (rval == -1 && errno == EINTR) {
rval = semop(semid, &mysembuf, 1);
}Test Output
**********************************************************************
/tset/rt.os/mqueue/mq_notify/T.mq_notify 2 Failed
Test Description:
If _POSIX_MESSAGE_PASSING and _POSIX_REALTIME_SIGNALS are defined or
the implementation supports the mq_notify() function as described in
System Interfaces and Headers, Issue 5:
A successful call to mq_notify() when notification->sigev_notify is
SIGEV_SIGNAL shall cause the signal specified in notification-
>sigev_signo to be generated for the process upon message arrival at
the empty message queue associated with mqdes and the process'
registration for notification shall be removed.
Test Information:
message queue did not have any messages
**********************************************************************
**********************************************************************
/tset/rt.os/mqueue/mq_notify/T.mq_notify 3 Failed
Test Description:
If _POSIX_MESSAGE_PASSING and _POSIX_REALTIME_SIGNALS are defined or
the implementation supports the mq_notify() function as described in
System Interfaces and Headers, Issue 5:
After a successful call to mq_notify() when notification-
>sigev_notify is SIGEV_SIGNAL and the SA_SIGINFO flag is set for the
signal specified in notification->sigev_signo, the signal shall be
queued for the process when it is generated and the value specified
in notification->sigev_value shall be in the si_value component of
the generated signal.
Test Information:
message queue did not have any messages
**********************************************************************
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.
The vsrt_wait_event() code goes on after the fragment provided above to
check the value of rval and if it was -1 an error message starting
with "vsrt_wait_event: semop failed" would be emitted.
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:
- View Report 1053
- List All PRs
- Search Reports
- Email the System Administrator
- View the The Open Brand Interpretations Database User Manual
Contact the Certification Authority