-
Bug
-
Resolution: Won't Fix
-
P4
-
None
-
1.3.0, 1.3.1
-
x86
-
windows_nt, windows_2000
Name: dkC59003 Date: 02/10/2000
The regression test (testbase_nsk) nsk/regression/regresab37 fails
under the Classic VM (build 1.3.0rc1-T, native threads, nojit) on win32.
The test generates the Process by the
runtime.exec(command, environment[]) method, where command is
"jdb regresab37a". In 15 seconds the test destroys the Process
and then tries to read from the Process OutputStream. After
successful reading of few bytes the read() method hangs.
The test does not hang if System.exit() method is called
in the regresab37a class.
To reproduce the bug run doit.bat on win32 in
/net/sqesvr/vsn/GammaBase/Bugs/<this bug number>.
The first parameter for doit.bat should be JDK root directory
(e.g. L:/java/jdk1.3/win32) and the other parameter(s) -
VM option(s) (optional).
The doit.bat file contains the variables which must be tuned :
The JDB_COMMAND variable defines the executed JDB
(e.g. L:/java/jdk1.3/win32/bin/jdb).
The OUT_SIZE_LIMIT variable defines the number of bytes to read
from the Process OutputStream. For OUT_SIZE_LIMIT=-1 the number
of bytes is not limited. For OUT_SIZE_LIMIT=-2 the number
of bytes is not limited too and the output.read() method tracing
is turned on. This helps to find out on which byte the
hanging happens.
If the reading from the OutputStream completes successfuly
the reading from the ErrorStream hangs.
Therefore there is the ERROR_SIZE_LIMIT variable in the doit.bat file
which is similar to the OUT_SIZE_LIMIT variable.
The Classic VM (build 1.3.0rc1-T) on Solaris
runs the test perfectly. To run the test on Solaris use doit.sh.
See logs:
On Win32:
% doit.bat d:\bond\java\dest\jdk1.3.0T\win32
java version "1.3.0rc1"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.0rc1-T)
Classic VM (build 1.3.0rc1-T, native threads, nojit)
==> nsk/regression/regresab37 test LOG:
---> test OPTIONs:
----> out_size_limit to read - unlimited
----> output.read() tracing - off
----> error_size_limit to read - unlimited
----> error.read() tracing - off
----> regresab37a PROCESS is created:
----> Command: d:\bond\java\dest\jdk1.3.0T\win32\bin\jdb regresab37a
----> regresab37a PROCESS has not finished during 15 seconds => It has been destroyed!
----> reading from regresab37a PROCESS OutputStream:
<hanging>
On Solaris:
doit.sh /net/java7/d/bond/java/dest/jdk1.3.0T/solaris
java version "1.3.0rc1"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.0rc1-T)
Classic VM (build 1.3.0rc1-T, green threads, nojit)
==> nsk/regression/regresab37 test LOG:
---> test OPTIONs:
----> out_size_limit to read - unlimited
----> output.read() tracing - off
----> error_size_limit to read - unlimited
----> error.read() tracing - off
----> regresab37a PROCESS is created:
----> Command: /net/java7/d/bond/java/dest/jdk1.3.0T/solaris/bin/jdb regresab37a
----> regresab37a PROCESS has not finished during 15 seconds => It has been destroyed!
----> reading from regresab37a PROCESS OutputStream:
----> reading from regresab37a PROCESS OutputStream COMPLETED
----> regresab37a PROCESS.OUT_SIZE = 252
----> regresab37a PROCESS.OUT: --------------------
Initializing jdb...
> run regresab37a
Java HotSpot(TM) Client VM warning: Setting of property "java.compiler" is ignored
VM Started: > -> regresab37a PROCESS STARTED
-> regresab37a PROCESS: loop_counter = 0
-> regresab37a PROCESS: loop_counter = 1
----> END of regresab37a PROCESS.OUT: ----------------
----> reading from regresab37a PROCESS ErrorStream:
----> reading from regresab37a PROCESS ErrorStream COMPLETED
----> regresab37a PROCESS.ERROR_SIZE = 0
==> nsk/regression/regresab37 test PASSED
======================================================================
Name: dkC59003 Date: 02/14/2000
I got the thread dump at the moment when the test is hanging:
Full thread dump:
"Signal Dispatcher" daemon prio=10 tid=0x778240 nid=0x9e waiting on monitor [0..0]
"Finalizer" daemon prio=9 tid=0x775010 nid=0xa0 waiting on monitor [0xe42f000..0xe42fdc8]
at java.lang.Object.wait(Native Method)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:108)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:123)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:162)
"Reference Handler" daemon prio=10 tid=0x775cd0 nid=0x5f waiting on monitor [0xe3ef000..0xe3efdc8]
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:420)
at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:110)
"main" prio=5 tid=0x771900 nid=0xb1 initialized [0x6f000..0x6fc44]
at java.io.FileInputStream.readBytes(Native Method)
at java.io.FileInputStream.read(FileInputStream.java:183)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:186)
at java.io.BufferedInputStream.read(BufferedInputStream.java:204)
at regresab37.run(regresab37.java:230)
at regresab37.main(regresab37.java:300)
"VM Thread" prio=5 tid=0x774f90 nid=0xa5 runnable
"VM Periodic Task Thread" prio=10 tid=0x778c30 nid=0x98 waiting on monitor
This dump shows that hanging happens
at java.io.FileInputStream.readBytes(Native Method).
Therefore it is more than likely that this bug is not in VM
but rather in java/classes_io.
I'm reassigning this bug to classes_io.
###@###.### 2000-02-14
======================================================================
Name: elR10090 Date: 04/17/2001
Alexey Gibadullin, ###@###.###
This bug also affects the tests:
nsk/regression/b4305257
nsk/regression/b4313296
======================================================================
- duplicates
-
JDK-4417524 VM hangs up while running nsk/stress/network/network003 test
-
- Closed
-
-
JDK-4311710 HotSpot VM: Process.getInputStream().read() method hangs for destroyed Process
-
- Closed
-
- relates to
-
JDK-4418490 VM hangs up while running nsk/regression/b4311710 test
-
- Closed
-