The StressRedefine.java (base for redefine stress tests) defines 3 important
constants:
private static int staticMethodCallersNumber = 10;
private static int nonstaticMethodCallersNumber = 10;
private static int redefiningThreadsNumber = 40;
The 1st is number of threads to call a static method from constantly redefined
class.
The 2nd is number of threads to call am instance method from constantly
redefined class.
The 3rd is number of threads to redefine the target class.
The redefiningThreadsNumber=40 is unreasonably big for the StressRedefine test,
and there is no chance with -Xcomp for one of the methods above to get
resolved without a class redefinition. So, after 100 of non-successfull
attempts we hit the guarantee in the
open/src/hotspot/share/interpreter/interpreterRuntime.cpp:879
guarantee((retry_count++ < 100)) failed: Could not resolve to latest version
of redefined method
To avoid it, the test StressRedefine/TestDescription.java is tweaked to have
redefiningThreadsNumber=4.
The test StressRedefineWithoutBytecodeCorruption is worse as it fails even with
redefiningThreadsNumber=1. So, a require is added to exclude the test with the
-Xcomp flag.
-------------
Commit messages:
- 8245446:
vmTestbase/nsk/jvmti/RedefineClasses/StressRedefine/TestDescription.java crash
intermittently
Changes: https://git.openjdk.java.net/jdk/pull/1692/files
Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=1692&range=00
Issue: https://bugs.openjdk.java.net/browse/JDK-8245446
Stats: 2 lines in 2 files changed: 2 ins; 0 del; 0 mod
Patch: https://git.openjdk.java.net/jdk/pull/1692.diff
Fetch: git fetch https://git.openjdk.java.net/jdk pull/1692/head:pull/1692
PR: https://git.openjdk.java.net/jdk/pull/1692