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

The Open Brand -- Problem Reporting and Interpretations System


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


Report 2529 Actions


    Problem Report Number 2529
    Submitter's Classification Test Suite problem
    State Resolved
    Resolution Permanent Interpretation (PIN)
    Problem Resolution ID PIN.X.0280
    Raised 2007-02-15 10:15
    Updated 2007-02-16 03:46
    Published 2007-02-16 03:46
    Product Standard Internationalised System Calls and Libraries Extended V3 (UNIX 03)
    Certification Program The Open Brand certification program
    Test Suite VSX5 version 5.2.9
    Test Identification LFS.os/ioprim/fcntl/T.fcntl 4,5
    Specification Base Definitions Issue 6
    Problem Summary Large file tests (LFS.os) are testing for large file behavior on a file
    system that does not support large files.
    Problem Text Prior to the incorporation of the changes from the Large File Summit
    (LFS) into the Single UNIX Specification, the
    file-system-internal-objects that stored the size and position of a file
    were the same size as the application-defined-objects that stored the
    same information. With the introduction of the work of the LFS, the
    file system off_t could be larger than the application off_t.

    Prior to the incorporation of the LFS, the functions fcntl, lseek and
    lockf could fail because they had an offset argument that could be added
    to the file position, and the resulting sum could be an invalid
    file-system-offset. Each of the three functions returned EINVAL when
    the sum of the function argument plus the position of the file
    descriptor resulted in an invalid value for the file system.

    Subsequent to the incorporation of the LFS, a new failure mode existed
    that the LFS decided must be distinguishable from the EINVAL condition.
    This mode occurs when a file operation results in an offset that could
    be represented in the file system off_t, but could not be represented in
    the application off_t. The error that is returned when this condition
    happens is EOVERFLOW.

    If the functions fcntl, lockf or lseek are executed on a file system
    that supports large files, they should fail with EOVERFLOW whenever the
    file position plus the offset argument is larger than the application
    off_t, but not larger than the file system off_t.

    If the functions fcntl, lockf or lseek are executed on a file system
    that does not support large files, they should fail with EINVAL whenever
    the file position plus the offset argument is larger than the file
    system off_t.

    A UNIX branding configuration which does not include a file system that
    supports large files should not be required to return the EOVERFLOW
    condition. If this condition is tested, the test should allow EINVAL
    from file systems that do not support large files, and should expect
    EOVERFLOW from file systems that do support large files. For example:

    lseek assertion 2

    lseek() set errno to EINVAL instead of EOVERFLOW.
    This is allowed provided the system does not support
    a compilation environment with a larger off_t.

    The same allowance should be made for fcntl() assertions 4 and 5.
    Test Output ************************************************************************
    /tset/LFS.os/ioprim/fcntl/T.fcntl 4 Failed

    Test Description:
    When cmd is F_GETLK, FSETLK or F_SETLKW and l_len is zero and the
    smallest offset in the requested segment cannot be represented in an
    entity of type off_t, then a call to fcntl() returns -1 and sets errno
    to EOVERFLOW.

    Test Strategy:
    IF the test mode is a UNIX mode:
    OBTAIN limit-setting privilege, using setprv(PRV_LIMITS)
    SET the hard and soft file size limits to RLIM_INFINITY, using
    setrlimit()
    OPEN a new file in the current directory, using creat()
    REPEAT for F_GETLK, F_SETLK and F_SETLKW:
    SEEK to offset 1, using lseek()
    CALL fcntl() with l_type=F_WRLCK, l_whence=SEEK_CUR,
    l_start=LFS_NORMAL_OFFMAX, l_len=0
    VERIFY that fcntl() returned -1 with errno set to EOVERFLOW

    Test Information:
    fcntl(F_GETLK) set errno to 22 (EINVAL), expected 72 (EOVERFLOW)
    fcntl(F_SETLK) set errno to 22 (EINVAL), expected 72 (EOVERFLOW)
    fcntl(F_SETLKW) set errno to 22 (EINVAL), expected 72 (EOVERFLOW)

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


    ************************************************************************
    /tset/LFS.os/ioprim/fcntl/T.fcntl 5 Failed

    Test Description:
    When cmd is F_GETLK, FSETLK or F_SETLKW and l_len is non-zero and the
    largest offset of any byte in the requested segment cannot be
    represented in an entity of type off_t, then a call to fcntl() returns
    -1 and sets errno to EOVERFLOW.

    Test Strategy:
    IF the test mode is a UNIX mode:
    OBTAIN limit-setting privilege, using setprv(PRV_LIMITS)
    SET the hard and soft file size limits to RLIM_INFINITY, using
    setrlimit()
    OPEN a new file in the current directory, using creat()
    REPEAT for F_GETLK, F_SETLK and F_SETLKW:
    CALL fcntl() with l_type=F_WRLCK, l_whence=SEEK_SET,
    l_start=LFS_NORMAL_OFFMAX, l_len=2
    VERIFY that fcntl() returned -1 with errno set to EOVERFLOW

    Test Information:
    fcntl(F_GETLK) set errno to 22 (EINVAL), expected 72 (EOVERFLOW)
    fcntl(F_SETLK) set errno to 22 (EINVAL), expected 72 (EOVERFLOW)
    fcntl(F_SETLKW) set errno to 22 (EINVAL), expected 72 (EOVERFLOW)

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

    Review Information

    Review Type TSMA Review
    Start Date 2007-02-15 10:15
    Last Updated 2007-02-15 19:47
    Completed 2007-02-15 19:47
    Status Complete
    Review Recommendation Permanent Interpretation (PIN)
    Review Response A UNIX98 PIN was previously granted for this issue: PIN.X.0230. The
    wording in the standard has not changed between SUSv2 and SUSv3 and
    therefore the grey area still exists and a UNIX03 PIN should be granted.

    Note that although PIN.X.0230 only covered test 4, and this new request
    is for tests 4 and 5, both tests are failing for the same reason and are
    affected by the same grey area.

    Review Type SA Review
    Start Date 2007-02-15 19:47
    Last Updated 2007-02-16 03:22
    Completed 2007-02-16 03:22
    Status Complete
    Review Resolution Permanent Interpretation (PIN)
    Review Conclusion This PR represents and agreed Permanent Interpretation

    Problem Reporting System Options:

     

    Back   


Contact the Certification Authority