RFR(XS): 8159799 - Tests using jcmd fails intermittently with Could not open PerfMemory on Windows

Christian Tornqvist christian.tornqvist at oracle.com
Thu Oct 13 18:09:08 UTC 2016


Hi everyone,

 

Please review this small fix for an intermittent issue we've seen when
running tests concurrently that use jcmd/jstack. 

When running jcmd, we enumerate the perfdata files and then open them one by
one to read things like main class names etc. If the perfdata file
disappears (because the Java process exited) before we get to it, we end up
with different exceptions depending on where in the code we are.

 

The code at:

http://hg.openjdk.java.net/jdk9/hs/jdk/file/3d3f338b5aea/src/jdk.jcmd/share/
classes/sun/tools/common/ProcessArgumentMatcher.java#l88

 

handles this, the problem is that if we get all the way to
open_sharedmem_object() in the JVM, we'll throw a java.lang.Exception which
isn't caught by this. The fix is to throw a NPE instead of Exception and let
the existing code handle this. 

 

Fix has been tested locally and with 30 JPRT runs (with concurrency patch
applied), also managed to reproduce and verify this fix locally using a
debugger to trigger the race.

 

Webrev:

http://cr.openjdk.java.net/~ctornqvi/webrev/8159799/webrev.00/

 

Bug (unfortunately not visible):

https://bugs.openjdk.java.net/browse/JDK-8159799

 

Thanks,

Christian

 

 



More information about the hotspot-runtime-dev mailing list