-
Type:
Bug
-
Resolution: Fixed
-
Priority:
P2
-
Affects Version/s: repo-valhalla
-
Component/s: hotspot
-
generic
-
generic
The following test fails in the Valhalla CI:
compiler/valhalla/inlinetypes/TestTrivialMethods.java
Here's a snippet from a windows-x64 log file:
#section:main
----------messages:(8/1180)----------
command: main -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xbatch -XX:+InlineTypePassFieldsAsArgs -XX:+InlineTypeReturnedAsFields -XX:+IgnoreUnrecognizedVMOptions -XX:-StressCallingConvention -XX:CompileCommand=dontinline,*::getter* -XX:CompileCommand=dontinline,*::setter* -XX:CompileCommand=dontinline,*::constantGetter* compiler.valhalla.inlinetypes.TestTrivialMethods
reason: User specified action: run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xbatch -XX:+InlineTypePassFieldsAsArgs -XX:+InlineTypeReturnedAsFields -XX:+IgnoreUnrecognizedVMOptions -XX:-StressCallingConvention -XX:CompileCommand=dontinline,*::getter* -XX:CompileCommand=dontinline,*::setter* -XX:CompileCommand=dontinline,*::constantGetter* compiler.valhalla.inlinetypes.TestTrivialMethods
started: Fri Jan 30 14:41:35.917 UTC 2026
Mode: othervm [/othervm specified]
Additional options from @modules: --add-modules java.base --add-exports java.base/jdk.internal.value=ALL-UNNAMED --add-exports java.base/jdk.internal.vm.annotation=ALL-UNNAMED
Process id: 100044
finished: Fri Jan 30 14:41:39.778 UTC 2026
elapsed time (seconds): 3.861
----------configuration:(5/198)----------
Boot Layer
add modules: java.base
add exports: java.base/jdk.internal.value ALL-UNNAMED
java.base/jdk.internal.vm.annotation ALL-UNNAMED
----------System.out:(3/191)----------
CompileCommand: dontinline *.getter* bool dontinline = true
CompileCommand: dontinline *.setter* bool dontinline = true
CompileCommand: dontinline *.constantGetter* bool dontinline = true
----------System.err:(23/1661)----------
java.lang.VerifyError: All strict final fields must be initialized before super(): 1 field(s), field:Lcompiler/valhalla/inlinetypes/MyValue3; in compiler/valhalla/inlinetypes/TestTrivialMethods
Exception Details:
Location:
compiler/valhalla/inlinetypes/TestTrivialMethods.<init>()V @1: invokespecial
Reason:
Invalid use of strict instance fields
Current Frame:
bci: @1
flags: { flagThisUninit }
locals: { uninitializedThis }
stack: { uninitializedThis }
Bytecode:
0000000: 2ab7 0001 2ab8 0007 b500 0d2a b800 07b5
0000010: 0013 2a01 b500 16b1
at java.base/java.lang.Class.getDeclaredMethods0(Native Method)
at java.base/java.lang.Class.privateGetDeclaredMethods(Class.java:3087)
at java.base/java.lang.Class.getMethodsRecursive(Class.java:3223)
at java.base/java.lang.Class.getMethod0(Class.java:3208)
at java.base/java.lang.Class.getMethod(Class.java:2240)
at com.sun.javatest.regtest.agent.MainWrapper$MainTask.run(MainWrapper.java:137)
at java.base/java.lang.Thread.run(Thread.java:1516)
STATUS:Failed.`main' threw exception: java.lang.VerifyError: All strict final fields must be initialized before super(): 1 field(s), field:Lcompiler/valhalla/inlinetypes/MyValue3; in compiler/valhalla/inlinetypes/TestTrivialMethods Exception Details: Location: compiler/valhalla/inlinetypes/TestTrivialMethods.<init>()V @1: invokespecial Reason: Invalid use of strict instance fields Current Frame: bci: @1 flags: { flagThisUninit } locals: { uninitializedThis } stack: { uninitializedThis } Bytecode: 0000000: 2ab7 0001 2ab8 0007 b500 0d2a b800 07b5 0000010: 0013 2a01 b500 16b1
----------rerun:(59/8787)*----------
The test appears to be failing on all platforms with 10 failures per Tier1.
Update: The test fails with --enable-preview and without --enable-preview.
compiler/valhalla/inlinetypes/TestTrivialMethods.java
Here's a snippet from a windows-x64 log file:
#section:main
----------messages:(8/1180)----------
command: main -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xbatch -XX:+InlineTypePassFieldsAsArgs -XX:+InlineTypeReturnedAsFields -XX:+IgnoreUnrecognizedVMOptions -XX:-StressCallingConvention -XX:CompileCommand=dontinline,*::getter* -XX:CompileCommand=dontinline,*::setter* -XX:CompileCommand=dontinline,*::constantGetter* compiler.valhalla.inlinetypes.TestTrivialMethods
reason: User specified action: run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xbatch -XX:+InlineTypePassFieldsAsArgs -XX:+InlineTypeReturnedAsFields -XX:+IgnoreUnrecognizedVMOptions -XX:-StressCallingConvention -XX:CompileCommand=dontinline,*::getter* -XX:CompileCommand=dontinline,*::setter* -XX:CompileCommand=dontinline,*::constantGetter* compiler.valhalla.inlinetypes.TestTrivialMethods
started: Fri Jan 30 14:41:35.917 UTC 2026
Mode: othervm [/othervm specified]
Additional options from @modules: --add-modules java.base --add-exports java.base/jdk.internal.value=ALL-UNNAMED --add-exports java.base/jdk.internal.vm.annotation=ALL-UNNAMED
Process id: 100044
finished: Fri Jan 30 14:41:39.778 UTC 2026
elapsed time (seconds): 3.861
----------configuration:(5/198)----------
Boot Layer
add modules: java.base
add exports: java.base/jdk.internal.value ALL-UNNAMED
java.base/jdk.internal.vm.annotation ALL-UNNAMED
----------System.out:(3/191)----------
CompileCommand: dontinline *.getter* bool dontinline = true
CompileCommand: dontinline *.setter* bool dontinline = true
CompileCommand: dontinline *.constantGetter* bool dontinline = true
----------System.err:(23/1661)----------
java.lang.VerifyError: All strict final fields must be initialized before super(): 1 field(s), field:Lcompiler/valhalla/inlinetypes/MyValue3; in compiler/valhalla/inlinetypes/TestTrivialMethods
Exception Details:
Location:
compiler/valhalla/inlinetypes/TestTrivialMethods.<init>()V @1: invokespecial
Reason:
Invalid use of strict instance fields
Current Frame:
bci: @1
flags: { flagThisUninit }
locals: { uninitializedThis }
stack: { uninitializedThis }
Bytecode:
0000000: 2ab7 0001 2ab8 0007 b500 0d2a b800 07b5
0000010: 0013 2a01 b500 16b1
at java.base/java.lang.Class.getDeclaredMethods0(Native Method)
at java.base/java.lang.Class.privateGetDeclaredMethods(Class.java:3087)
at java.base/java.lang.Class.getMethodsRecursive(Class.java:3223)
at java.base/java.lang.Class.getMethod0(Class.java:3208)
at java.base/java.lang.Class.getMethod(Class.java:2240)
at com.sun.javatest.regtest.agent.MainWrapper$MainTask.run(MainWrapper.java:137)
at java.base/java.lang.Thread.run(Thread.java:1516)
STATUS:Failed.`main' threw exception: java.lang.VerifyError: All strict final fields must be initialized before super(): 1 field(s), field:Lcompiler/valhalla/inlinetypes/MyValue3; in compiler/valhalla/inlinetypes/TestTrivialMethods Exception Details: Location: compiler/valhalla/inlinetypes/TestTrivialMethods.<init>()V @1: invokespecial Reason: Invalid use of strict instance fields Current Frame: bci: @1 flags: { flagThisUninit } locals: { uninitializedThis } stack: { uninitializedThis } Bytecode: 0000000: 2ab7 0001 2ab8 0007 b500 0d2a b800 07b5 0000010: 0013 2a01 b500 16b1
----------rerun:(59/8787)*----------
The test appears to be failing on all platforms with 10 failures per Tier1.
Update: The test fails with --enable-preview and without --enable-preview.
- caused by
-
JDK-8376033 [lworld] Remove auto early construction from strict fields
-
- Resolved
-
- relates to
-
JDK-8373692 [lworld] compiler/valhalla/inlinetypes/TestTrivialMethods.java fails with methods not getting C2 compiled
-
- Resolved
-
- links to
-
Commit(lworld)
openjdk/valhalla/0afc29a8
-
Review(lworld)
openjdk/valhalla/2006