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

The Open Brand -- Problem Reporting and Interpretations System


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


Report 0404 Actions


    Problem Report Number 0404
    Submitter's Classification Specification problem
    State Resolved
    Resolution Rejected (REJ)
    Problem Resolution ID REJ.X.0023
    Raised 1993-06-03 08:00
    Updated 2003-03-13 08:00
    Published null
    Product Standard Internationalised System Calls and Libraries (XPG4)
    Certification Program The Open Brand certification program
    Test Suite VSX4 version 4.2.4
    Test Identification POSIX.os/devclass/i_noncanon 14
    Linked Problem Reports MSF4.003, VWG93-001, (in, old, system)
    Problem Summary PG4R.023 This has been resolved and a permmanent interpretation has been granted ref. VWG93-001 The test is based on the sentence "if data is in the buffer at the time of the read(), the result will be as if t...
    Problem Text
    This has been resolved and a permmanent interpretation has been granted
    ref. VWG93-001

    The test is based on the sentence "if data is in the buffer at the time
    of the read(), the result will be as if the data has been received immediately
    after the read()". (from POSIX.1-90 7.1.1.7)

    The test suite takes this to mean the that that the last byte of data in the
    input queue should be returned by the read() along with the previous 9 bytes
    written. However, due to the multiple buffering inherent in the STREAMS
    tty architecture this does not occur.

    With STREAMS ttys, there are multiple processing modules each with queues and
    buffers associated, and in the test scenario the 9 bytes are passed down the
    STREAM after the first timer expired. When the subsequent byte arrives the
    timer is reset in the LDTERM STREAMS module. When the read() occurs
    only the data previously passed down the STREAM is returned, and the
    other byte remains in the STREAM until the timer expires.

    We are not sure that the assertion fully supports the test strategy ,
    however, if for the moment we assume the test is correct,
    we would request a temporary waiver as we feel this is a minor problem
    for applications since any application that sets MIN > 0 and TIME > 0
    is by this setting expecting the number of bytes returned to be the *smaller*
    of MIN and the number of bytes actually read() --- thus an application
    in this situation would not be relying on receiving exactly MIN
    bytes (if it did require this it could set MIN > 0 and TIME =0), and
    thus this implementation would not adversely affect applications.
    As such we don't think the test is very meaningful since no real application
    could count on this behavior.

    Any application that is using raw mode has to be at least a little robust
    since it can't count on the sender sending data in any guaranteed time frame.
    As a specific example, suppose that the client writes the 9 bytes and
    then gets swapped out. The timers could all expire before it is rescheduled
    to write the 10th byte. I could construct several viable scenarios like this
    in which the application would have to deal with the "wrong" number of
    characters coming up.


    Since this problem will affect all implementations using STREAMS we would
    urge consideration of a permanent temporary waiver --- we are re-architecting
    STREAMS in the next major release (due 3Q93), we shall also be lobbying
    POSIX.1a to ensure that multiply buffering tty subsystems are viable.

    Test Output
    ************************************************************************
    /POSIX.os/devclass/i_noncanon/T.i_noncanon 14 Failed

    Test Description:
    If general terminal interface supported:
    When ICANON is clear, MIN > 0, TIME > 0, and data is in the buffer
    at the time of the call to read(), then the timer is started as if
    data had been received immediately after the call to read().
    Posix Ref: Component Terminal Interface Assertion 7.1.1.7.1-35(C)

    Test Strategy:
    OPEN and initialise terminal file and loop back file
    CLEAR ICANON and ECHO in terminal control flags
    SET VMIN to READ_MIN and VTIME to 2*READ_TIME
    WRITE READ_MIN-1 characters to loop back file file using write()
    SLEEP for longer than the inter-byte timer
    WRITE 1 character to loop back file file using write()
    SLEEP for 2 seconds
    SET time out for READ_TIME/10 (half of inter-byte timer)
    READ from terminal file using read()
    VERIFY that read() returned size of data written
    VERIFY that read() was not interrupted by alarm, so read() returned
    before timer expired

    Test Information:
    read() returned 9, expected 10
    ************************************************************************

    Review Information

    Review Type TSMA Review
    Start Date null
    Completed null
    Status Complete
    Review Recommendation No Resolution Given
    Review Response
    There is a permanent interpretation for this test under PIN4.008 and
    this should be quoted during branding.

    Review Type SA Review
    Start Date null
    Completed null
    Status Complete
    Review Resolution Rejected (REJ)
    Review Conclusion
    This request is refused, please reference PIN4.008.

    Problem Reporting System Options:

     

    Back   


Contact the Certification Authority