JDK-8368578 : ARM32: C2 SuperWord analysis fails with assert
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 26
  • Priority: P3
  • Status: Closed
  • Resolution: Duplicate
  • OS: linux
  • CPU: arm
  • Submitted: 2025-09-24
  • Updated: 2025-10-21
  • Resolved: 2025-10-21
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 26
26Resolved
Related Reports
Causes :  
Relates :  
Description
#  Internal Error (src/hotspot/share/opto/mempointer.hpp:611), pid=13173, tid=13188
#  assert(!_scale.is_zero()) failed: non-zero scale

Current CompileTask:
C2:498   89             java.math.BigInteger::implMultiplyToLen (195 bytes)

Stack: [0xb585f000,0xb58df000],  sp=0xb58db4a8,  free space=497k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0x10acc00]  MemPointerSummand::MemPointerSummand(Node*, NoOverflowInt const&)+0x8c  (mempointer.hpp:611)
V  [libjvm.so+0x10aa628]  MemPointerParser::create_summands()+0x128
V  [libjvm.so+0x10aab68]  MemPointerParser::parse(MemPointerParserCallback&, TraceMemPointer const&)+0x234
V  [libjvm.so+0x10adf0c]  MemPointerParser::parse(MemNode const*, MemPointerParserCallback&, TraceMemPointer const&)+0x234
V  [libjvm.so+0x10ac74c]  MemPointer::MemPointer(MemNode const*, MemPointerParserCallback&, TraceMemPointer const&)+0x10
V  [libjvm.so+0x14b8944]  VPointer::VPointer(MemNode const*, VLoop const&, MemPointerParserCallback&)+0x30
V  [libjvm.so+0x15ea8c4]  VLoopVPointers::compute_vpointers()+0x1ec
V  [libjvm.so+0x15edf74]  VLoopAnalyzer::setup_submodules()+0x174
V  [libjvm.so+0x1000340]  PhaseIdealLoop::auto_vectorize(IdealLoopTree*, VSharedData&)+0x638
V  [libjvm.so+0xfe1e64]  PhaseIdealLoop::build_and_optimize()+0xd8c
V  [libjvm.so+0x72fc48]  PhaseIdealLoop::optimize(PhaseIterGVN&, LoopOptsMode)+0x330
V  [libjvm.so+0x729ae4]  Compile::optimize_loops(PhaseIterGVN&, LoopOptsMode) [clone .part.520]+0x90
V  [libjvm.so+0x72bbb8]  Compile::Optimize()+0xc3c
V  [libjvm.so+0x72d890]  Compile::Compile(ciEnv*, ciMethod*, int, Options, DirectiveSet*)+0x1230
V  [libjvm.so+0x513614]  C2Compiler::compile_method(ciEnv*, ciMethod*, int, bool, DirectiveSet*)+0x2b0
V  [libjvm.so+0x73ae20]  CompileBroker::invoke_compiler_on_method(CompileTask*)+0x434
V  [libjvm.so+0x73be0c]  CompileBroker::compiler_thread_loop()+0x3f8
V  [libjvm.so+0xbe02cc]  JavaThread::thread_main_inner()+0x234
V  [libjvm.so+0x153dff4]  Thread::call_run()+0x144
V  [libjvm.so+0x11ff514]  thread_native_entry(Thread*)+0x13c


Affected tests:
- test/jdk/com/sun/crypto/provider/Cipher/KeyWrap/TestCipherKeyWrapperTest.java
- test/jdk/com/sun/crypto/provider/Cipher/KeyWrap/TestGeneral.java
- test/jdk/com/sun/crypto/provider/Cipher/RSA/TestOAEP.java
- test/jdk/com/sun/crypto/provider/Cipher/RSA/TestOAEP.java
- test/jdk/com/sun/crypto/provider/Cipher/RSA/TestOAEPPadding.java
- test/jdk/com/sun/crypto/provider/Cipher/RSA/TestOAEPWithParams.java
- test/jdk/com/sun/crypto/provider/Cipher/RSA/TestRSA.java
- test/jdk/java/lang/ClassLoader/loadLibraryDeadlock/TestLoadLibraryDeadlock.java
- test/jdk/java/lang/Double/ParseDouble.java
- test/jdk/java/lang/Float/ParseFloat.java
- test/jdk/java/lang/Math/MultiplicationTests.java
- test/jdk/java/lang/System/LoggerFinder/SignedLoggerFinderTest/SignedLoggerFinderTest.java
- test/jdk/java/lang/Thread/virtual/MonitorEnterExit.java
- test/jdk/java/lang/Thread/virtual/MonitorWaitNotify.java
- test/jdk/java/lang/Thread/virtual/Parking.java
- test/jdk/java/math/BigDecimal/DivideMcTests.java
- test/jdk/java/math/BigDecimal/DoubleFloatValueTests.java
- test/jdk/java/math/BigInteger/BigIntegerParallelMultiplyTest.java
- test/jdk/java/util/jar/JarFile/IgnoreUnrelatedSignatureFiles.java
- test/jdk/java/util/jar/JarFile/jarVerification/MultiProviderTest.java
- test/jdk/java/util/jar/JarFile/mrjar/MultiReleaseJarAPI.java
- test/jdk/java/util/jar/JarFile/mrjar/MultiReleaseJarSecurity.java
- test/jdk/java/util/jar/JarFile/SignedJarPendingBlock.java
- test/jdk/java/util/jar/JarFile/VerifySignedJar.java
- test/jdk/java/util/jar/JarInputStream/ExtraFileInMetaInf.java
- test/jdk/java/util/Random/RandomExponentialTest.java
- test/jdk/java/util/Random/RandomTestMoments.java
- test/jdk/jdk/internal/math/FloatingDecimal/TestFDBigInteger.java
- test/jdk/jdk/internal/math/FloatingDecimal/TestFloatingDecimal.java
- test/jdk/jdk/internal/math/FloatingDecimal/TestRandomFloatingDecimal.java
- test/jdk/jdk/internal/math/ToDecimal/DoubleToDecimalTest.java
- test/jdk/jdk/internal/math/ToDecimal/FloatToDecimalTest.java
- test/jdk/jdk/internal/math/ToDecimal/MathUtilsTest.java

Workaround: -XX:-UseSuperWord option
Comments
This was fixed by JDK-8369902.
21-10-2025

[~mhaessig] Found out where the bug lies, and I was now able to create a reproducer that works on x86 and probably any other platform. See JDK-8369902 Test2.java
16-10-2025

Sure. See JTwork.tar attached. Hope it helps.
26-09-2025

[~bulasevich], could you run some of the failing tests with -XX:CompileCommand=TraceAutovectorization,\*.\*,POINTER_PARSING and share the logs? That would help a lot.
26-09-2025

-XX:-UseAutoVectorizationSpeculativeAliasingChecks should be a less intrusive workaround.
25-09-2025

ILW = assert in debug build, arm32 debug only, -XX:-UseSuperWord = MMM = P3
24-09-2025