The jtreg hardness crashes when run on a quad-core ARMv7 system
using the C2 server VM.
Most of the crashes are guarantees failed in the locking/unlock code.
The jtreg hardness hangs sometimes rather than crashing.
Here's one failure example:
Internal Error at synchronizer.cpp:1445, pid=4700, tid=4859
assert(dmw->is_neutral()) failed: invariant
#8 0xb68b2d2a in ObjectSynchronizer::inflate(Thread*, oopDesc*, ObjectSynchroni
zer::InflateCause) () from /export/users/bobv/jdk/lib/arm/server/libjvm.so
#9 0xb68b00b8 in ObjectSynchronizer::fast_exit(oopDesc*, BasicLock*, Thread*)
() from /export/users/bobv/jdk/lib/arm/server/libjvm.so
#10 0xb68b036e in ObjectSynchronizer::slow_exit(oopDesc*, BasicLock*, Thread*)
() from /export/users/bobv/jdk/lib/arm/server/libjvm.so
#11 0xb6846ed8 in SharedRuntime::complete_monitor_unlocking_C(oopDesc*, BasicLoc
k*, JavaThread*) () from /export/users/bobv/jdk/lib/arm/server/libjvm.so
Here is the command I used to reproduce the failure:
/export/users/bobv/jdk/bin/java -XX:+PrintCompilation -server -XX:+ShowMessageBoxOnError -jar jtreg/lib/jtreg.jar -nr -othervm -timeout:3 -conc:4 -v1 -a -ignore:quiet -jdk:/export/users/bobv/jdk /export/users/bobv/jdk9-arm3264/hotspot/test
Notes:
1. The failures seem to be independent of GC's. It fails with G1, Serial and ParallelGC.
2. It fails with biased locking disable or enabled.
3. I have not been able to reduce the crash using the JDK 8 ARMv7 C2 compiler.
4. The failure does not reproduce when using the C1 compiler.
5. The failure occurs with fast debug and slow debug builds.
6. If I run the harness using -Xcomp, the crash occurs fairly quickly once the harness classes are
compiled.