|
Home About Us A-Z Index Search * Contact Us Register Login Press ShopThe Open Brand -- Problem Reporting and Interpretations System |
Problem Report 1467 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 1467.
Report 1467 Actions
Problem Report Number 1467 Submitter's Classification Test Suite problem State Resolved Resolution Test Suite Deficiency (TSD) Problem Resolution ID TSD.X.0749 Raised 1970-01-01 08:00 Updated 2003-03-13 08:00 Published 1995-11-08 08:00 Product Standard Sockets (UNIX 95) Certification Program The Open Brand certification program Test Suite VSU version 4.0.2 Test Identification base/writev 71 72 Problem Summary TSD4U.00064 This test may fail on implementations where writev() does not fail the first time it is called after the peer has shutdown the connection. Problem Text
This test may fail on implementations where writev() does not
fail the first time it is called after the peer has shutdown
the connection.
The test case assumes that by either calling close() or
shutdown(s, SHUT_RDWR) the connection will be disconnected,
subsequently the test case expects to receive a SIGPIPE signal
and errno set to EPIPE when it calls writev() after getting a
shutdown or close confirmation from its son process.
This assumption is not univerally apllicable. This behavior
after calling close() or shutdown() is actually protocol
dependent. Such an assumption is incorrect for TCP. As
specified in RFC 793, TCP uses a graceful release strategy on
shutdown() or close(). The application that issues a shutdown()
or close() will trigger the TCP connection half on the local side
to send a FIN packet to its peer on the remote system. The local
TCP connection half will go into a FIN-WAIT-2 state. It will
stay in the FIN-WAIT-2 state indefinitely until it also receives
a FIN packet from its remote peer connection half. The remote
peer connection half only sends a FIN packet when the remote
socket application also calls shutdown() or close().
Some TCP implementation may choose to send a RESET packet when it
receives a data packet from the remote connection half provided
the local TCP connection half has been disconnected from any
application. In that case, the remote socket application may
eventually see EPIPE error after several writev operations, but
definitely not on the first writev operation. I do not think a
Standard test can depend on such implementation dependent
behavior either. I propose X/Open should remove this test case
for AF_INET SOCK_STREAM.Test Output
400|1 71 1 14:39:02|IC Start
200|1 1 14:39:02|TP Start
520|1 1 8315 1 1|SPEC1170TESTSUITE CASE 71
520|1 1 8315 1 2|If the implementation supports a communications domain
520|1 1 8315 1 3|and a connection-oriented socket type:
520|1 1 8315 1 4|EPIPE in errno and return -1 on a call to ssize_t
520|1 1 8315 1 5|writev(int fildes, const struct iovec *iov, int iovcnt) when
520|1 1 8315 1 6|fildes refers to a socket that is connection-oriented
520|1 1 8315 1 7|and is no longer connected.
520|1 1 8328 1 1|PREP: Allocate and initialize I/O buffers
520|1 1 8328 1 2|TEST: AF_INET SOCK_STREAM
520|1 1 8328 1 3|PREP: Create test sockaddr_in: address = 16.69.224.161, port = 3085
520|1 1 8329 1 1|PREP: Server: create socket
520|1 1 8329 1 2|PREP: Server: bind address 16.69.224.161, port 3085 to socket
520|1 1 8329 1 3|PREP: Server: listen on socket
520|1 1 8329 1 4|PREP: Server: notify client server is ready
520|1 1 8329 1 5|PREP: Server: accept connection
520|1 1 8329 1 6|INFO: Server: accepted connection from address 16.69.224.161, port 2077
520|1 1 8329 1 7|PREP: close_server: wait for client to be ready
520|1 1 8329 1 8|PREP: close_server: close connection
520|1 1 8329 1 9|PREP: close_server: tell client connection is closed
520|1 1 8329 1 10|INFO: Server terminated
520|1 1 8328 2 1|PREP: Wait for server to be ready
520|1 1 8328 2 2|PREP: Create a socket
520|1 1 8328 2 3|PREP: Connect socket to address 16.69.224.161, port 3085
520|1 1 8328 2 4|PREP: Tell server to close connection
520|1 1 8328 2 5|PREP: Wait for connection to close
520|1 1 8328 2 6|TEST: Write on closed connection
520|1 1 8328 2 7|TEST: Return value
520|1 1 8328 2 8|ERROR: writev call succeeded unexpectedly, returned 64
520|1 1 8328 2 9|CLEANUP: Send SIGTERM to server
220|1 1 1 14:39:04|FAIL
410|1 71 1 14:39:04|IC End
400|4 72 1 14:39:08|IC Start
200|4 1 14:39:08|TP Start
520|4 1 8345 1 1|SPEC1170TESTSUITE CASE 72
520|4 1 8345 1 2|If the implementation supports a communications domain
520|4 1 8345 1 3|and a stream-based socket type:
520|4 1 8345 1 4|EPIPE in errno, return -1, and a SIGPIPE signal is
520|4 1 8345 1 5|generated for the calling process on a call to ssize_t
520|4 1 8345 1 6|writev(int fildes, const struct iovec *iov, int iovcnt) when
520|4 1 8345 1 7|fildes refers to a socket of type SOCK_STREAM and the
520|4 1 8345 1 8|the socket is no longer connected.
520|4 1 8339 1 1|PREP: Allocate and initialize I/O buffers
520|4 1 8339 1 2|TEST: AF_INET SOCK_STREAM
520|4 1 8339 1 3|PREP: Create test sockaddr_in: address = 16.69.224.161, port = 4185
520|4 1 8354 1 1|PREP: Server: create socket
520|4 1 8354 1 2|PREP: Server: bind address 16.69.224.161, port 4185 to socket
520|4 1 8354 1 3|PREP: Server: listen on socket
520|4 1 8354 1 4|PREP: Server: notify client server is ready
520|4 1 8354 1 5|PREP: Server: accept connection
520|4 1 8354 1 6|INFO: Server: accepted connection from address 16.69.224.161, port 2078
520|4 1 8354 1 7|PREP: close_server: wait for client to be ready
520|4 1 8354 1 8|PREP: close_server: close connection
520|4 1 8354 1 9|PREP: close_server: tell client connection is closed
520|4 1 8354 1 10|INFO: Server terminated
520|4 1 8339 2 1|PREP: Wait for server to be ready
520|4 1 8339 2 2|PREP: Create a socket
520|4 1 8339 2 3|PREP: Connect socket to address 16.69.224.161, port 4185
520|4 1 8339 2 4|PREP: Tell server to close connection
520|4 1 8339 2 5|PREP: Wait for connection to close
520|4 1 8339 2 6|TEST: Send on closed connection
520|4 1 8339 2 7|TEST: SIGPIPE received
520|4 1 8339 2 8|ERROR: Expected SIGPIPE signal, count of SIGPIPE signals = 0
520|4 1 8339 2 9|CLEANUP: Send SIGTERM to server
220|4 1 1 14:39:11|FAIL
410|4 72 1 14:39:11|IC End
400|1 26 1 14:38:44|IC Start
200|1 1 14:38:44|TP Start
520|1 1 8244 1 1|SPEC1170TESTSUITE CASE 26
520|1 1 8244 1 2|If the implementation supports a communications domain
520|1 1 8244 1 3|and a connection-oriented socket type:
520|1 1 8244 1 4|EPIPE in errno and return -1 on a call to ssize_t
520|1 1 8244 1 5|write(int fildes, const void *buf, size_t nbyte) when
520|1 1 8244 1 6|fildes refers to a socket that is connection-oriented
520|1 1 8244 1 7|and the peer is no longer connected.
520|1 1 8255 1 1|TEST: AF_INET SOCK_STREAM
520|1 1 8255 1 2|PREP: Create test sockaddr_in: address = 16.69.224.161, port = 3697
520|1 1 8251 1 1|PREP: Server: create socket
520|1 1 8251 1 2|PREP: Server: bind address 16.69.224.161, port 3697 to socket
520|1 1 8251 1 3|PREP: Server: listen on socket
520|1 1 8251 1 4|PREP: Server: notify client server is ready
520|1 1 8251 1 5|PREP: Server: accept connection
520|1 1 8251 1 6|INFO: Server: accepted connection from address 16.69.224.161, port 2075
520|1 1 8251 1 7|PREP: close_server: wait for client to be ready
520|1 1 8251 1 8|PREP: close_server: close connection
520|1 1 8251 1 9|PREP: close_server: tell client connection is closed
520|1 1 8251 1 10|INFO: Server terminated
520|1 1 8255 2 1|PREP: Wait for server to be ready
520|1 1 8255 2 2|PREP: Create a socket
520|1 1 8255 2 3|PREP: Connect socket to address 16.69.224.161, port 3697
520|1 1 8255 2 4|PREP: Tell server to close connection
520|1 1 8255 2 5|PREP: Wait for connection to close
520|1 1 8255 2 6|TEST: Write on closed connection
520|1 1 8255 2 7|TEST: Return value
520|1 1 8255 2 8|ERROR: write call succeeded unexpectedly, returned 5
520|1 1 8255 2 9|CLEANUP: Send SIGTERM to server
220|1 1 1 14:38:46|FAIL
410|1 26 1 14:38:46|IC End
400|4 27 1 14:38:49|IC Start
200|4 1 14:38:49|TP Start
520|4 1 7250 1 1|SPEC1170TESTSUITE CASE 27
520|4 1 7250 1 2|If the implementation supports a communications domain
520|4 1 7250 1 3|and a stream-based socket type:
520|4 1 7250 1 4|EPIPE in errno, return -1, and a SIGPIPE signal is
520|4 1 7250 1 5|generated for the calling process on a call to ssize_t
520|4 1 7250 1 6|write(int fildes, const void *buf, size_t nbyte) when
520|4 1 7250 1 7|fildes refers to a socket of type SOCK_STREAM and the
520|4 1 7250 1 8|socket is no longer connected.
520|4 1 8220 1 1|TEST: AF_INET SOCK_STREAM
520|4 1 8220 1 2|PREP: Create test sockaddr_in: address = 16.69.224.161, port = 4153
520|4 1 8220 2 1|PREP: Wait for server to be ready
520|4 1 8220 2 2|PREP: Create a socket
520|4 1 8220 2 3|PREP: Connect socket to address 16.69.224.161, port 4153
520|4 1 8220 2 4|PREP: Tell server to close connection
520|4 1 8220 2 5|PREP: Wait for connection to close
520|4 1 8220 2 6|TEST: Send on closed connection
520|4 1 8220 2 7|TEST: SIGPIPE received
520|4 1 8220 2 8|ERROR: Expected SIGPIPE signal, count of SIGPIPE signals = 0
520|4 1 8220 2 9|CLEANUP: Send SIGTERM to server
520|4 1 8223 1 1|PREP: Server: create socket
520|4 1 8223 1 2|PREP: Server: bind address 16.69.224.161, port 4153 to socket
520|4 1 8223 1 3|PREP: Server: listen on socket
520|4 1 8223 1 4|PREP: Server: notify client server is ready
520|4 1 8223 1 5|PREP: Server: accept connection
520|4 1 8223 1 6|INFO: Server: accepted connection from address 16.69.224.161, port 2076
520|4 1 8223 1 7|PREP: close_server: wait for client to be ready
520|4 1 8223 1 8|PREP: close_server: close connection
520|4 1 8223 1 9|PREP: close_server: tell client connection is closed
520|4 1 8223 1 10|INFO: Server terminated
220|4 1 1 14:38:52|FAIL
410|4 27 1 14:38:52|IC End
Review Information
Review Type TSMA Review Start Date null Completed null Status Complete Review Recommendation No Resolution Given Review Response
We agree this is a test suite deficiency in the test
suite version(s) listed.
We added test purposes write 26-27 and writev 72 to the
request since they may exhibit the same behavior.
Review Type SA Review Start Date null Completed null Status Complete Review Resolution Test Suite Deficiency (TSD) Review Conclusion
This is an agreed Test Suite Deficiency.
Problem Reporting System Options:
- View Report 1467
- List All PRs
- Search Reports
- Email the System Administrator
- View the The Open Brand Interpretations Database User Manual
Contact the Certification Authority