HomeAbout Us A-Z IndexSearch * Contact Us Register LoginPress Shop

The Open Brand -- Problem Reporting and Interpretations System


Problem Report 1078 Details

Help 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 file

    Review 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:

     

    Back   


Contact the Certification Authority