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

The Open Brand -- Problem Reporting and Interpretations System


Problem Report 1052 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 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:

     

    Back   


Contact the Certification Authority