JDK-4298809 : java.net.SocketException: Interrupted system call
  • Type: Bug
  • Component: hotspot
  • Sub-Component: runtime
  • Affected Version: 1.2.2
  • Priority: P3
  • Status: Closed
  • Resolution: Fixed
  • OS: linux
  • CPU: x86
  • Submitted: 1999-12-13
  • Updated: 2000-09-04
  • Resolved: 2000-09-04
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
1.2.2 1.2.2Fixed
Related Reports
Relates :  
Description

Name: mc57594			Date: 12/12/99


java version "1.2.2"
Classic VM (build 1.2.2-I, green threads, javacomp)


This is a duplicate of a problem fixed by the Blackdown Organization
in their JDK 1.2.2 RC 3 release for Linux.  Please see a complete
description at:

  Bug Id 1578, "java.net.SocketException: Interrupted system call"
  http://www.blackdown.org/cgi-bin/jdk/incoming?id=1578

That description includes a test case with source.  For information
on reproducing the problem with VolanoMark, see Table 2 and the
corresponding run rules at:

  The Volano Report
  http://www.volano.com/report.html

The people at Blackdown were unable to reproduce the problem, but
they did fix it for me.  It was a matter of retrying all interrupted
network operations even for the timeout code.
=================================================
Date: Fri, 3 Dec 1999 21:44:29 -0700 (MST)
  From: ###@###.###
  To: ###@###.###
  Subject: java.net.SocketException: Interrupted system call

  Full_Name: John Neffenger
  JDK_Version: 1.2.2_RC2
  JDK_Arch: i386 (x86)
  Linux_Dist: RedHat
  Linux_Dist_Ver: 6.1
  Libc_Ver: 2.1.2
  Ld_Ver: 2.1.2
  Dyn_Java: no
  Toolkit: Motif
  Toolkit_Ver: 
  Bug_Example: http://
  Submission from: 216.102.197.168 (216.102.197.168)


  I'm getting "java.net.SocketException: Interrupted system call" when
  running network tests on JDK 1.2.1 RC2 on Red Hat Linux 6.1 when all of
  the following are true:

    - There is more than one concurrent network connection.
    - The test runs over a real network, rather than in loopback.
    - The test runs with green threads, rather than native threads.
    - And the server sets a non-zero socket timeout on each connection.

  The problem is easily recreated on my network by running the following
  two programs -- a multithreaded echo server and client test driver:

    http://www.volano.com/temp/Client.java
    http://www.volano.com/temp/Server.java

  Run the server using JDK 1.2.2 RC2 on Linux with:

    java -green Server

  Run the client on another machine on the same network.  The test works
  when run with one network connection:

    java Client -h red.volano.com -c 1 -m 100

  but fails with two network connections:

    java Client -h red.volano.com -c 2 -m 100

  The "-h" option is the host name of the server, the "-c" option is the
  number of clients to create, and the "-m" option is the number of
  messages for each client to send and receive.

  The test fails on the server side with the error:

    Error in server (java.net.SocketException: Interrupted system call).

  This test runs fine under Blackdown JDK 1.1.7 Version 3 on Linux, and it
  runs fine if you run it in loopback or with native threads or without a
  socket timeout on each connection.  Because of the exception, JDK 1.2.2
  RC2 fails to run the VolanoMark network scalability test.


  Reply 1

  Resend

  From: Kevin B. Hendricks <###@###.###>
  To: ###@###.###
  Subject: Re: java.net.SocketException: Interrupted system call (PR#1578)
  Date: Sun Dec  5 09:17:41 1999

  Hi,

  I have been unable to recreate your probem report (even using two machines (but
  my second machine running the client was a Sun box).  Juergen had similar
  troubles trying to recereate the bug you reported.

  I went back to the green threads code and made sure any call to select or poll
  was manually restarted if it returned with -1 and errno==EINTR (especially the
  one in sysTimeout which I think is the culprit).

  It seems on Linux, that both select and poll system calls can be interrupted and
  return even with SA_RESTART set on all signal handlers.

  This should fix your problem.  This fix should appear in RC3 any day now.

  Thanks for your bug report.

  Kevin

  Followup 1

  Compose reply
  Download message

  Date: Sun, 05 Dec 1999 09:17:48 -0800
  From: John Neffenger <###@###.###>
  To: "Kevin B. Hendricks" <###@###.###>
  CC: Volano Support <###@###.###>
  Subject: Re: java.net.SocketException: Interrupted system call (PR#1578)

  Hi Kevin,

  Thanks for looking into it.

  > I have been unable to recreate your probem report (even using two machines
  (but
  > my second machine running the client was a Sun box).  Juergen had similar
  > troubles trying to recereate the bug you reported.

  I'm using a dual SPARC Solaris 7 box for the client as well.  The
  problem occurs for me on two different Linux machines.  In fact, I've
  seen the problem in every JDK 1.2 release.

  Perhaps you have a faster network or machine, and you're not getting the
  concurrent connections.  I'm running the server side on a 200 MHz
  Pentium Pro.  You might try starting 100 simultaneous clients (or more)
  instead of just 2:

    java Client -h red.volano.com -c 100 -m 100

  > This should fix your problem.  This fix should appear in RC3 any day now.

  Thanks again,
  John Neffenger

(Review ID: 98807) 
======================================================================

Name: rlT66838			Date: 12/15/99


java version "1.2.2"
Classic VM (build 1.2.2-I, green threads, javacomp)


This is a duplicate of a problem fixed by the Blackdown Organization in their
JDK 1.2.2 RC 3.9 (not yet released).  Please see a complete description at:

  Bug Id 1604, "Segmentation violation with 1020 timeout sockets"
  http://www.blackdown.org/cgi-bin/jdk/incoming?id=1604

I'm unable to reproduce the bug on Sun's JDK 1.2.2 RC1 since I hit this bug
first:

  Bug Id 4298809, "java.net.SocketException: Interrupted system call"
  http://developer.java.sun.com/developer/bugParade/bugs/4298809.html

but since the Sun JDK is built off the Blackdown files, I assume Sun will hit
this bug as soon as Bug Id 4298809 is fixed (as Blackdown did).  I'm just hoping
Sun can fix both bugs at the same time for the next release candidate.

For information on reproducing the problem with VolanoMark, see Table 2 and the
corresponding run rules at:

  The Volano Report
  http://www.volano.com/report.html
(Review ID: 98997)
======================================================================

Comments
CONVERTED DATA BugTraq+ Release Management Values COMMIT TO FIX: generic FIXED IN: 1.2.2 INTEGRATED IN: 1.2.2 VERIFIED IN: 1.2.2
14-06-2004

WORK AROUND Name: mc57594 Date: 12/12/99 Don't use socket timeouts. This is not an option for our customers, since they end up with dead client sessions hanging around. ====================================================================== Name: rlT66838 Date: 12/15/99 Don't use socket timeouts. This is not an option for our customers, since they end up with dead client sessions hanging around. (Review ID: 98997) ======================================================================
11-06-2004

EVALUATION This will be fixed by RC3. It seems the kernel has suprious timeout of select() when signal happens (event SA_RESTART is specified). ###@###.### 1999-12-21
21-12-1999