JDK-4229104 : client shutdown can bring down the server
  • Type: Bug
  • Component: hotspot
  • Sub-Component: runtime
  • Affected Version: 1.0
  • Priority: P3
  • Status: Closed
  • Resolution: Fixed
  • OS: solaris_2.6
  • CPU: sparc
  • Submitted: 1999-04-13
  • Updated: 2022-07-29
  • Resolved: 1999-04-30
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.0 fcsFixed
Related Reports
Duplicate :  
Duplicate :  
Relates :  
Description
Solaris only. 

On a client, invoke an RMI call to the server.  Then, before
the server can respond, shut down the client.    If the server
is running on hotspot, this causes the server to shut down.   If
the server is running on classic, it continues running. 

The reproducible test case is in ~mrm/hotspot/bugs/boothy.   The set
of files you need are in test_tiny.zip or you can run the client
and server from there. 


To reproduce, 

	% setenv CLASSPATH `pwd`
	% rmiregistry &
	% java rmi_test.RMITest &   //invoke the client
	% java rmi_test.RMITestServer & //invoke the server

Then, resize the client window so you can read what is written to
the text area in the middle. 

Press First button.   Press Second button..  Press Third button. 
Press "Die" button.  

When the server is invoked with hotspot, it also shuts down in 
about ten seconds. 

If the server is invoked with -classic it does not shut down. You'll 
notice it does print out the message "done sending data" but it
lives on.    When the server is invoked with hotspot, as soon as
it sends the data, it shuts down.    (so it seems.)



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

EVALUATION ###@###.### 1999-04-21 I've look at this bug and reproduced it. The test case starts a RMI Server and Client which talk over a socket. The client then (ungracefully) terminates itself causing a SIGPIPE to be sent to the server. In classic, the standard hpi initialization path includes, JNI_CreateJavaVM() Initialize_JavaVM() sysThreadBootstrap() intrInit() intrInitMD() [in hpi sources] in intrInitMD() is a call to sigIgnore(SIGPIPE). so classic is ignoring all SIGPIPE signals (which seems wrong). ================================================================= In hotspot, we don't execute this initialization code and we don't install a handler for SIGPIPE. So the connection going down causes the VM to crash with an unhandling Signal. ================================================================== 1. In the short term we could insert a sigIgnore() like classic (where?) 2. In the longer term we could handle the signal and generate a java exception. 3. We should find out why classic ignores the signal, who would know this?
11-06-2004

PUBLIC COMMENTS client shutdown can bring down the server
10-06-2004