-
Enhancement
-
Resolution: Fixed
-
P4
-
22
-
b05
I noticed the following exception printed while running a test:
java.io.IOException
at jdk.jdi/com.sun.tools.jdi.VirtualMachineManagerImpl.createVirtualMachine(VirtualMachineManagerImpl.java:229)
at jdk.jdi/com.sun.tools.jdi.VirtualMachineManagerImpl.createVirtualMachine(VirtualMachineManagerImpl.java:236)
at jdk.jdi/com.sun.tools.jdi.GenericAttachingConnector.attach(GenericAttachingConnector.java:120)
at jdk.jdi/com.sun.tools.jdi.SocketAttachingConnector.attach(SocketAttachingConnector.java:83)
at DebugUtils.attach(DebugUtils.java:86)
at ManyThreads.main(ManyThreads.java:84)
There is no reason given for the IOException. The reason is swallowed by the exception handler:
} catch (VMDisconnectedException e) {
throw new IOException(e.getMessage());
}
Instead of passing the exception message to the constructor, it should be passing the "Caused by" exception. Once that is done you see the following instead:
java.io.IOException: com.sun.jdi.VMDisconnectedException
at jdk.jdi/com.sun.tools.jdi.VirtualMachineManagerImpl.createVirtualMachine(VirtualMachineManagerImpl.java:229)
at jdk.jdi/com.sun.tools.jdi.VirtualMachineManagerImpl.createVirtualMachine(VirtualMachineManagerImpl.java:236)
at jdk.jdi/com.sun.tools.jdi.GenericAttachingConnector.attach(GenericAttachingConnector.java:120)
at jdk.jdi/com.sun.tools.jdi.SocketAttachingConnector.attach(SocketAttachingConnector.java:83)
at DebugUtils.attach(DebugUtils.java:86)
at ManyThreads.main(ManyThreads.java:84)
Caused by: com.sun.jdi.VMDisconnectedException
at jdk.jdi/com.sun.tools.jdi.TargetVM.waitForReply(TargetVM.java:304)
at jdk.jdi/com.sun.tools.jdi.VirtualMachineImpl.waitForTargetReply(VirtualMachineImpl.java:1176)
at jdk.jdi/com.sun.tools.jdi.PacketStream.waitForReply(PacketStream.java:89)
at jdk.jdi/com.sun.tools.jdi.JDWP$VirtualMachine$IDSizes.waitForReply(JDWP.java:488)
at jdk.jdi/com.sun.tools.jdi.JDWP$VirtualMachine$IDSizes.process(JDWP.java:474)
at jdk.jdi/com.sun.tools.jdi.VirtualMachineImpl.<init>(VirtualMachineImpl.java:240)
at jdk.jdi/com.sun.tools.jdi.VirtualMachineManagerImpl.createVirtualMachine(VirtualMachineManagerImpl.java:226)
... 5 more
java.io.IOException
at jdk.jdi/com.sun.tools.jdi.VirtualMachineManagerImpl.createVirtualMachine(VirtualMachineManagerImpl.java:229)
at jdk.jdi/com.sun.tools.jdi.VirtualMachineManagerImpl.createVirtualMachine(VirtualMachineManagerImpl.java:236)
at jdk.jdi/com.sun.tools.jdi.GenericAttachingConnector.attach(GenericAttachingConnector.java:120)
at jdk.jdi/com.sun.tools.jdi.SocketAttachingConnector.attach(SocketAttachingConnector.java:83)
at DebugUtils.attach(DebugUtils.java:86)
at ManyThreads.main(ManyThreads.java:84)
There is no reason given for the IOException. The reason is swallowed by the exception handler:
} catch (VMDisconnectedException e) {
throw new IOException(e.getMessage());
}
Instead of passing the exception message to the constructor, it should be passing the "Caused by" exception. Once that is done you see the following instead:
java.io.IOException: com.sun.jdi.VMDisconnectedException
at jdk.jdi/com.sun.tools.jdi.VirtualMachineManagerImpl.createVirtualMachine(VirtualMachineManagerImpl.java:229)
at jdk.jdi/com.sun.tools.jdi.VirtualMachineManagerImpl.createVirtualMachine(VirtualMachineManagerImpl.java:236)
at jdk.jdi/com.sun.tools.jdi.GenericAttachingConnector.attach(GenericAttachingConnector.java:120)
at jdk.jdi/com.sun.tools.jdi.SocketAttachingConnector.attach(SocketAttachingConnector.java:83)
at DebugUtils.attach(DebugUtils.java:86)
at ManyThreads.main(ManyThreads.java:84)
Caused by: com.sun.jdi.VMDisconnectedException
at jdk.jdi/com.sun.tools.jdi.TargetVM.waitForReply(TargetVM.java:304)
at jdk.jdi/com.sun.tools.jdi.VirtualMachineImpl.waitForTargetReply(VirtualMachineImpl.java:1176)
at jdk.jdi/com.sun.tools.jdi.PacketStream.waitForReply(PacketStream.java:89)
at jdk.jdi/com.sun.tools.jdi.JDWP$VirtualMachine$IDSizes.waitForReply(JDWP.java:488)
at jdk.jdi/com.sun.tools.jdi.JDWP$VirtualMachine$IDSizes.process(JDWP.java:474)
at jdk.jdi/com.sun.tools.jdi.VirtualMachineImpl.<init>(VirtualMachineImpl.java:240)
at jdk.jdi/com.sun.tools.jdi.VirtualMachineManagerImpl.createVirtualMachine(VirtualMachineManagerImpl.java:226)
... 5 more