This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug libgcj/13102] New: java.net.Socket#connect doesn't work after java.net.Socket#setSoTimeout
- From: "artem at bizlink dot ru" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 18 Nov 2003 11:24:46 -0000
- Subject: [Bug libgcj/13102] New: java.net.Socket#connect doesn't work after java.net.Socket#setSoTimeout
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
When using java.net.Socket interface introduced in Sun JDK1.4,
which allows for connection timeouts, connection attempt throws:
'Exception in thread "main" java.net.SocketException: Socket closed'.
gcj -v
Reading specs from c:/spool/Java/thisiscool-gcc/gcc-3.4/bin/..
/lib/gcc/i686-pc-mingw32/3.4/specs
Reading specs from c:/spool/Java/thisiscool-gcc/gcc-3.4/bin/..
/lib/gcc/i686-pc-mingw32/3.4/../../../../i686-pc-mingw32/lib/libgcj.spec
rename spec lib to liborig
Configured with: /datal/gcc/gcc/configure --prefix=/datal/gcc/build/wingcc
--build=i686-pc-linux-gnu --host=i686-pc-mingw32 --target=i686-pc-mingw32
--enable-languages=c,c++,java --with-gcc --with-gnu-as --with-gnu-ld
--with-as=i686-pc-mingw32-as --with-ld=i686-pc-mingw32-ld --enable-threads=win32
--disable-nls --disable-win32-registry --disable-shared --disable-debug
--without-newlib --enable-libgcj --disable-java-awt --without-x
--enable-java-gc=boehm --disable-libgcj-debug --enable-interpreter
--enable-hash-synchronization --enable-sjlj-exceptions --enable-libgcj-multifile
Thread model: win32
gcc version 3.4 20031109 (experimental)
(Version 3.4 20030830 has the same bug too).
Testcase (throws Exception becouse of the bug):
/**
* New socket interface is important for its connection timeouts.
*/
public class TestSocket {
protected static void test( boolean set ) throws Exception {
java.net.SocketAddress sa = new java.net.InetSocketAddress( "gcc.gnu.org",
80 );
java.net.Socket socket = new java.net.Socket();
if( set ){
// Any of these options leads to "Socket closed" exception.
socket.setTcpNoDelay( true );
socket.setSoLinger( false, 1 );
socket.setSoTimeout( 20 * 1000 );
socket.setKeepAlive( false );
}
socket.connect( sa, 30 * 1000 ); // Timeout is 30 seconds.
socket.close();
}
public static void main( String[] args ) throws Exception {
test( false ); System.out.println( "Socket works without options." );
test( true ); System.out.println( "Socket works with options!" );
}
}
c:\tmp\testCase>gcj -g3 --main=TestSocket TestSocket.java
c:\tmp\testCase>a.exe
Socket works without options.
Exception in thread "main" java.net.SocketException: Socket closed
at __ZN10TestSocket4testEb (c:\tmp\testCase\TestSocket.java:11)
at __ZN10TestSocket4mainEP6JArrayIPN4java4lang6StringEE (c:\tmp\testCase\Test
Socket.java:21)
at _main (C:\DOCUME~1\Glim\LOCALS~1\Temp\ccY1aaaa.i:11)
c:\tmp\testCase>gcj -O --main=TestSocket TestSocket.java
c:\tmp\testCase>a.exe
Socket works without options.
Exception in thread "main" java.net.SocketException: Socket closed
at 0x00413d4e (c:\datal\gcc\gcc\gcc\libgcc2.c)
at 0x00414292 (c:\datal\gcc\gcc\gcc\libgcc2.c)
at 0x004308e4 (c:\datal\gcc\gcc\gcc\libgcc2.c)
at 0x004329f4 (c:\datal\gcc\gcc\gcc\libgcc2.c)
at 0x004326b4 (c:\datal\gcc\gcc\gcc\libgcc2.c)
at 0x00466929 (c:\datal\gcc\gcc\gcc\libgcc2.c)
at 0x00403fb0 (c:\datal\gcc\gcc\gcc\libgcc2.c)
at 0x0040135d (c:\tmp\testCase\natClass.cc)
at 0x0040142a (c:\tmp\testCase\natClass.cc)
at 0x00411b2e (c:\datal\gcc\gcc\gcc\libgcc2.c)
at 0x0041a210 (c:\datal\gcc\gcc\gcc\libgcc2.c)
at 0x00403337 (c:\datal\gcc\gcc\gcc\libgcc2.c)
at 0x00403417 (c:\datal\gcc\gcc\gcc\libgcc2.c)
at 0x004012d8 (c:\tmp\testCase\natClass.cc)
at 0x0040117e (c:\tmp\testCase\natClass.cc)
at 0x00401014 (c:\tmp\testCase\natClass.cc)
at 0x77e818b5 (Unknown Source)
c:\tmp\testCase>gcj -C TestSocket.java
c:\tmp\testCase>gij TestSocket
Socket works without options.
Exception in thread "main" java.net.SocketException: Socket closed
at 0x0040bf3e (Unknown Source)
at 0x0040c482 (Unknown Source)
at 0x00441d74 (Unknown Source)
at 0x0043ef44 (Unknown Source)
at 0x0045a294 (Unknown Source)
at 0x004f51a9 (Unknown Source)
at 0x004c4ff0 (Unknown Source)
at 0x004ad643 (Unknown Source)
at 0x00458e15 (Unknown Source)
at 0x00482d14 (Unknown Source)
at 0x00458c96 (Unknown Source)
at 0x004ad643 (Unknown Source)
at 0x00458e15 (Unknown Source)
at 0x00482d14 (Unknown Source)
at 0x00458c96 (Unknown Source)
at 0x004090fe (Unknown Source)
at 0x00415e00 (Unknown Source)
at 0x004033c7 (Unknown Source)
at 0x0040149b (Unknown Source)
at 0x0040117e (Unknown Source)
at 0x00401014 (Unknown Source)
at 0x77e818b5 (Unknown Source)
--
Summary: java.net.Socket#connect doesn't work after
java.net.Socket#setSoTimeout
Product: gcc
Version: 3.4
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: libgcj
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: artem at bizlink dot ru
CC: gcc-bugs at gcc dot gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13102