Uploaded image for project: 'MariaDB Connector/J'
  1. MariaDB Connector/J
  2. CONJ-634

Ensure compatibility with Graal

    XMLWordPrintable

Details

    • Bug
    • Status: Closed (View Workflow)
    • Major
    • Resolution: Cannot Reproduce
    • 2.1.2
    • N/A
    • Other
    • None
    • MacOS 10.13.6

    Description

      Hey there,

      first of all i would like to thank for developing this software! I am a backend engineer at [Prisma](https://github.com/prismagraphql/prisma). I am opening this issue as we are a happy user of this library and would like it to be compatible with Graal.

      *What is Graal?*

      Graal is a collection of tools. For one it is a JVM replacement that does not only run Java Bytecode but also other languages like Javascript or Ruby. It also comes with a tool called native image. This allows to *compile a JAR into a standalone binary*.

      We would like to turn our Prisma Server into a lightweight binary with Graal.

      However the Graal native image tool comes with some limitations. Some features of the JVM are not supported, e.g. the support for reflection is limited because it is not a good fit with ahead of time compilation. Therefore we created a [test suite](https://github.com/prismagraphql/graal-compatibility) to check the compatibility of our used dependencies with Graal. For each dependency we tried to come up with a super small program and see whether it compiles with Graal or not.

      The program to test compatibility with this library can be found [here](https://github.com/prismagraphql/graal-compatibility/blob/master/mariaDb/src/main/scala/Main.scala).

      *What's the problem we have hit?*
      When running with `-H:+ReportUnsupportedElementsAtRuntime`:

      Detailed message:
      Error: Detected a started Thread in the image heap. This is not supported. The object was reached from a static initializer. All static class initialization is done during native image construction, thus a static initializer cannot contain code that captures state dependent on the build machine. Write your own initialization methods and call them explicitly from your main entry point.
      Trace: 	object sun.awt.AWTAutoShutdown
      	method sun.awt.AWTAutoShutdown.getInstance()
      Call path from entry point to sun.awt.AWTAutoShutdown.getInstance(): 
      	at sun.awt.AWTAutoShutdown.getInstance(AWTAutoShutdown.java:133)
      	at java.awt.EventQueue.detachDispatchThread(EventQueue.java:1137)
      	at java.awt.EventDispatchThread.run(EventDispatchThread.java:88)
      	at com.oracle.svm.core.posix.thread.PosixJavaThreads.pthreadStartRoutine(PosixJavaThreads.java:238)
      	at com.oracle.svm.core.code.CEntryPointCallStubs.com_002eoracle_002esvm_002ecore_002eposix_002ethread_002ePosixJavaThreads_002epthreadStartRoutine_0028com_002eoracle_002esvm_002ecore_002eposix_002ethread_002ePosixJavaThreads_0024ThreadStartData_0029(generated:0)
      Error: Detected a started Thread in the image heap. This is not supported. The object was reached from a static initializer. All static class initialization is done during native image construction, thus a static initializer cannot contain code that captures state dependent on the build machine. Write your own initialization methods and call them explicitly from your main entry point.
      Trace: 	object sun.java2d.opengl.OGLRenderQueue
      	field sun.java2d.opengl.OGLRenderQueue.theInstance
      

      When running without `-H:+ReportUnsupportedElementsAtRuntime`:

      error: unsupported features in 6 methods
      Detailed message:
      Error: Bytecode parsing error: java.lang.NoClassDefFoundError: org/mariadb/jdbc/internal/util/PidFactory$CLibrary
      Trace: 
      	at parsing org.mariadb.jdbc.internal.com.send.SendHandshakeResponsePacket.writeConnectAttributes(SendHandshakeResponsePacket.java:203)
      Call path from entry point to org.mariadb.jdbc.internal.com.send.SendHandshakeResponsePacket.writeConnectAttributes(PacketOutputStream, String): 
      	at org.mariadb.jdbc.internal.com.send.SendHandshakeResponsePacket.writeConnectAttributes(SendHandshakeResponsePacket.java:192)
      	at org.mariadb.jdbc.internal.com.send.SendHandshakeResponsePacket.send(SendHandshakeResponsePacket.java:184)
      	at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.authentication(AbstractConnectProtocol.java:734)
      	at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.handleConnectionPhases(AbstractConnectProtocol.java:713)
      	at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connect(AbstractConnectProtocol.java:402)
      	at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connectWithoutProxy(AbstractConnectProtocol.java:1018)
      	at org.mariadb.jdbc.internal.util.Utils.retrieveProxy(Utils.java:490)
      	at org.mariadb.jdbc.MariaDbConnection.newConnection(MariaDbConnection.java:144)
      	at org.mariadb.jdbc.Driver.connect(Driver.java:90)
      	at Main$.main(Main.scala:23)
      	at Main.main(Main.scala)
      	at com.oracle.svm.core.JavaMainWrapper.run(JavaMainWrapper.java:177)
      	at com.oracle.svm.core.code.CEntryPointCallStubs.com_002eoracle_002esvm_002ecore_002eJavaMainWrapper_002erun_0028int_002corg_002egraalvm_002enativeimage_002ec_002etype_002eCCharPointerPointer_0029(generated:0)
      Original exception that caused the problem: java.lang.NoClassDefFoundError: org/mariadb/jdbc/internal/util/PidFactory$CLibrary
      	at java.lang.Class.getDeclaringClass0(Native Method)
      	at java.lang.Class.getDeclaringClass(Class.java:1235)
      	at java.lang.Class.getEnclosingClass(Class.java:1277)
      	at jdk.vm.ci.hotspot.HotSpotResolvedObjectTypeImpl.getEnclosingType(HotSpotResolvedObjectTypeImpl.java:911)
      	at jdk.vm.ci.hotspot.HotSpotResolvedObjectTypeImpl.getEnclosingType(HotSpotResolvedObjectTypeImpl.java:60)
      	at com.oracle.graal.pointsto.meta.AnalysisType.<init>(AnalysisType.java:174)
      	at com.oracle.graal.pointsto.meta.AnalysisUniverse.createType(AnalysisUniverse.java:255)
      	at com.oracle.graal.pointsto.meta.AnalysisUniverse.lookupAllowUnresolved(AnalysisUniverse.java:193)
      	at com.oracle.graal.pointsto.meta.AnalysisUniverse.lookup(AnalysisUniverse.java:170)
      	at com.oracle.graal.pointsto.meta.AnalysisUniverse.lookup(AnalysisUniverse.java:69)
      	at com.oracle.graal.pointsto.infrastructure.WrappedSignature.getReturnType(WrappedSignature.java:55)
      	at com.oracle.graal.pointsto.flow.MethodFlowsGraph.<init>(MethodFlowsGraph.java:113)
      	at com.oracle.graal.pointsto.flow.MethodTypeFlow.<init>(MethodTypeFlow.java:75)
      	at com.oracle.graal.pointsto.meta.AnalysisMethod.<init>(AnalysisMethod.java:127)
      	at com.oracle.graal.pointsto.meta.AnalysisUniverse.createMethod(AnalysisUniverse.java:399)
      	at com.oracle.graal.pointsto.meta.AnalysisUniverse.lookupAllowUnresolved(AnalysisUniverse.java:387)
      	at com.oracle.graal.pointsto.infrastructure.WrappedConstantPool.lookupMethod(WrappedConstantPool.java:78)
      	at org.graalvm.compiler.java.BytecodeParser.lookupMethod(BytecodeParser.java:3926)
      	at org.graalvm.compiler.java.BytecodeParser.genInvokeStatic(BytecodeParser.java:1422)
      	at com.oracle.svm.hosted.phases.SharedGraphBuilderPhase$SharedBytecodeParser.genInvokeStatic(SharedGraphBuilderPhase.java:168)
      	at org.graalvm.compiler.java.BytecodeParser.processBytecode(BytecodeParser.java:4850)
      	at org.graalvm.compiler.java.BytecodeParser.iterateBytecodesForBlock(BytecodeParser.java:3135)
      	at org.graalvm.compiler.java.BytecodeParser.processBlock(BytecodeParser.java:2944)
      	at org.graalvm.compiler.java.BytecodeParser.build(BytecodeParser.java:888)
      	at org.graalvm.compiler.java.BytecodeParser.buildRootMethod(BytecodeParser.java:782)
      	at org.graalvm.compiler.java.GraphBuilderPhase$Instance.run(GraphBuilderPhase.java:95)
      	at org.graalvm.compiler.phases.Phase.run(Phase.java:49)
      	at org.graalvm.compiler.phases.BasePhase.apply(BasePhase.java:197)
      	at org.graalvm.compiler.phases.Phase.apply(Phase.java:42)
      	at org.graalvm.compiler.phases.Phase.apply(Phase.java:38)
      	at com.oracle.graal.pointsto.flow.MethodTypeFlowBuilder.parse(MethodTypeFlowBuilder.java:196)
      	at com.oracle.graal.pointsto.flow.MethodTypeFlowBuilder.apply(MethodTypeFlowBuilder.java:315)
      	at com.oracle.graal.pointsto.flow.MethodTypeFlow.doParse(MethodTypeFlow.java:310)
      	at com.oracle.graal.pointsto.flow.MethodTypeFlow.ensureParsed(MethodTypeFlow.java:300)
      	at com.oracle.graal.pointsto.flow.MethodTypeFlow.addContext(MethodTypeFlow.java:107)
      	at com.oracle.graal.pointsto.flow.StaticInvokeTypeFlow.update(InvokeTypeFlow.java:346)
      	at com.oracle.graal.pointsto.BigBang$2.run(BigBang.java:502)
      	at com.oracle.graal.pointsto.util.CompletionExecutor.lambda$execute$0(CompletionExecutor.java:174)
      	at java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1402)
      	at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
      	at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
      	at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
      	at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
      Error: Detected a started Thread in the image heap. This is not supported. The object was reached from a static initializer. All static class initialization is done during native image construction, thus a static initializer cannot contain code that captures state dependent on the build machine. Write your own initialization methods and call them explicitly from your main entry point.
      Trace: 	object sun.awt.AWTAutoShutdown
      	method sun.awt.AWTAutoShutdown.getInstance()
      Call path from entry point to sun.awt.AWTAutoShutdown.getInstance(): 
      	at sun.awt.AWTAutoShutdown.getInstance(AWTAutoShutdown.java:133)
      	at java.awt.EventQueue.detachDispatchThread(EventQueue.java:1137)
      	at java.awt.EventDispatchThread.run(EventDispatchThread.java:88)
      	at com.oracle.svm.core.posix.thread.PosixJavaThreads.pthreadStartRoutine(PosixJavaThreads.java:238)
      	at com.oracle.svm.core.code.CEntryPointCallStubs.com_002eoracle_002esvm_002ecore_002eposix_002ethread_002ePosixJavaThreads_002epthreadStartRoutine_0028com_002eoracle_002esvm_002ecore_002eposix_002ethread_002ePosixJavaThreads_0024ThreadStartData_0029(generated:0)
      Error: Detected a started Thread in the image heap. This is not supported. The object was reached from a static initializer. All static class initialization is done during native image construction, thus a static initializer cannot contain code that captures state dependent on the build machine. Write your own initialization methods and call them explicitly from your main entry point.
      Trace: 	object sun.java2d.opengl.OGLRenderQueue
      	field sun.java2d.opengl.OGLRenderQueue.theInstance
      Error: Error loading a referenced type: java.lang.NoClassDefFoundError: com/sun/jna/Platform
      Trace: 
      	at parsing org.mariadb.jdbc.internal.util.Utils.createSocket(Utils.java:539)
      Call path from entry point to org.mariadb.jdbc.internal.util.Utils.createSocket(UrlParser, String): 
      	at org.mariadb.jdbc.internal.util.Utils.createSocket(Utils.java:535)
      	at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connect(AbstractConnectProtocol.java:382)
      	at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connectWithoutProxy(AbstractConnectProtocol.java:1018)
      	at org.mariadb.jdbc.internal.util.Utils.retrieveProxy(Utils.java:490)
      	at org.mariadb.jdbc.MariaDbConnection.newConnection(MariaDbConnection.java:144)
      	at org.mariadb.jdbc.Driver.connect(Driver.java:90)
      	at Main$.main(Main.scala:23)
      	at Main.main(Main.scala)
      	at com.oracle.svm.core.JavaMainWrapper.run(JavaMainWrapper.java:177)
      	at com.oracle.svm.core.code.CEntryPointCallStubs.com_002eoracle_002esvm_002ecore_002eJavaMainWrapper_002erun_0028int_002corg_002egraalvm_002enativeimage_002ec_002etype_002eCCharPointerPointer_0029(generated:0)
      Original exception that caused the problem: java.lang.NoClassDefFoundError: com/sun/jna/Platform
      	at org.mariadb.jdbc.internal.io.socket.UnixDomainSocket.<clinit>(UnixDomainSocket.java:70)
      	at sun.misc.Unsafe.ensureClassInitialized(Native Method)
      	at jdk.vm.ci.hotspot.HotSpotConstantPool.loadReferencedType(HotSpotConstantPool.java:699)
      	at com.oracle.graal.pointsto.infrastructure.WrappedConstantPool.loadReferencedType(WrappedConstantPool.java:60)
      	at org.graalvm.compiler.java.BytecodeParser.maybeEagerlyResolve(BytecodeParser.java:3971)
      	at com.oracle.svm.hosted.phases.SharedGraphBuilderPhase$SharedBytecodeParser.maybeEagerlyResolve(SharedGraphBuilderPhase.java:99)
      	at org.graalvm.compiler.java.BytecodeParser.lookupType(BytecodeParser.java:3918)
      	at com.oracle.svm.hosted.phases.SharedGraphBuilderPhase$SharedBytecodeParser.lookupType(SharedGraphBuilderPhase.java:218)
      	at org.graalvm.compiler.java.BytecodeParser.genNewInstance(BytecodeParser.java:4103)
      	at com.oracle.svm.hosted.phases.SharedGraphBuilderPhase$SharedBytecodeParser.genNewInstance(SharedGraphBuilderPhase.java:204)
      	at org.graalvm.compiler.java.BytecodeParser.processBytecode(BytecodeParser.java:4853)
      	at org.graalvm.compiler.java.BytecodeParser.iterateBytecodesForBlock(BytecodeParser.java:3135)
      	at org.graalvm.compiler.java.BytecodeParser.processBlock(BytecodeParser.java:2944)
      	at org.graalvm.compiler.java.BytecodeParser.build(BytecodeParser.java:888)
      	at org.graalvm.compiler.java.BytecodeParser.buildRootMethod(BytecodeParser.java:782)
      	at org.graalvm.compiler.java.GraphBuilderPhase$Instance.run(GraphBuilderPhase.java:95)
      	at org.graalvm.compiler.phases.Phase.run(Phase.java:49)
      	at org.graalvm.compiler.phases.BasePhase.apply(BasePhase.java:197)
      	at org.graalvm.compiler.phases.Phase.apply(Phase.java:42)
      	at org.graalvm.compiler.phases.Phase.apply(Phase.java:38)
      	at com.oracle.graal.pointsto.flow.MethodTypeFlowBuilder.parse(MethodTypeFlowBuilder.java:196)
      	at com.oracle.graal.pointsto.flow.MethodTypeFlowBuilder.apply(MethodTypeFlowBuilder.java:315)
      	at com.oracle.graal.pointsto.flow.MethodTypeFlow.doParse(MethodTypeFlow.java:310)
      	at com.oracle.graal.pointsto.flow.MethodTypeFlow.ensureParsed(MethodTypeFlow.java:300)
      	at com.oracle.graal.pointsto.flow.MethodTypeFlow.addContext(MethodTypeFlow.java:107)
      	at com.oracle.graal.pointsto.flow.StaticInvokeTypeFlow.update(InvokeTypeFlow.java:346)
      	at com.oracle.graal.pointsto.BigBang$2.run(BigBang.java:502)
      	at com.oracle.graal.pointsto.util.CompletionExecutor.lambda$execute$0(CompletionExecutor.java:174)
      	at java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1402)
      	at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
      	at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
      	at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
      	at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
      Caused by: java.lang.ClassNotFoundException: com.sun.jna.Platform
      	at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
      	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
      	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
      	... 33 more
      Error: Error loading a referenced type: java.lang.NoClassDefFoundError: waffle/windows/auth/impl/WindowsSecurityContextImpl
      Trace: 
      	at parsing org.mariadb.jdbc.internal.com.send.gssapi.WindowsNativeSspiAuthentication.authenticate(WindowsNativeSspiAuthentication.java:75)
      Call path from entry point to org.mariadb.jdbc.internal.com.send.gssapi.WindowsNativeSspiAuthentication.authenticate(PacketOutputStream, String, String): 
      	at org.mariadb.jdbc.internal.com.send.gssapi.WindowsNativeSspiAuthentication.authenticate(WindowsNativeSspiAuthentication.java:75)
      	at org.mariadb.jdbc.internal.com.send.SendGssApiAuthPacket.send(SendGssApiAuthPacket.java:92)
      	at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.authentication(AbstractConnectProtocol.java:773)
      	at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.handleConnectionPhases(AbstractConnectProtocol.java:713)
      	at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connect(AbstractConnectProtocol.java:402)
      	at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connectWithoutProxy(AbstractConnectProtocol.java:1018)
      	at org.mariadb.jdbc.internal.util.Utils.retrieveProxy(Utils.java:490)
      	at org.mariadb.jdbc.MariaDbConnection.newConnection(MariaDbConnection.java:144)
      	at org.mariadb.jdbc.Driver.connect(Driver.java:90)
      	at Main$.main(Main.scala:23)
      	at Main.main(Main.scala)
      	at com.oracle.svm.core.JavaMainWrapper.run(JavaMainWrapper.java:177)
      	at com.oracle.svm.core.code.CEntryPointCallStubs.com_002eoracle_002esvm_002ecore_002eJavaMainWrapper_002erun_0028int_002corg_002egraalvm_002enativeimage_002ec_002etype_002eCCharPointerPointer_0029(generated:0)
      Original exception that caused the problem: java.lang.NoClassDefFoundError: waffle/windows/auth/impl/WindowsSecurityContextImpl
      	at jdk.vm.ci.hotspot.CompilerToVM.resolveTypeInPool(Native Method)
      	at jdk.vm.ci.hotspot.HotSpotConstantPool.loadReferencedType(HotSpotConstantPool.java:696)
      	at com.oracle.graal.pointsto.infrastructure.WrappedConstantPool.loadReferencedType(WrappedConstantPool.java:60)
      	at org.graalvm.compiler.java.BytecodeParser.maybeEagerlyResolve(BytecodeParser.java:3971)
      	at com.oracle.svm.hosted.phases.SharedGraphBuilderPhase$SharedBytecodeParser.maybeEagerlyResolve(SharedGraphBuilderPhase.java:99)
      	at org.graalvm.compiler.java.BytecodeParser.lookupMethod(BytecodeParser.java:3925)
      	at org.graalvm.compiler.java.BytecodeParser.genInvokeStatic(BytecodeParser.java:1422)
      	at com.oracle.svm.hosted.phases.SharedGraphBuilderPhase$SharedBytecodeParser.genInvokeStatic(SharedGraphBuilderPhase.java:168)
      	at org.graalvm.compiler.java.BytecodeParser.processBytecode(BytecodeParser.java:4850)
      	at org.graalvm.compiler.java.BytecodeParser.iterateBytecodesForBlock(BytecodeParser.java:3135)
      	at org.graalvm.compiler.java.BytecodeParser.processBlock(BytecodeParser.java:2944)
      	at org.graalvm.compiler.java.BytecodeParser.build(BytecodeParser.java:888)
      	at org.graalvm.compiler.java.BytecodeParser.buildRootMethod(BytecodeParser.java:782)
      	at org.graalvm.compiler.java.GraphBuilderPhase$Instance.run(GraphBuilderPhase.java:95)
      	at org.graalvm.compiler.phases.Phase.run(Phase.java:49)
      	at org.graalvm.compiler.phases.BasePhase.apply(BasePhase.java:197)
      	at org.graalvm.compiler.phases.Phase.apply(Phase.java:42)
      	at org.graalvm.compiler.phases.Phase.apply(Phase.java:38)
      	at com.oracle.graal.pointsto.flow.MethodTypeFlowBuilder.parse(MethodTypeFlowBuilder.java:196)
      	at com.oracle.graal.pointsto.flow.MethodTypeFlowBuilder.apply(MethodTypeFlowBuilder.java:315)
      	at com.oracle.graal.pointsto.flow.MethodTypeFlow.doParse(MethodTypeFlow.java:310)
      	at com.oracle.graal.pointsto.flow.MethodTypeFlow.ensureParsed(MethodTypeFlow.java:300)
      	at com.oracle.graal.pointsto.flow.MethodTypeFlow.addContext(MethodTypeFlow.java:107)
      	at com.oracle.graal.pointsto.DefaultAnalysisPolicy$DefaultVirtualInvokeTypeFlow.onObservedUpdate(DefaultAnalysisPolicy.java:186)
      	at com.oracle.graal.pointsto.flow.TypeFlow.notifyObservers(TypeFlow.java:347)
      	at com.oracle.graal.pointsto.flow.TypeFlow.update(TypeFlow.java:389)
      	at com.oracle.graal.pointsto.BigBang$2.run(BigBang.java:502)
      	at com.oracle.graal.pointsto.util.CompletionExecutor.lambda$execute$0(CompletionExecutor.java:174)
      	at java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1402)
      	at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
      	at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
      	at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
      	at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
      Caused by: java.lang.ClassNotFoundException: waffle.windows.auth.impl.WindowsSecurityContextImpl
      	at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
      	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
      	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
      	... 33 more
      Error: com.oracle.graal.pointsto.constraints.UnsupportedFeatureException: Unsupported method java.security.ProtectionDomain.getCodeSource() is reachable: The declaring class of this element has been substituted, but this element is not present in the substitution class
      To diagnose the issue, you can add the option -H:+ReportUnsupportedElementsAtRuntime. The unsupported element is then reported at run time when it is accessed the first time.
      Trace: 
      	at parsing javax.security.auth.SubjectDomainCombiner.combine(SubjectDomainCombiner.java:249)
      Call path from entry point to javax.security.auth.SubjectDomainCombiner.combine(ProtectionDomain[], ProtectionDomain[]): 
      	at javax.security.auth.SubjectDomainCombiner.combine(SubjectDomainCombiner.java:164)
      	at java.security.AccessControlContext.optimize(AccessControlContext.java:608)
      	at java.security.ProtectionDomain$JavaSecurityAccessImpl.getCombinedACC(ProtectionDomain.java:91)
      	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
      	at javax.swing.RepaintManager.validateInvalidComponents(RepaintManager.java:708)
      	at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1731)
      	at com.oracle.svm.core.jdk.RuntimeSupport.executeHooks(RuntimeSupport.java:137)
      	at com.oracle.svm.core.jdk.RuntimeSupport.executeStartupHooks(RuntimeSupport.java:91)
      	at com.oracle.svm.core.JavaMainWrapper.run(JavaMainWrapper.java:170)
      	at com.oracle.svm.core.code.CEntryPointCallStubs.com_002eoracle_002esvm_002ecore_002eJavaMainWrapper_002erun_0028int_002corg_002egraalvm_002enativeimage_002ec_002etype_002eCCharPointerPointer_0029(generated:0)
      

      *Note*: The Graal compilation terminates on the first encountered error. Therefore there might be more problems that need to be addressed.

      *How can incompatibilities with Graal be fixed?*

      Here is a [blog post](https://medium.com/graalvm/instant-netty-startup-using-graalvm-native-image-generation-ed6f14ff7692) by the Graal team that explains how the native image tool is working and how they were able to compile a server built on top of netty into a binary.

      We ran this test with Graal `1.0.0-rc5`. The version of this library was `2.1.2`.

      Attachments

        Issue Links

          Activity

            People

              diego dupin Diego Dupin
              mavilein Marcus Böhm
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Git Integration

                  Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.