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

The Open Brand -- Problem Reporting and Interpretations System


Problem Report 2537 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 2537.


Report 2537 Actions


    Problem Report Number 2537
    Submitter's Classification Test Suite problem
    State Resolved
    Resolution Rejected (REJ)
    Problem Resolution ID REJ.X.0681
    Raised 2007-11-29 00:50
    Updated 2007-12-05 22:43
    Published 2007-12-05 22:43
    Product Standard Internationalised System Calls and Libraries Extended V3 (UNIX 03)
    Certification Program The Open Brand certification program
    Test Suite VSART version 1.1.7
    Test Identification POSIX_art.os/synchobjects_rwlocks/pthread_rwlock_rdlock 12
    POSIX_art.os/synchobjects_rwlocks/pthread_rwlock_tryrdlock 11
    Specification Base Definitions Issue 6
    Location in Spec Line 2191-2192 of the combined PDF SUVs3_TC2 standard.
    Problem Summary Improper expectation that PTHREAD_SCOPE_PROCESS is supported on system
    supporting _POSIX_THREAD_PRIORITY_SCHEDULING.
    Problem Text After correcting the following problem in the vrtxlib, it can be seen
    that vrtx_pthread_create() is failing with an EPERM error.

    Line 268 in SRC/common/vrtxlib/thrdsafe.c is

    in_rpt("vrtx_pthread_create[%d] failed, error ", cnt, rval);

    should be

    in_rpt("vrtx_pthread_create[%d] failed, error: %d ", cnt, rval);


    According to SUSv3 an EPERM error must be returned as follows:

    ERRORS
    The pthread_create( ) function shall fail if:

    [EPERM] The caller does not have appropriate permission to set the
    required scheduling parameters or scheduling policy.

    Looking at the failing tests, the following attributes are being set in
    the VRTX library function vrtx_pthread_create() for the thread:

    PTHREAD_CREATE_JOINABLE
    SCHED_RR
    PTHREAD_EXPLICIT_SCHED
    PTHREAD_SCOPE_PROCESS

    The EPERM error is the result of trying to create the thread with
    PTHREAD_SCOPE_PROCESS contention scope. PTHREAD_SCOPE_PROCESS is not
    required to be supported by a UNIX03 conforming system. The SUSv3
    Standard states the following


    ? Conforming implementations shall support the PTHREAD_SCOPE_PROCESS
    scheduling contention scope, the PTHREAD_SCOPE_SYSTEM scheduling
    contention scope, or both.


    The pthread_attr_setscope() call is protected by checks on the support
    for_POSIX_THREAD_PRIORITY_SCHEDULING. I have reviewed the standard for
    any links between PTHREAD_SCOPE_PROCESS and
    _POSIX_THREAD_PRIORITY_SCHEDULING and found none. The VRTX library is
    in error for assuming PTHREAD_SCOPE_PROCESS is supported on all systems
    supporting _POSIX_THREAD_PRIORITY_SCHEDULING.

    I have opened this against VSART, but this is causing failures in the
    VSTH Test Suite too.

    Test Output
    ************************************************************************

    /tset/POSIX_art.os/synchobjects_rwlocks/pthread_rwlock_rdlock/T.pthread_
    rwlock_rdlock 12 Unresolved

    Test Description:
    If {_POSIX_READER_WRITER_LOCKS} is defined:
    pthread_rwlock_rdlock(lock) is thread safe.

    Test Information:
    vrtx_pthread_create[0] failed, error
    vrtx_pthread_create[1] failed, error
    vrtx_pthread_create[2] failed, error
    vrtx_pthread_create[3] failed, error
    vrtx_pthread_create[4] failed, error
    vrtx_pthread_create[5] failed, error
    vrtx_pthread_create[6] failed, error
    vrtx_pthread_create[7] failed, error
    vrtx_pthread_create[8] failed, error
    vrtx_pthread_create[9] failed, error
    vrtx_pthread_create[10] failed, error
    vrtx_pthread_create[11] failed, error
    vrtx_pthread_create[12] failed, error
    vrtx_pthread_create[13] failed, error
    vrtx_pthread_create[14] failed, error
    vrtx_pthread_create[15] failed, error
    vrtx_pthread_join[0] failed, error 3
    vrtx_pthread_join[1] failed, error 3
    vrtx_pthread_join[2] failed, error 3
    vrtx_pthread_join[3] failed, error 3
    vrtx_pthread_join[4] failed, error 3
    vrtx_pthread_join[5] failed, error 3
    vrtx_pthread_join[6] failed, error 3
    vrtx_pthread_join[7] failed, error 3
    vrtx_pthread_join[8] failed, error 3
    vrtx_pthread_join[9] failed, error 3
    vrtx_pthread_join[10] failed, error 3
    vrtx_pthread_join[11] failed, error 3
    vrtx_pthread_join[12] failed, error 3
    vrtx_pthread_join[13] failed, error 3
    vrtx_pthread_join[14] failed, error 3
    vrtx_pthread_join[15] failed, error 3


    ************************************************************************

    ************************************************************************

    /tset/POSIX_art.os/synchobjects_rwlocks/pthread_rwlock_tryrdlock/T.pthre
    ad_rwlock_tryrdlock 11 Unresolved

    Test Description:
    If {_POSIX_READER_WRITER_LOCKS} is defined:
    pthread_rwlock_tryrdlock(lock) is thread safe.

    Test Information:
    vrtx_pthread_create[0] failed, error
    vrtx_pthread_create[1] failed, error
    vrtx_pthread_create[2] failed, error
    vrtx_pthread_create[3] failed, error
    vrtx_pthread_create[4] failed, error
    vrtx_pthread_create[5] failed, error
    vrtx_pthread_create[6] failed, error
    vrtx_pthread_create[7] failed, error
    vrtx_pthread_create[8] failed, error
    vrtx_pthread_create[9] failed, error
    vrtx_pthread_create[10] failed, error
    vrtx_pthread_create[11] failed, error
    vrtx_pthread_create[12] failed, error
    vrtx_pthread_create[13] failed, error
    vrtx_pthread_create[14] failed, error
    vrtx_pthread_create[15] failed, error
    vrtx_pthread_join[0] failed, error 3
    vrtx_pthread_join[1] failed, error 3
    vrtx_pthread_join[2] failed, error 3
    vrtx_pthread_join[3] failed, error 3
    vrtx_pthread_join[4] failed, error 3
    vrtx_pthread_join[5] failed, error 3
    vrtx_pthread_join[6] failed, error 3
    vrtx_pthread_join[7] failed, error 3
    vrtx_pthread_join[8] failed, error 3
    vrtx_pthread_join[9] failed, error 3
    vrtx_pthread_join[10] failed, error 3
    vrtx_pthread_join[11] failed, error 3
    vrtx_pthread_join[12] failed, error 3
    vrtx_pthread_join[13] failed, error 3
    vrtx_pthread_join[14] failed, error 3
    vrtx_pthread_join[15] failed, error 3


    ************************************************************************

    ************************************************************************

    /tset/POSIX_art.os/synchobjects_rwlocks/pthread_rwlock_trywrlock/T.pthre
    ad_rwlock_trywrlock 9 Unresolved

    Test Description:
    If {_POSIX_READER_WRITER_LOCKS} is defined:
    pthread_rwlock_trywrlock(lock) is thread safe.

    Test Information:
    vrtx_pthread_create[0] failed, error
    vrtx_pthread_create[1] failed, error
    vrtx_pthread_create[2] failed, error
    vrtx_pthread_create[3] failed, error
    vrtx_pthread_create[4] failed, error
    vrtx_pthread_create[5] failed, error
    vrtx_pthread_create[6] failed, error
    vrtx_pthread_create[7] failed, error
    vrtx_pthread_create[8] failed, error
    vrtx_pthread_create[9] failed, error
    vrtx_pthread_create[10] failed, error
    vrtx_pthread_create[11] failed, error
    vrtx_pthread_create[12] failed, error
    vrtx_pthread_create[13] failed, error
    vrtx_pthread_create[14] failed, error
    vrtx_pthread_create[15] failed, error
    vrtx_pthread_join[0] failed, error 3
    vrtx_pthread_join[1] failed, error 3
    vrtx_pthread_join[2] failed, error 3
    vrtx_pthread_join[3] failed, error 3
    vrtx_pthread_join[4] failed, error 3
    vrtx_pthread_join[5] failed, error 3
    vrtx_pthread_join[6] failed, error 3
    vrtx_pthread_join[7] failed, error 3
    vrtx_pthread_join[8] failed, error 3
    vrtx_pthread_join[9] failed, error 3
    vrtx_pthread_join[10] failed, error 3
    vrtx_pthread_join[11] failed, error 3
    vrtx_pthread_join[12] failed, error 3
    vrtx_pthread_join[13] failed, error 3
    vrtx_pthread_join[14] failed, error 3
    vrtx_pthread_join[15] failed, error 3


    ************************************************************************

    ************************************************************************

    /tset/POSIX_art.os/synchobjects_rwlocks/pthread_rwlock_unlock/T.pthread_
    rwlock_unlock 9 Unresolved

    Test Description:
    If {_POSIX_READER_WRITER_LOCKS} is defined:
    pthread_rwlock_unlock(lock) is thread safe.

    Test Information:
    vrtx_pthread_create[0] failed, error
    vrtx_pthread_create[1] failed, error
    vrtx_pthread_create[2] failed, error
    vrtx_pthread_create[3] failed, error
    vrtx_pthread_create[4] failed, error
    vrtx_pthread_create[5] failed, error
    vrtx_pthread_create[6] failed, error
    vrtx_pthread_create[7] failed, error
    vrtx_pthread_create[8] failed, error
    vrtx_pthread_create[9] failed, error
    vrtx_pthread_create[10] failed, error
    vrtx_pthread_create[11] failed, error
    vrtx_pthread_create[12] failed, error
    vrtx_pthread_create[13] failed, error
    vrtx_pthread_create[14] failed, error
    vrtx_pthread_create[15] failed, error
    vrtx_pthread_join[0] failed, error 3
    vrtx_pthread_join[1] failed, error 3
    vrtx_pthread_join[2] failed, error 3
    vrtx_pthread_join[3] failed, error 3
    vrtx_pthread_join[4] failed, error 3
    vrtx_pthread_join[5] failed, error 3
    vrtx_pthread_join[6] failed, error 3
    vrtx_pthread_join[7] failed, error 3
    vrtx_pthread_join[8] failed, error 3
    vrtx_pthread_join[9] failed, error 3
    vrtx_pthread_join[10] failed, error 3
    vrtx_pthread_join[11] failed, error 3
    vrtx_pthread_join[12] failed, error 3
    vrtx_pthread_join[13] failed, error 3
    vrtx_pthread_join[14] failed, error 3
    vrtx_pthread_join[15] failed, error 3


    ************************************************************************

    ************************************************************************
    ****************************************************

    /tset/POSIX_art.os/synchobjects_rwlocks/pthread_rwlock_wrlock/T.pthread_
    rwlock_wrlock 8 Unresolved

    Test Description:
    If {_POSIX_READER_WRITER_LOCKS} is defined:
    pthread_rwlock_wrlock(lock) is thread safe.

    Test Information:
    vrtx_pthread_create[0] failed, error
    vrtx_pthread_create[1] failed, error
    vrtx_pthread_create[2] failed, error
    vrtx_pthread_create[3] failed, error
    vrtx_pthread_create[4] failed, error
    vrtx_pthread_create[5] failed, error
    vrtx_pthread_create[6] failed, error
    vrtx_pthread_create[7] failed, error
    vrtx_pthread_create[8] failed, error
    vrtx_pthread_create[9] failed, error
    vrtx_pthread_create[10] failed, error
    vrtx_pthread_create[11] failed, error
    vrtx_pthread_create[12] failed, error
    vrtx_pthread_create[13] failed, error
    vrtx_pthread_create[14] failed, error
    vrtx_pthread_create[15] failed, error
    vrtx_pthread_join[0] failed, error 3
    vrtx_pthread_join[1] failed, error 3
    vrtx_pthread_join[2] failed, error 3
    vrtx_pthread_join[3] failed, error 3
    vrtx_pthread_join[4] failed, error 3
    vrtx_pthread_join[5] failed, error 3
    vrtx_pthread_join[6] failed, error 3
    vrtx_pthread_join[7] failed, error 3
    vrtx_pthread_join[8] failed, error 3
    vrtx_pthread_join[9] failed, error 3
    vrtx_pthread_join[10] failed, error 3
    vrtx_pthread_join[11] failed, error 3
    vrtx_pthread_join[12] failed, error 3
    vrtx_pthread_join[13] failed, error 3
    vrtx_pthread_join[14] failed, error 3
    vrtx_pthread_join[15] failed, error 3


    ************************************************************************

    ************************************************************************

    /tset/POSIX_art.os/synchobjects_rwlocks/pthread_rwlockattr_getpshared/T.
    pthread_rwlockattr_getpshared 4 Unresolved

    Test Description:
    If {_POSIX_READER_WRITER_LOCKS} and
    {_POSIX_THREAD_PROCESS_SHARED} are defined:
    pthread_rwlockattr_getpshared(attr, pshared) is
    thread safe.

    Test Information:
    vrtx_pthread_create[0] failed, error
    vrtx_pthread_create[1] failed, error
    vrtx_pthread_create[2] failed, error
    vrtx_pthread_create[3] failed, error
    vrtx_pthread_create[4] failed, error
    vrtx_pthread_create[5] failed, error
    vrtx_pthread_create[6] failed, error
    vrtx_pthread_create[7] failed, error
    vrtx_pthread_create[8] failed, error
    vrtx_pthread_create[9] failed, error
    vrtx_pthread_create[10] failed, error
    vrtx_pthread_create[11] failed, error
    vrtx_pthread_create[12] failed, error
    vrtx_pthread_create[13] failed, error
    vrtx_pthread_create[14] failed, error
    vrtx_pthread_create[15] failed, error
    vrtx_pthread_join[0] failed, error 3
    vrtx_pthread_join[1] failed, error 3
    vrtx_pthread_join[2] failed, error 3
    vrtx_pthread_join[3] failed, error 3
    vrtx_pthread_join[4] failed, error 3
    vrtx_pthread_join[5] failed, error 3
    vrtx_pthread_join[6] failed, error 3
    vrtx_pthread_join[7] failed, error 3
    vrtx_pthread_join[8] failed, error 3
    vrtx_pthread_join[9] failed, error 3
    vrtx_pthread_join[10] failed, error 3
    vrtx_pthread_join[11] failed, error 3
    vrtx_pthread_join[12] failed, error 3
    vrtx_pthread_join[13] failed, error 3
    vrtx_pthread_join[14] failed, error 3
    vrtx_pthread_join[15] failed, error 3


    ************************************************************************

    ************************************************************************
    ****************************************************

    /tset/POSIX_art.os/synchobjects_rwlocks/pthread_rwlockattr_setpshared/T.
    pthread_rwlockattr_setpshared 7 Unresolved

    Test Description:
    If {_POSIX_READER_WRITER_LOCKS} and
    {_POSIX_THREAD_PROCESS_SHARED} are defined:
    pthread_rwlockattr_setpshared(attr, pshared) is
    thread safe.

    Test Information:
    vrtx_pthread_create[0] failed, error
    vrtx_pthread_create[1] failed, error
    vrtx_pthread_create[2] failed, error
    vrtx_pthread_create[3] failed, error
    vrtx_pthread_create[4] failed, error
    vrtx_pthread_create[5] failed, error
    vrtx_pthread_create[6] failed, error
    vrtx_pthread_create[7] failed, error
    vrtx_pthread_create[8] failed, error
    vrtx_pthread_create[9] failed, error
    vrtx_pthread_create[10] failed, error
    vrtx_pthread_create[11] failed, error
    vrtx_pthread_create[12] failed, error
    vrtx_pthread_create[13] failed, error
    vrtx_pthread_create[14] failed, error
    vrtx_pthread_create[15] failed, error
    vrtx_pthread_join[0] failed, error 3
    vrtx_pthread_join[1] failed, error 3
    vrtx_pthread_join[2] failed, error 3
    vrtx_pthread_join[3] failed, error 3
    vrtx_pthread_join[4] failed, error 3
    vrtx_pthread_join[5] failed, error 3
    vrtx_pthread_join[6] failed, error 3
    vrtx_pthread_join[7] failed, error 3
    vrtx_pthread_join[8] failed, error 3
    vrtx_pthread_join[9] failed, error 3
    vrtx_pthread_join[10] failed, error 3
    vrtx_pthread_join[11] failed, error 3
    vrtx_pthread_join[12] failed, error 3
    vrtx_pthread_join[13] failed, error 3
    vrtx_pthread_join[14] failed, error 3
    vrtx_pthread_join[15] failed, error 3


    ************************************************************************

    Review Information

    Review Type TSMA Review
    Start Date 2007-11-29 00:50
    Last Updated 2007-12-04 18:49
    Completed 2007-12-04 18:49
    Status Complete
    Review Recommendation Rejected (REJ)
    Review Response Agree with the recommendation from VSTH support team, thus suggest the
    request is refused based on the following grounds:

    The vrtx_threadsafe_test() library function allows for an ENOTSUP
    return from pthread_attr_setscope(), which indicates that
    PTHREAD_SCOPE_PROCESS is not supported. Unfortunately in XSH6
    this error is listed as "may fail". This is considered to be a
    mistake in the standard, and a defect report has been sent to the
    Austin Group asking for it to be changed to "shall fail". (The
    ENOTSUP error needs to be "shall fail" otherwise applications have
    no portable way of determining whether PTHREAD_SCOPE_PROCESS is
    supported.)

    Despite the allowance in the current standard for
    pthread_attr_setscope() to succeed when PTHREAD_SCOPE_PROCESS is
    not supported, the implementation still does not conform. It is
    returning an EPERM error from pthread_create(), but this error
    relates to "scheduling parameters or scheduling policy", not to
    contention scope. The contention scope is a scheduling
    "attribute", but it is not a scheduling parameter (set using
    pthread_attr_setschedparam()) or a scheduling policy (set using
    pthread_attr_setschedpolicy()).

    The submitter is strongly encouraged to change the implementation
    so that pthread_attr_setscope() returns ENOTSUP to indicate that
    PTHREAD_SCOPE_PROCESS is not supported. An alternative way to
    make the implementation conform would be to have pthread_create()
    return a different error number (one not listed on the
    pthread_create() page in the standard) instead of EPERM, but
    this would not conform to the next revision of the standard,
    assuming that the Austin Group makes the requested change.


    Review Type SA Review
    Start Date 2007-12-04 18:49
    Last Updated 2007-12-05 00:59
    Completed 2007-12-05 00:59
    Status Complete
    Review Resolution Rejected (REJ)
    Review Conclusion Though we believe there may be a standards interpretation issue in this
    area, we do not believe this is the direct cause of the non pass result
    in this case. This PR is thus rejected as a Test Suite deficiency

    Problem Reporting System Options:

     

    Back   


Contact the Certification Authority