|
Home About Us A-Z Index Search * Contact Us Register Login Press ShopThe Open Brand -- Problem Reporting and Interpretations System |
Problem Report 1052 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 1052.
Report 1052 Actions
Problem Report Number 1052 Submitter's Classification Test Suite problem State Resolved Resolution Rejected (REJ) Problem Resolution ID REJ.X.0289 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.2 Test Identification rt.os/aio/aio_fsync 1, 4, 9 Problem Summary PG4R.00015 These tests may fail due to a timing issue in signal delivery. Problem Text
In each case, the test uses the same signal handler to deal with both
SIGRTMIN and SIGRTMAX:
--aio_fsync.c--
private void rt_handler7();
private void rt_handler7(signo, info, context)
int signo;
siginfo_t *info;
void *context;
{
got_sig++;
if (signo == SIGRTMIN) {
got_sig_min++;
}
if (signo == SIGRTMAX) {
got_sig_max = got_sig_min+1;
}
}
--
The last SIGRTMAX can occur while the last SIGRTMIN is still being
processed, causing the tests to fail. The tests pass if each signal
is blocked while the other is being processed:
--patch--
#ifdef UNPATCHED
if (vsrt_rt_signal(SIGRTMIN, rt_handler7) == -1)
DBUG_RETURN(-1);
if (vsrt_rt_signal(SIGRTMAX, rt_handler7) == -1)
DBUG_RETURN(-1);
#else
rval = sigemptyset(&(set));
if (rval == -1) {
in_rpt("sigemptyset failed, errno = %s", errname(errno));
DBUG_RETURN(-1);
}
rval = sigaddset(&set, SIGRTMAX);
if (rval == -1) {
in_rpt("sigaddset failed, errno = %s", errname(errno));
DBUG_RETURN(-1);
}
if (vsrt_rt_signal_mask(SIGRTMIN, rt_handler7, set) == -1)
DBUG_RETURN(-1);
rval = sigemptyset(&(set));
if (rval == -1) {
in_rpt("sigemptyset failed, errno = %s", errname(errno));
DBUG_RETURN(-1);
}
rval = sigaddset(&set, SIGRTMIN);
if (rval == -1) {
in_rpt("sigemptyset failed, errno = %s", errname(errno));
DBUG_RETURN(-1);
}
if (vsrt_rt_signal_mask(SIGRTMAX, rt_handler7, set) == -1)
DBUG_RETURN(-1);
#endif /* UNPATCHED */
/* Add the new function */
int vsrt_rt_signal_mask(int sig, void (*handler)(int, siginfo_t *, void
*),
sigset_t set)
{
int rval;
struct sigaction Sigaction;
Sigaction.sa_mask = set;
Sigaction.sa_sigaction = handler;
Sigaction.sa_flags = SA_SIGINFO;
rval = sigaction(sig,&Sigaction,(struct sigaction *)NULL);
if (rval == -1) {
in_rpt("vsrt_rt_signal_mask: sigaction failed for signal
%d, err
no = %s"
, sig, errname(errno));
xx_rpt(FAILURE);
return -1;
}
return 0;
}
--
Another solution might involve separate signal handlers.
This change should be considered in each handler in the suite that
currently handles multiple signals.
Test Output
/tset/rt.os/aio/aio_fsync/T.aio_fsync 1 Failed
Test Description:
If _POSIX_ASYNCHRONOUS_IO and _POSIX_SYNCHRONOUS_IO are defined or the
implementation supports the aio_fsync() function as described in
System Interfaces and Headers, Issue 5:
A successful call to aio_fsync() shall queue the aiocb structure
referenced by aiocbp for the file indicated by aiocbp->aio_fildes,
setting its error status to EINPROGRESS and return 0.
Test Information:
INFO: No limit on AIO_MAX
> test with pipe
Expected 10 signals from aio_reads, received 2
Expected signal from aio_fsync operation to be received after those from aio_reads
> test with pty
> test with tty
tty testing not configured
> test with file
/tset/rt.os/aio/aio_fsync/T.aio_fsync 4 Failed
Test Description:
If _POSIX_ASYNCHRONOUS_IO and _POSIX_SYNCHRONOUS_IO are defined or the
implementation supports the aio_fsync() function as described in
System Interfaces and Headers, Issue 5:
On a call to aio_fsync() when aiocbp->aio_sigev.sigev_notify is
SIGEV_SIGNAL the signal specified in aiocbp->aio_sigev.sigev_signo
shall be generated for the process when the operation completes.
Test Information:
INFO: No limit on AIO_MAX
> test with pipe
Expected signal from aio_fsync operation to be received after those from aio_reads
> test with pty
> test with tty
tty testing not configured
> test with file
/tset/rt.os/aio/aio_fsync/T.aio_fsync 9 Failed
Test Description:
If _POSIX_ASYNCHRONOUS_IO and _POSIX_SYNCHRONOUS_IO are defined or the
implementation supports the aio_fsync() function as described in
System Interfaces and Headers, Issue 5:
On a call to aio_fsync() all members of the aiocb structure
referenced by aiocbp other than aio_fildes and aio_sigevent shall be
ignored.
Test Information:
INFO: No limit on AIO_MAX
> test with pipe
Expected signal from aio_fsync operation to be received after those from aio_reads
> test with pty
> test with tty
tty testing not configured
> test with file
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 results provided include an
error in test 1 not covered by the submitter's analysis (Expected 10
signals from aio_reads, received 2) and which appears to be an unrelated
implementation issue. The submitter needs to address this error and
submit a request with results relating just to the issue they are raising.
N.B. While we can reproduce the results provided, what we see is the SIGRTMAX
is being delivered before any of the SIGRTMINs, not during processing of the
last one as this request describes. The submitter did not specify in
the request which OS version they are using so its possible this behavior
may be different in their current environment. However we would need
more detailed information than is output by the tests to demonstrate
what is actually happening before we could agree to the waiver requested.
If after the additional error present here has been removed from the
picture the submitter wishes to submit a new request for this issue we
suggest they contact us first to work out how best to accomplish this.
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 1052
- List All PRs
- Search Reports
- Email the System Administrator
- View the The Open Brand Interpretations Database User Manual
Contact the Certification Authority