JDK-4972854 : REGRESSION: Many nio and net Regression tests fail on Windows 98
  • Type: Bug
  • Component: core-libs
  • Sub-Component: java.net
  • Affected Version: 5.0
  • Priority: P1
  • Status: Closed
  • Resolution: Fixed
  • OS: solaris_2.6,windows_98
  • CPU: x86,sparc
  • Submitted: 2003-12-26
  • Updated: 2009-04-08
  • Resolved: 2004-01-23
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
Other
5.0 b38Fixed
Related Reports
Duplicate :  
Description

Name: vsR10238			Date: 12/26/2003


Filed By       : J2SE-SQA [###@###.###
JDK            : JDK1.5.0-(b28-b32), passes with JDK1.5.0-b26, JDK1.4.2-b28
Testbase       : Regression-test
Platform[s]    : Windows 98

All of these test which I have reviewed try to connect to "localhost" or
to the real network name of the localhost.

At least the following tests pass with JDK1.4.2-b28, JDK1.5.0-b26:
TEST=java/net/Socket/Abort.java
TEST=java/nio/channels/SocketChannel/VectorParams.java
TEST=java/nio/channels/Selector/WakeupNow.java

I believe, other tests also pass with JDK1.5.0-b26, although some of them may fail due to another reason.

The following tests fail with "java.io.IOException: Unable to establish loopback connection"
	 	
java/nio/channels/Pipe/EmptyRead.java
java/nio/channels/Pipe/PipeChannel.java
java/nio/channels/Pipe/ScatteringRead.java
java/nio/channels/Selector/Close.java
java/nio/channels/Selector/CloseInvalidatesKeys.java
java/nio/channels/Selector/KeySets.java
java/nio/channels/Selector/ReadAfterConnect.java
java/nio/channels/Selector/SelectNowWhenEmpty.java
java/nio/channels/Selector/WakeupNow.java
java/nio/channels/Selector/WakeupOverflow.java
java/nio/channels/Selector/WakeupSpeed.java
java/nio/channels/SocketChannel/Trivial.java
java/nio/channels/spi/Untrusted.java
java/nio/channels/Selector/SelectWrite.java	
java/nio/channels/Selector/BasicConnect.java
java/nio/channels/Selector/ConnectWrite.java
java/nio/channels/DatagramChannel/AdaptDatagramSocket.java
java/nio/channels/SocketChannel/Connect.java
java/nio/channels/Selector/Alias.java
java/nio/channels/Pipe/SelectPipe.java
java/nio/channels/Selector/SelectAfterRead.java
java/nio/channels/Selector/WakeupEmpty.java
java/nio/channels/ServerSocketChannel/AdaptServerSocket.java
java/nio/channels/Pipe/NonBlocking.java
java/nio/channels/SocketChannel/Close.java
java/nio/channels/FileChannel/Transfer.java
sun/nio/ch/Basic.java
sun/nio/ch/TempBuffer.java

The following tests fail with "java.net.SocketException: Bad address: connect":

java/net/Socket/Abort.java
java/nio/channels/DatagramChannel/EmptyBuffer.java
java/nio/channels/SocketChannel/VectorParams.java
java/nio/channels/SocketChannel/Write.java
java/nio/channels/ReadOnlyBuffers.java
java/nio/channels/SocketChannel/LocalAddress.java
java/nio/channels/SocketChannel/IsConnectable.java
java/nio/channels/DatagramChannel/IsConnected.java
java/nio/channels/Selector/KeysReady.java
java/nio/channels/SocketChannel/Basic.java
java/nio/channels/SocketChannel/Stream.java
java/nio/channels/SocketChannel/Hangup.java
java/nio/channels/SocketChannel/Shutdown.java
java/nio/channels/Selector/Connect.java
java/nio/channels/SocketChannel/AdaptSocket.java
java/nio/channels/ServerSocketChannel/AcceptAddress.java
java/nio/channels/etc/Shadow.java
java/nio/channels/SocketChannel/FinishConnect.java
java/nio/channels/Selector/BasicAccept.java
java/nio/channels/AsyncCloseAndInterrupt.java
java/nio/channels/Selector/OpRead.java
java/nio/channels/SocketChannel/VectorIO.java

The following tests fail with NPE caused by: "java.io.IOException: Unable to establish loopback connection":

java/net/Authenticator/B4759514.java
java/net/Authenticator/B4921848.java
java/net/ProxySelector/LoopbackAddresses.java
java/net/ProxySelector/ProxyTest.java
java/net/URL/PerConnectionProxy.java
java/net/Authenticator/B4722333.java
java/net/Authenticator/B4678055.java
sun/net/www/AuthHeaderTest.java



Test source location:
=====================
/java/re/jdk/1.5.0/promoted/all/b32/ws/j2se/test/java/net/Socket/Abort.java

jtr file location:
==================
/net/jtgb4u4c.sfbay/export/sail15/results.2/tiger/b32/regtest/win32/win98_linux-17/workDir/test/java/net/Socket/Abort.jtr

How to reproduce:
=================
Run the following script (you may need to change its variables)

--- script start ---
#!/bin/sh
RESULT_DIR=`pwd`
WORK_DIR=$RESULT_DIR/workDir/test
REPORT_DIR=$RESULT_DIR/reportDir

#Paths in Java Software:
JT_HOME="z:/jct-tools/3.1.2/archive/fcs/binaries"
JEMMY_JAR="x:/Jemmy/jemmy.jar"
JAVA_HOME="z:/jdk/1.5.0/promoted/all/b32/binaries/windows-i586"
TEST_BASE_PATH="z:/jdk/1.5.0/promoted/all/b32/ws/j2se/test"

#Alternative paths outside Java Software:
#JT_HOME="z:/jct-tools/3.1.2/archive/fcs/binaries"
#JEMMY_JAR="x:/Jemmy/jemmy.jar"
#JAVA_HOME="z:/jdk/1.5.0/promoted/all/b32/binaries/windows-i586"
#TEST_BASE_PATH="z:/jdk/1.5.0/promoted/all/b32/ws/j2se/test"

#Alternative paths for the NSK site:
#JT_HOME="h:/java/jct"
#JEMMY_JAR="$JT_HOME/jemmy/jemmy.jar"
#JAVA_HOME="h:/java/jdk1.5.0/win32"
#TEST_BASE_PATH="h:/java/regtest.tiger/test"


TESTVMOPTS="-client"
CLASSPATH="$JT_HOME/classes;$JT_HOME/lib/javatest.jar;$JT_HOME/lib/jtreg.jar"

TEST="java/net/Socket/Abort.java"

mkdir -p $WORK_DIR/scratch 2>&1
mkdir -p $WORK_DIR/jtData 2>&1
mkdir -p $REPORT_DIR 2>&1

#rm $WORK_DIR/jtData/ResultCache.jtw 2>&1

cd $WORK_DIR/scratch

$JAVA_HOME/bin/java -server -cp $CLASSPATH -DenvVars=TESTJAVAHOME=$JAVA_HOME,TESTVMOPTS=$TESTVMOPTS,DISPLAY=:0,windir=$windir,SystemRoot=$SystemRoot,PATH=${SHELL%/*},CPAPPEND=$JEMMY_JAR,TZ=,LC_ALL=en_US,LC_CTYPE=en_US,LANG=en_US,LPDEST= -DDISPLAY=:0 -DlocalHost="linux-17" -Dprogram=jtreg com.sun.javatest.regtest.Main -a -v default -batch -params -w "$WORK_DIR" -r "$REPORT_DIR" -t "$TEST_BASE_PATH" "$TEST_BASE_PATH/$TEST"

--- script end ---

Test output (jtr part):
=======================
----------System.err:(16/858)----------
java.net.SocketException: Bad address: connect
	at sun.nio.ch.Net.connect(Native Method)
	at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:464)
	at Abort.doConnect(Abort.java:23)
	at Abort.main(Abort.java:43)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:494)
	at com.sun.javatest.regtest.MainWrapper$MainThread.run(MainWrapper.java:82)
	at java.lang.Thread.run(Thread.java:566)

JavaTest Message: Test threw exception: java.net.SocketException: Bad address: connect
JavaTest Message: shutting down test

STATUS:Failed.`main' threw exception: java.net.SocketException: Bad address: connect
result: Failed. Execution failed: `main' threw exception: java.net.SocketException: Bad address: connect


test result: Failed. Execution failed: `main' threw exception: java.net.SocketException: Bad address: connect


Specific machine info:
======================
Hostname: linux-17
OS: Windows 98



======================================================================

Name: vsR10238			Date: 12/26/2003



One more regression test fails on Windows 98 due to this bug:
 java/net/Authenticator/B4933582.sh

Server could not start: java.io.IOException: Unable to establish loopback connection
java.lang.NullPointerException
	at HttpServer$Server.run(HttpServer.java:153)
result: Failed. Execution failed: Program `sh' interrupted! (timed out?)

###@###.###


======================================================================

Name: vsR10238			Date: 12/29/2003



Regression test sun/net/www/protocol/http/RelativeRedirect.java 
also fails on Windows 98 using JDK1.5.0-b32 with a similar output:

Server could not start: java.io.IOException: Unable to establish loopback connection
java.lang.NullPointerException
	at HttpServer$Server.run(HttpServer.java:153)


###@###.###


======================================================================

Comments
CONVERTED DATA BugTraq+ Release Management Values COMMIT TO FIX: tiger-beta tiger-beta2 FIXED IN: tiger-beta tiger-beta2 INTEGRATED IN: tiger-b38 tiger-beta tiger-beta2 VERIFIED IN: tiger-b48 tiger-beta tiger-beta2
14-06-2004

SUGGESTED FIX !sccsdiff ../../src/windows/native/sun/nio/ch/Net.c 1.11 207 lines 2c2 < * @(#)Net.c 1.11 03/10/29 --- > * %W% %E% 68c68 < rv = NET_Bind(fdval(env, fdo), (struct sockaddr *)&sa, sizeof(sa)); --- > rv = NET_Bind(fdval(env, fdo), (struct sockaddr *)&sa, sa_len); 85c85 < rv = connect(fdval(env, fdo), (struct sockaddr *)&sa, sizeof(sa)); --- > rv = connect(fdval(env, fdo), (struct sockaddr *)&sa, sa_len);
11-06-2004

EVALUATION wrong socket address length is being used inside Net.bind() and Net.connect() These calls will always fail on Windows 98 as a result. Unfortunately, the later Windows TCP stacks are more tolerant of bad structure lengths. Otherwise, this would have been noticed sooner. ###@###.### 2004-01-08 Introduced by changes for 4945031. ###@###.### 2004-01-09
08-01-2004