https://issues.apache.org/bugzilla/show_bug.cgi?id=46305
Summary: Hung forked JVM when reading from standard input
Product: Ant
Version: 1.7.1
Platform: PC
OS/Version: Windows XP
Status: NEW
Severity: normal
Priority: P2
Component: Core tasks
AssignedTo: [email protected]
ReportedBy: [EMAIL PROTECTED]
Hi,
When launching a Java program from ant with "fork=true", the launched program
seems to have *no* problem reading from the standard input (e.g. via
System.in.read()), however this seems to stuff up the thread management of the
launched program (i.e. the forked/child JVM) and possibly also crashes the
child JVM.
To reproduce this on a Windows XP (with Service Pack 3) using Sun JDK 6 update
10, I wrote a class with a main method that simply contains:
try {
System.out.println("X[Return] to quit");
while (System.in.read() != 'X')
;
System.exit(0);
// see shutdown hook for subsequent shutdown operations
} catch (IOException e) {
e.printStackTrace();
}
When the program runs and blocks/waits for input from the user, if attached via
JMX using JVisualVM (a tool that comes with Sun JDK 6 installation, for viewing
the memory and thread state of a VM), JVisualVM will freeze and could not
return any info about the JVM. The main thread of the JVM itself still works
since System.in.read() still responds to user input, but the other threads of
the program's JVM seem to have died and therefore the program/JVM cannot be
connected via RMI, remote debugging, using -QUIT signal to get JVM thread dump,
etc.
The above is just a straightforward way to demostrate the problem, but in
practice, without using JMX, the problem can also be reproduced using certain
combinations of operations involving "complex" thread management, such as AWT
event handling, RMI connection, etc. As such, it looks like that the problem is
caused by a combination of the following factors:
1. Launching a program from ant using "fork=true"
2. The program blocks to receive input from user, e.g. System.in.read()
3. The program performs "complex" threading operation, such as exporting RMI
remote objects, displaying a java.awt.Frame, connecting to the VM via JMX etc.
The JVM hang problem is noticeable/reproducable:
- On Windows XP (Service Pack 3, not sure about other service packs), but *no*
problem on Linux and Windows Vista.
- Using Sun JDK 1.4.2_14, 1.5.0_12, 1.6.0_10, and IBM J9 2.3
- Ant 1.7.0 and 1.7.1
I have no idea what could cause this problem, but I suspect that I/O
redirection is not properly implemented in Windows XP, and thus crashing the
JVM (e.g. interfering with the JVM's thread management).
Thanks,
Hendrik
--
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.