Sun vs Blackdown/Hotspot vs classic and udp sockets

2001-04-26 Thread Joi Ellis


I've been trying to write unit tests for a simple udp listener service.
When I use a HotSpot jvm, the tests pass.  When I use native threads,
the tests pass.  When I use green threads, or a classic JVM, the tests
fail.

The tests are braindead simple.  Open a udp listen socket, open a send
socket, send a packet, close the send socket, close the listen socket.
The point of the tests isn't to test the sockets, it's to test other
code's ability to decipher the received udp packet's payload properly.
The send socket is part of the text fixture, ultimately the listen
server is to be receiving packets from a remote device.

Anyway, the FIRST use of the listen socket always works.  The subsequent
opens of the socket always FAIL, but only on green threads/classic JVMs.



I've studied everything I can find on the Bug Parade, and tried everything
they've listed as possible problems.  I've tried adding sleeps()
after the listen socket close(), I've tried using a singleton, I can't
think of anything else to try.

I need this code to work on any JVM, I have to support linux, windows,
and solaris!

  Sun 1.2.2 -classic : fails
  Sun 1.2.2  : fails
  Sun 1.3.0 -classic : fails
  Sun 1.3.0  : success
  Sun 1.3.1b15 -classic  : fails
  Sun 1.3.1b15   : success
  Blackdown 1.3.0FCS -classic: success (!!)
  Blackdown 1.3.0FCS : success

As far as I can tell, the JVM is leaving the socket open in the
kernel even though I've closed the socket, killed the thread,
 and GC'd the objects!

I'm at my wits end.  I've stepped through this with the debugger and
tossed printlns all through the app and the tests and I can see the
sockets being closed and both threads terminating.  Still that damned
socket remains, blocking all subsequent use within the JVM.

If anyone can offer a suggestion, I'd really appreciate some pointers.
I've already studied Sun's Bug IDS 4137483, 4319693, 4400235, and 
every other bugid those three cross-reference.

I've wasted two whole days on this now and I'm giving up.  

-- 
Joi EllisSoftware Engineer
Aravox Technologies  [EMAIL PROTECTED], [EMAIL PROTECTED]

No matter what we think of Linux versus FreeBSD, etc., the one thing I
really like about Linux is that it has Microsoft worried.  Anything
that kicks a monopoly in the pants has got to be good for something.
   - Chris Johnson


--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]




Re: Sun vs Blackdown/Hotspot vs classic and udp sockets

2001-04-26 Thread Vladimir G Ivanovic

Why don't you try IBM's JDK? The Volano test results show it to be a
powerful performer, and coupled with jikes, it makes pretty nifty
development environment. Seems like an all-around winner to me.

But that may not solve your problem. I seem to remember some funkiness
having to do with signals and green threads. Sorry I can't be more
helpful, but it might be a starting point.

--- Vladimir

Vladimir G. Ivanovichttp://www.leonora.org/~vladimir
2770 Cowper St. [EMAIL PROTECTED]
Palo Alto, CA 94306-2447 +1 650 678 8014

"JE" == Joi Ellis <[EMAIL PROTECTED]> writes:


  JE> I've been trying to write unit tests for a simple udp listener
  JE> service. When I use a HotSpot jvm, the tests pass. When I use
  JE> native threads, the tests pass. When I use green threads, or a
  JE> classic JVM, the tests fail.

  JE> The tests are braindead simple. Open a udp listen socket, open a
  JE> send socket, send a packet, close the send socket, close the
  JE> listen socket. The point of the tests isn't to test the sockets,
  JE> it's to test other code's ability to decipher the received udp
  JE> packet's payload properly. The send socket is part of the text
  JE> fixture, ultimately the listen server is to be receiving packets
  JE> from a remote device.

  JE> Anyway, the FIRST use of the listen socket always works. The
  JE> subsequent opens of the socket always FAIL, but only on green
  JE> threads/classic JVMs.



  JE> I've studied everything I can find on the Bug Parade, and tried
  JE> everything they've listed as possible problems. I've tried adding
  JE> sleeps() after the listen socket close(), I've tried using a
  JE> singleton, I can't think of anything else to try.

  JE> I need this code to work on any JVM, I have to support linux,
  JE> windows, and solaris!

  JE>   Sun 1.2.2 -classic : fails Sun 1.2.2 : fails Sun 1.3.0 -classic
  JE>   : fails Sun 1.3.0 : success Sun 1.3.1b15 -classic : fails Sun
  JE>   1.3.1b15 : success Blackdown 1.3.0FCS -classic: success (!!) 
  JE>   Blackdown 1.3.0FCS : success

  JE> As far as I can tell, the JVM is leaving the socket open in the
  JE> kernel even though I've closed the socket, killed the thread,
  JE>  and GC'd the objects!

  JE> I'm at my wits end. I've stepped through this with the debugger
  JE> and tossed printlns all through the app and the tests and I can
  JE> see the sockets being closed and both threads terminating. Still
  JE> that damned socket remains, blocking all subsequent use within the
  JE> JVM.

  JE> If anyone can offer a suggestion, I'd really appreciate some
  JE> pointers. I've already studied Sun's Bug IDS 4137483, 4319693,
  JE> 4400235, and every other bugid those three cross-reference.

  JE> I've wasted two whole days on this now and I'm giving up.

  JE> -- Joi Ellis Software Engineer Aravox Technologies [EMAIL PROTECTED],
  JE> [EMAIL PROTECTED]

  JE> No matter what we think of Linux versus FreeBSD, etc., the one
  JE> thing I really like about Linux is that it has Microsoft worried. 
  JE> Anything that kicks a monopoly in the pants has got to be good for
  JE> something.
  JE> - Chris Johnson


  JE> --
  JE> To UNSUBSCRIBE, email to [EMAIL PROTECTED]
  JE> with a subject of "unsubscribe". Trouble? Contact
  JE> [EMAIL PROTECTED]


--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]