|
Home About Us A-Z Index Search * Contact Us Register Login Press ShopThe Open Brand -- Problem Reporting and Interpretations System |
Problem Report 1983 Details
Show help | Quick Search | Submit a Test Suite Support Request | Click here to view your privileges
This page provides all information on Problem Report 1983.
Report 1983 Actions
Problem Report Number 1983 Submitter's Classification Specification problem State Resolved Resolution Minor System Fault (MSF) Problem Resolution ID MSF.X.0084 Raised 1996-09-20 08:00 Updated 2003-03-13 08:00 Published 1996-10-03 08:00 Expiry Date 1997-10-02 Product Standard Transport Service XTI Certification Program The Open Brand certification program Test Suite VST version 4.1.4 Test Identification XTI.os/util/error 3 Problem Summary MSFT4.003 In addition to error test 3, strerror test 2 has the same problem. The t_error() specification states the following about the error message: "If it is in English, the error message string describing t... Problem Text
In addition to error test 3, strerror test 2 has the same problem.
The t_error() specification states the following about the error message:
"If it is in English, the error message string describing the value in
t_errno is identical to the comments following the t_errno codes in xti.h"
The t_strerror() specification states the following about the error message:
"If it is English, the error message string describing the value in t_errno
is identical to the comments following the t_errno codes defined in <xti.h>"
The test expects these error strings to be similar to the CONTENTS of the
comments (NOT identical to the comments, that would include the "/*" and
"*/" of C language) to the C implementation of xti.h contained in Appendix
F.
We interpret the specification to require that matching error messages
to comments in our header implementation (and not the contents of
comments in Appendix F) is allowed.
We also interpret that our header file <xti.h> need not have C comments
identical to the C comments in header in Appendix F.
The "Networking Services, Issue 4" specification man pages for t_*()
interfaces do refer sometimes to text elsewhere in the specification
by use of explicit reference. Examples of these are
- CAVEATS section of t_accept() refers to Appendix A & B and
page numbers
- DESCRIPTION section of t_look() refers to Section 5.6 with
associated page number.
- DESCRIPTION section ("flags" description) of t_open refers to
Appendix A with explicit page number reference.
- DESCRIPTION section of t_optmgmt() (for exact OPT_NEXTHDR
definition) points explicitly to Appendix F with page number.
- DESCRIPTION section of t_optmgmt() explicitly references
Chapter 6 (on use of options) for detailed description about
use of options.
In stark contrast to these, the t_error() and t_strerror() DESCRIPTION
does not refer at all to Appendix F or its page number.
Therefore we interpret that it is sufficient for error strings to match
the contents of comments in error code definitions in our implementation
of <xti.h>.
Moreover, the Appendix F refers section 7.1 page 47 for the normative
requirements. Section 7.1 on page 47 states that "XTI structures and
constants are all defined in Appendix F on page 253". It does not
place a normative requirement on C language comments contained in that
header.
In our implementation, the error messages DO match the comments in the
implementation of our header. Our shipped man pages match the language
as in XTI spec and they refer the the xti.h header found in the
implementation.
There are other troubling issues raised by this area of the specification.
- The error messages in Appendix F are short, cryptic, 80-column delimited
C language comments probably constrained by the C coding style in a
particular reference implementation. They are not, in some cases
informative in terms of their contents as error message strings for
application programmers. It would only be subjecting English language
customers to cryptic C language comments while other language customers
are free to receive helpful error messages. While some of the failures
in our implementation are trivial because of uppercase-lowercase mismatch
which we will not have problems changing, there are others which or of
substantive nature since the C language comments in Appendix do not
contain meaningful and useful error information.
- This error message requirement is specified in terms of "language"
whereas the practice in the industry for emitting error messages based
on "locales". The localization and internationalization practices are
specific to a locale and not instantiated based on "language" which can
be ambiguous. In VST , the default userintf.c shipped picks C
language locale and assumes it provides English language messages.
This is not required by the specification.
- While never recognized in the XTI specification, there are other issues
that are related to the error messages. The t_errno namespace is also
used by other specifications which have to be supported by vendors such
as TLI interfaces and the Streams TPI message based interface (in the
T_ERROR_ACK message). It is in fact evolved into a fairly generic transport
protocol error namespace. It is therefore best to render these messages in
terms of generic transport endpoints primitives which is another
motivation to choose the text of the error messages to be generic.
That is the motivation for a different error message string for TPROTO
error in our implementation for instance (and some other error codes also).
Since these error namespace can be in one common place in an
implementation, the error messages that follow in comments tend to be
generic in such implementations.
- In the Posix draft specification, the error messages are not identical to
what is in the C language comments in Appendix F. While they also refer
the to the comments following the error codes defined in the xti.h, they
are also subject to same interpretation. In their equivalent rendering of
the comments, they have felt free to change the comments different from
C language xti.h such as changes from
"couldn't" to "could not"
"ord rel" to orderly release"
"discon ind" to "disconnect indication" etc.
The test as written will make it impossible to match to those strings
either. That should be a factor in not having this test assertion in
its current form.
Since the test suites requires specific error strings whose definitions is
not clear in the specification, we request that these test cases be dropped
from the branding requirements.
Test Output
/tset/XTI.os/util/error/T.error 3 Failed
Test Information:
with t_errno = 1, t_error("t_error arg") produced incorrect message
Expected string "t_error arg: incorrect addr format\n"
Actual string "t_error arg: Incorrect address format\n"
with t_errno = 2, t_error("t_error arg") produced incorrect message
Expected string "t_error arg: incorrect option format\n"
Actual string "t_error arg: Incorrect options format\n"
with t_errno = 3, t_error("t_error arg") produced incorrect message
Expected string "t_error arg: incorrect permissions\n"
Actual string "t_error arg: Illegal permissions\n"
with t_errno = 4, t_error("t_error arg") produced incorrect message
Expected string "t_error arg: illegal transport fd\n"
Actual string "t_error arg: Illegal file descriptor\n"
with t_errno = 5, t_error("t_error arg") produced incorrect message
Expected string "t_error arg: couldn't allocate addr\n"
Actual string "t_error arg: Couldn't allocate address\n"
with t_errno = 6, t_error("t_error arg") produced incorrect message
Expected string "t_error arg: out of state\n"
Actual string "t_error arg: Routine will place interface out of
state\n"
with t_errno = 7, t_error("t_error arg") produced incorrect message
Expected string "t_error arg: bad call sequence number\n"
Actual string "t_error arg: Illegal called/calling sequence number\n"
with t_errno = 9, t_error("t_error arg") produced incorrect message
Expected string "t_error arg: event requires attention\n"
Actual string "t_error arg: An event requires attention\n"
with t_errno = 10, t_error("t_error arg") produced incorrect message
Expected string "t_error arg: illegal amount of data\n"
Actual string "t_error arg: Illegal amount of data\n"
with t_errno = 11, t_error("t_error arg") produced incorrect message
Expected string "t_error arg: buffer not large enough\n"
Actual string "t_error arg: Buffer not large enough\n"
with t_errno = 12, t_error("t_error arg") produced incorrect message
Expected string "t_error arg: flow control\n"
Actual string "t_error arg: Can't send message - (blocked)\n"
with t_errno = 13, t_error("t_error arg") produced incorrect message
Expected string "t_error arg: no data\n"
Actual string "t_error arg: No message currently available\n"
with t_errno = 14, t_error("t_error arg") produced incorrect message
Expected string "t_error arg: discon_ind not found on queue\n"
Actual string "t_error arg: Disconnect message not found\n"
with t_errno = 15, t_error("t_error arg") produced incorrect message
Expected string "t_error arg: unitdata error not found\n"
Actual string "t_error arg: Unitdata error message not found\n"
with t_errno = 16, t_error("t_error arg") produced incorrect message
Expected string "t_error arg: bad flags\n"
Actual string "t_error arg: Incorrect flags specified\n"
with t_errno = 17, t_error("t_error arg") produced incorrect message
Expected string "t_error arg: no ord rel found on queue\n"
Actual string "t_error arg: Orderly release message not found\n"
with t_errno = 18, t_error("t_error arg") produced incorrect message
Expected string "t_error arg: primitive/action not supported\n"
Actual string "t_error arg: Primitive not supported by provider\n"
with t_errno = 19, t_error("t_error arg") produced incorrect message
Expected string "t_error arg: state is in process of changing\n"
Actual string "t_error arg: State is in process of changing\n"
with t_errno = 20, t_error("t_error arg") produced incorrect message
Expected string "t_error arg: unsupported struct-type requested\n"
Actual string "t_error arg: Unsupported structure type requested\n"
with t_errno = 21, t_error("t_error arg") produced incorrect message
Expected string "t_error arg: invalid transport provider name\n"
Actual string "t_error arg: Invalid transport provider name\n"
with t_errno = 22, t_error("t_error arg") produced incorrect message
Expected string "t_error arg: qlen is zero\n"
Actual string "t_error arg: Listener queue length limit is zero\n"
with t_errno = 23, t_error("t_error arg") produced incorrect message
Expected string "t_error arg: address in use\n"
Actual string "t_error arg: Transport address is in use\n"
with t_errno = 24, t_error("t_error arg") produced incorrect message
Expected string "t_error arg: outstanding connection indications\n"
Actual string "t_error arg: Outstanding connection indications\n"
with t_errno = 25, t_error("t_error arg") produced incorrect message
Expected string "t_error arg: transport provider mismatch\n"
Actual string "t_error arg: Listener-acceptor transport provider
mismatch\n"
with t_errno = 26, t_error("t_error arg") produced incorrect message
Expected string "t_error arg: resfd specified to accept w/qlen >0\n"
Actual string "t_error arg: Connection acceptor has listen queue
length limit greater than zero\n"
with t_errno = 27, t_error("t_error arg") produced incorrect message
Expected string "t_error arg: resfd not bound to same addr as fd\n"
Actual string "t_error arg: Connection acceptor-listener address not
same but required by transport\n"
with t_errno = 28, t_error("t_error arg") produced incorrect message
Expected string "t_error arg: incoming connection queue full\n"
Actual string "t_error arg: Incoming connection queue is full\n"
with t_errno = 29, t_error("t_error arg") produced incorrect message
Expected string "t_error arg: XTI protocol error\n"
Actual string "t_error arg: Protocol error on transport primitive\n"
/tset/XTI.os/util/strerror/T.strerror 2 Failed
Test Information:
t_strerror(1) returned incorrect string
Expected string "incorrect addr format"
Actual string "Incorrect address format"
t_strerror(2) returned incorrect string
Expected string "incorrect option format"
Actual string "Incorrect options format"
t_strerror(3) returned incorrect string
Expected string "incorrect permissions"
Actual string "Illegal permissions"
t_strerror(4) returned incorrect string
Expected string "illegal transport fd"
Actual string "Illegal file descriptor"
t_strerror(5) returned incorrect string
Expected string "couldn't allocate addr"
Actual string "Couldn't allocate address"
t_strerror(6) returned incorrect string
Expected string "out of state"
Actual string "Routine will place interface out of state"
t_strerror(7) returned incorrect string
Expected string "bad call sequence number"
Actual string "Illegal called/calling sequence number"
t_strerror(9) returned incorrect string
Expected string "event requires attention"
Actual string "An event requires attention"
t_strerror(10) returned incorrect string
Expected string "illegal amount of data"
Actual string "Illegal amount of data"
t_strerror(11) returned incorrect string
Expected string "buffer not large enough"
Actual string "Buffer not large enough"
t_strerror(12) returned incorrect string
Expected string "flow control"
Actual string "Can't send message - (blocked)"
t_strerror(13) returned incorrect string
Expected string "no data"
Actual string "No message currently available"
t_strerror(14) returned incorrect string
Expected string "discon_ind not found on queue"
Actual string "Disconnect message not found"
t_strerror(15) returned incorrect string
Expected string "unitdata error not found"
Actual string "Unitdata error message not found"
t_strerror(16) returned incorrect string
Expected string "bad flags"
Actual string "Incorrect flags specified"
t_strerror(17) returned incorrect string
Expected string "no ord rel found on queue"
Actual string "Orderly release message not found"
t_strerror(18) returned incorrect string
Expected string "primitive/action not supported"
Actual string "Primitive not supported by provider"
t_strerror(19) returned incorrect string
Expected string "state is in process of changing"
Actual string "State is in process of changing"
t_strerror(20) returned incorrect string
Expected string "unsupported struct-type requested"
Actual string "Unsupported structure type requested"
t_strerror(21) returned incorrect string
Expected string "invalid transport provider name"
Actual string "Invalid transport provider name"
t_strerror(22) returned incorrect string
Expected string "qlen is zero"
Actual string "Listener queue length limit is zero"
t_strerror(23) returned incorrect string
Expected string "address in use"
Actual string "Transport address is in use"
t_strerror(24) returned incorrect string
Expected string "outstanding connection indications"
Actual string "Outstanding connection indications"
t_strerror(25) returned incorrect string
Expected string "transport provider mismatch"
Actual string "Listener-acceptor transport provider mismatch"
t_strerror(26) returned incorrect string
Expected string "resfd specified to accept w/qlen >0"
Actual string "Connection acceptor has listen queue length limit
greater than zero"
t_strerror(27) returned incorrect string
Expected string "resfd not bound to same addr as fd"
Actual string "Connection acceptor-listener address not same but
required by transport"
t_strerror(28) returned incorrect string
Expected string "incoming connection queue full"
Actual string "Incoming connection queue is full"
t_strerror(29) returned incorrect string
Expected string "XTI protocol error"
Actual string "Protocol error on transport primitive"Review Information
Review Type TSMA Review Start Date null Completed null Status Complete Review Recommendation No Resolution Given Review Response
It is believed that the rationale for the error message content in English
is to ensure that a meaningful description is provided for each error condition.
If the logic provided above is followed, then there is no requirement for an
implementation to provide any text for error messages, since there is no
requirement that the <xti.h> header file provided on an implementation should
contain comments associated with the error conditions. Because the
specification cannot rely on the existence of comments in the <xti.h> provided
by the implementation, the only logical conclusion is that it must refer to the
sample header file provided in Appendix F.
However, the request is for a waiver on the grounds of a "Minor System Fault"
and it is recommended that this is granted since the change should not have any
application effect.
Review Type SA Review Start Date null Completed null Status Complete Review Resolution Minor System Fault (MSF) Review Conclusion
A Temporary Waiver is granted.
Problem Reporting System Options:
- View Report 1983
- List All PRs
- Search Reports
- Email the System Administrator
- View the The Open Brand Interpretations Database User Manual
Contact the Certification Authority