|
Home About Us A-Z Index Search * Contact Us Register Login Press ShopThe Open Brand -- Problem Reporting and Interpretations System |
Problem Report 1078 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 1078.
Report 1078 Actions
Problem Report Number 1078 Submitter's Classification Test Suite problem State Resolved Resolution Test Suite Deficiency (TSD) Problem Resolution ID TSD.X.0534 Raised 1970-01-01 08:00 Updated 2003-03-13 08:00 Published 1998-11-02 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.2 Test Identification rt.os/aio/aio_fsync 1, 4, 9 Problem Summary TSD4R.00006 This test may fail as it does not accomodate the possibility of the signal from aio_fsync being delivered during processing of earlier signals. 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, errno = %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 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 fileReview 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 1078
- List All PRs
- Search Reports
- Email the System Administrator
- View the The Open Brand Interpretations Database User Manual
Contact the Certification Authority