Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

JDK18 compilation failure - bootstrap error, system property access before init #13828

Closed
JasonFengJ9 opened this issue Oct 29, 2021 · 8 comments

Comments

@JasonFengJ9
Copy link
Member

JasonFengJ9 commented Oct 29, 2021

https://openj9-jenkins.osuosl.org/job/Build_JDKnext_x86-64_mac_OpenJDK/139/consoleFull

02:48:50  Exception in thread "(unnamed thread)" java/lang/Error: bootstrap error, system property access before init: os.version
02:48:50  	at java/lang/System.getProperty (java.base@18/System.java:583)
02:48:50  	at java/lang/System.getProperty (java.base@18/System.java:553)
02:48:50  	at sun/security/action/GetPropertyAction.privilegedGetProperty (java.base@18/GetPropertyAction.java:106)
02:48:50  	at jdk/internal/loader/ClassLoaderHelper.<clinit> (java.base@18/ClassLoaderHelper.java:35)
02:48:50  	at jdk/internal/loader/NativeLibraries.<clinit> (java.base@18/NativeLibraries.java:58)
@pshipton
Copy link
Member

Where do you see the error, in a log file? I don't find it in the linked build output.

@pshipton
Copy link
Member

I do see the following @tajila

02:41:43  Creating support/modules_libs/java.base/jrt-fs.jar
02:41:53  Exception in thread "main" java.lang.Error: /home/jenkins/workspace/Build_JDKnext_s390x_linux_OpenJDK/build/linux-s390x-server-release/support/j9jcl/java.base/share/classes/module-info.java.extra, line 43, multiple exports jdk.internal.misc "exports jdk.internal.misc to openj9.criu ;"
02:41:53  	at build.tools.module.GenModuleInfoSource$Parser.newError(GenModuleInfoSource.java:770)
02:41:53  	at build.tools.module.GenModuleInfoSource$ModuleInfo.process(GenModuleInfoSource.java:426)
02:41:53  	at build.tools.module.GenModuleInfoSource$ModuleInfo.parseExtra(GenModuleInfoSource.java:388)
02:41:53  	at build.tools.module.GenModuleInfoSource.<init>(GenModuleInfoSource.java:142)
02:41:53  	at build.tools.module.GenModuleInfoSource.main(GenModuleInfoSource.java:118)
02:41:53  gmake[3]: *** [/home/jenkins/workspace/Build_JDKnext_s390x_linux_OpenJDK/build/linux-s390x-server-release/support/gensrc/java.base/module-info.java] Error 1
02:41:53  common/modules/GensrcModuleInfo.gmk:82: recipe for target '/home/jenkins/workspace/Build_JDKnext_s390x_linux_OpenJDK/build/linux-s390x-server-release/support/gensrc/java.base/module-info.java' failed

@JasonFengJ9
Copy link
Member Author

Where do you see the error, in a log file? I don't find it in the linked build output.

Here is the correct link - https://openj9-jenkins.osuosl.org/job/Build_JDKnext_x86-64_mac_OpenJDK/139/consoleFull

@tajila
Copy link
Contributor

tajila commented Oct 29, 2021

Looks like module-info.java.extra is missing preprocessor checks for openj9.criu. Ill make a PR to add those

@JasonFengJ9
Copy link
Member Author

There were lots of OpenJDK update such as 8271820: Implementation of JEP 416: Reimplement Core Reflection with Method Handle

#13849 addresses bootstrap error, system property access before init: os.version, afterwards the build hits StackOverflowError

java.lang.StackOverflowError
	at java.base/java.lang.invoke.MethodHandles$Lookup.unreflectField(MethodHandles.java:3528)
	at java.base/java.lang.invoke.MethodHandles$Lookup.unreflectGetter(MethodHandles.java:3479)
	at java.base/java.lang.invoke.MethodHandleImpl$1.unreflectField(MethodHandleImpl.java:1637)
	at java.base/jdk.internal.reflect.MethodHandleAccessorFactory.newFieldAccessor(MethodHandleAccessorFactory.java:144)
	at java.base/jdk.internal.reflect.ReflectionFactory.newFieldAccessor(ReflectionFactory.java:176)
	at java.base/java.lang.reflect.Field.acquireOverrideFieldAccessor(Field.java:1184)
	at java.base/java.lang.reflect.Field.getOverrideFieldAccessor(Field.java:1153)
	at java.base/java.lang.reflect.Field.get(Field.java:428)
	at java.base/java.lang.Class.getParameterTypes(Class.java:4062)
	at java.base/java.lang.Class.checkParameterTypes(Class.java:4549)
	at java.base/java.lang.Class.getDeclaredConstructor(Class.java:827)
	at java.base/java.lang.invoke.ClassSpecializer.reflectConstructor(ClassSpecializer.java:137)
	at java.base/java.lang.invoke.ClassSpecializer$SpeciesData.deriveSuperClass(ClassSpecializer.java:435)
	at java.base/java.lang.invoke.ClassSpecializer$Factory.generateConcreteSpeciesCodeFile(ClassSpecializer.java:620)
	at java.base/java.lang.invoke.ClassSpecializer$Factory.generateConcreteSpeciesCode(ClassSpecializer.java:571)
	at java.base/java.lang.invoke.ClassSpecializer$Factory.loadSpecies(ClassSpecializer.java:491)
	at java.base/java.lang.invoke.ClassSpecializer.findSpecies(ClassSpecializer.java:195)
	at java.base/java.lang.invoke.BoundMethodHandle$SpeciesData.extendWith(BoundMethodHandle.java:370)
	at java.base/java.lang.invoke.LambdaFormEditor.newSpeciesData(LambdaFormEditor.java:466)
	at java.base/java.lang.invoke.LambdaFormEditor.bindArgumentForm(LambdaFormEditor.java:529)
	at java.base/java.lang.invoke.LambdaFormEditor.bindArgumentL(LambdaFormEditor.java:473)
	at java.base/java.lang.invoke.BoundMethodHandle.bindArgumentL(BoundMethodHandle.java:92)
	at java.base/java.lang.invoke.MethodHandle.bindArgumentL(MethodHandle.java:1701)
	at java.base/java.lang.invoke.MethodHandle.bindTo(MethodHandle.java:1617)
	at java.base/java.lang.invoke.MethodHandleImpl.makePairwiseConvertByEditor(MethodHandleImpl.java:311)
	at java.base/java.lang.invoke.MethodHandleImpl.makePairwiseConvert(MethodHandleImpl.java:266)
	at java.base/java.lang.invoke.MethodHandleImpl.makePairwiseConvert(MethodHandleImpl.java:383)
	at java.base/java.lang.invoke.MethodHandle.asTypeUncached(MethodHandle.java:903)
	at java.base/java.lang.invoke.MethodHandle.asType(MethodHandle.java:868)
	at java.base/jdk.internal.reflect.MethodHandleObjectFieldAccessorImpl.fieldAccessor(MethodHandleObjectFieldAccessorImpl.java:42)
	at java.base/jdk.internal.reflect.MethodHandleAccessorFactory.newFieldAccessor(MethodHandleAccessorFactory.java:164)
	at java.base/jdk.internal.reflect.ReflectionFactory.newFieldAccessor(ReflectionFactory.java:176)
	at java.base/java.lang.reflect.Field.acquireOverrideFieldAccessor(Field.java:1184)
	at java.base/java.lang.reflect.Field.getOverrideFieldAccessor(Field.java:1153)
	at java.base/java.lang.reflect.Field.get(Field.java:428)
	at java.base/java.lang.Class.getParameterTypes(Class.java:4062)

Workaround the StackOverflowError temporally, an InternalError occurred.

Exception in thread "main" java.lang.InternalError: java.lang.reflect.Method::parameterTypes cannot be accessed reflectively before java.lang.invoke is initialized
	at java.base/jdk.internal.reflect.MethodHandleAccessorFactory.newFieldAccessor(MethodHandleAccessorFactory.java:133)
	at java.base/jdk.internal.reflect.ReflectionFactory.newFieldAccessor(ReflectionFactory.java:176)
	at java.base/java.lang.reflect.Field.acquireOverrideFieldAccessor(Field.java:1184)
	at java.base/java.lang.reflect.Field.getOverrideFieldAccessor(Field.java:1153)
	at java.base/java.lang.reflect.Field.get(Field.java:428)
	at java.base/java.lang.Class.getParameterTypes(Class.java:4077)

More changes are still required.

@tajila
Copy link
Contributor

tajila commented Nov 2, 2021

Use -Djdk.reflect.useDirectMethodHandle=false to disable MH support

@JasonFengJ9
Copy link
Member Author

Use -Djdk.reflect.useDirectMethodHandle=false to disable MH support

This fixed InternalError: java.lang.reflect.Method::parameterTypes cannot be accessed reflectively before java.lang.invoke is initialized.

@JasonFengJ9
Copy link
Member Author

This issue is addressed via JDK18+ returns os.version before System.systemProperties is initialized.

Other JDK18 build issues are being tracked via #13852 & #13844.

qasimy123 pushed a commit to qasimy123/openj9-jit-debug-agent that referenced this issue Nov 26, 2021
Fixes eclipse-openj9/openj9#13828

Signed-off-by: Tobi Ajila <atobia@ca.ibm.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants