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

Using flexmark in a native image causes an ArrayIndexOutOfBoundsException #577

Open
palexdev opened this issue Jun 12, 2023 · 2 comments
Open

Comments

@palexdev
Copy link

I'm trying to build an app with JavaFX and markdown-javafx-renderer (which uses flexmark) using GraalVM. I can successfully build the image but at runtime the app crashes with the following exception:

[Mon Jun 12 12:49:19 CEST 2023][INFO] [SUB] Exception in thread "main" java.lang.RuntimeException: Exception in Application start method
[Mon Jun 12 12:49:19 CEST 2023][INFO] [SUB] 	at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:893)
[Mon Jun 12 12:49:19 CEST 2023][INFO] [SUB] 	at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195)
[Mon Jun 12 12:49:19 CEST 2023][INFO] [SUB] 	at java.lang.Thread.run(Thread.java:833)
[Mon Jun 12 12:49:19 CEST 2023][INFO] [SUB] 	at com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:704)
[Mon Jun 12 12:49:19 CEST 2023][INFO] [SUB] 	at com.oracle.svm.core.posix.thread.PosixPlatformThreads.pthreadStartRoutine(PosixPlatformThreads.java:202)
[Mon Jun 12 12:49:19 CEST 2023][INFO] [SUB] Caused by: java.lang.ExceptionInInitializerError
[Mon Jun 12 12:49:19 CEST 2023][INFO] [SUB] 	at com.vladsch.flexmark.util.sequence.builder.SequenceBuilder.<init>(SequenceBuilder.java:42)
[Mon Jun 12 12:49:19 CEST 2023][INFO] [SUB] 	at com.vladsch.flexmark.util.sequence.builder.SequenceBuilder.<init>(SequenceBuilder.java:35)
[Mon Jun 12 12:49:19 CEST 2023][INFO] [SUB] 	at com.vladsch.flexmark.util.sequence.builder.SequenceBuilder.emptyBuilder(SequenceBuilder.java:371)
[Mon Jun 12 12:49:19 CEST 2023][INFO] [SUB] 	at com.vladsch.flexmark.util.sequence.BasedSequenceImpl.getBuilder(BasedSequenceImpl.java:52)
[Mon Jun 12 12:49:19 CEST 2023][INFO] [SUB] 	at com.vladsch.flexmark.util.sequence.SegmentedSequence.create(SegmentedSequence.java:135)
[Mon Jun 12 12:49:19 CEST 2023][INFO] [SUB] 	at com.vladsch.flexmark.parser.LightInlineParserImpl.flushTextNode(LightInlineParserImpl.java:143)
[Mon Jun 12 12:49:19 CEST 2023][INFO] [SUB] 	at com.vladsch.flexmark.parser.internal.InlineParserImpl.parse(InlineParserImpl.java:173)
[Mon Jun 12 12:49:19 CEST 2023][INFO] [SUB] 	at com.vladsch.flexmark.parser.core.HeadingParser.parseInlines(HeadingParser.java:62)
[Mon Jun 12 12:49:19 CEST 2023][INFO] [SUB] 	at com.vladsch.flexmark.parser.internal.DocumentParser.processInlines(DocumentParser.java:750)
[Mon Jun 12 12:49:19 CEST 2023][INFO] [SUB] 	at com.vladsch.flexmark.parser.internal.DocumentParser.finalizeAndProcess(DocumentParser.java:1005)
[Mon Jun 12 12:49:19 CEST 2023][INFO] [SUB] 	at com.vladsch.flexmark.parser.internal.DocumentParser.parse(DocumentParser.java:312)
[Mon Jun 12 12:49:19 CEST 2023][INFO] [SUB] 	at com.vladsch.flexmark.parser.Parser.parse(Parser.java:388)
[Mon Jun 12 12:49:19 CEST 2023][INFO] [SUB] 	at com.sandec.mdfx.impl.MDFXNodeHelper.<init>(MDFXNodeHelper.java:84)
[Mon Jun 12 12:49:19 CEST 2023][INFO] [SUB] 	at com.sandec.mdfx.MarkdownView.updateContent(MarkdownView.java:33)
[Mon Jun 12 12:49:19 CEST 2023][INFO] [SUB] 	at com.sandec.mdfx.MarkdownView.<init>(MarkdownView.java:22)
[Mon Jun 12 12:49:19 CEST 2023][INFO] [SUB] 	at io.github.palexdev.reproducer.view.View.buildRoot(View.java:26)
[Mon Jun 12 12:49:19 CEST 2023][INFO] [SUB] 	at io.github.palexdev.reproducer.view.View.init(View.java:36)
[Mon Jun 12 12:49:19 CEST 2023][INFO] [SUB] 	at io.github.palexdev.reproducer.Reproducer.start(Reproducer.java:13)
[Mon Jun 12 12:49:19 CEST 2023][INFO] [SUB] 	at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(LauncherImpl.java:839)
[Mon Jun 12 12:49:19 CEST 2023][INFO] [SUB] 	at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$12(PlatformImpl.java:483)
[Mon Jun 12 12:49:19 CEST 2023][INFO] [SUB] 	at com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:456)
[Mon Jun 12 12:49:19 CEST 2023][INFO] [SUB] 	at java.security.AccessController.executePrivileged(AccessController.java:169)
[Mon Jun 12 12:49:19 CEST 2023][INFO] [SUB] 	at java.security.AccessController.doPrivileged(AccessController.java:399)
[Mon Jun 12 12:49:19 CEST 2023][INFO] [SUB] 	at com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:455)
[Mon Jun 12 12:49:19 CEST 2023][INFO] [SUB] 	at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
[Mon Jun 12 12:49:19 CEST 2023][INFO] [SUB] 	at com.oracle.svm.jni.JNIJavaCallWrappers.jniInvoke_VA_LIST_Runnable_run_16403f8d32adb631126daa893e5e80085c5d6325(JNIJavaCallWrappers.java:0)
[Mon Jun 12 12:49:19 CEST 2023][INFO] [SUB] 	at com.sun.glass.ui.gtk.GtkApplication._runLoop(GtkApplication.java)
[Mon Jun 12 12:49:19 CEST 2023][INFO] [SUB] 	at com.sun.glass.ui.gtk.GtkApplication.lambda$runLoop$11(GtkApplication.java:316)
[Mon Jun 12 12:49:19 CEST 2023][INFO] [SUB] 	... 3 more
[Mon Jun 12 12:49:19 CEST 2023][INFO] [SUB] Caused by: java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0
[Mon Jun 12 12:49:19 CEST 2023][INFO] [SUB] 	at com.vladsch.flexmark.util.misc.BitFieldSet.intMask(BitFieldSet.java:304)
[Mon Jun 12 12:49:19 CEST 2023][INFO] [SUB] 	at com.vladsch.flexmark.util.sequence.builder.ISegmentBuilder.<clinit>(ISegmentBuilder.java:19)
[Mon Jun 12 12:49:19 CEST 2023][INFO] [SUB] 	... 31 more

To Reproduce

Here's the Reproducer project I'm using: Reproducer.zip

Steps to reproduce:

  1. Execute the nativeBuild Gradle task
  2. Execute the nativeRun Gradle task
palexdev added a commit to palexdev/flexmark-java that referenced this issue Jun 12, 2023
Signed-off-by: palexdev <alessandro.parisi406@gmail.com>
@just-sultanov
Copy link

Hi there!
Thanks for the flexmark-java library 👍

Are there any plans for compatibility with graalvm (native image)?

@fbricon
Copy link

fbricon commented Nov 17, 2023

I'm hitting a somewhat similar error in a binary built with GraalVM:

Caused by: java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0
	at com.vladsch.flexmark.util.misc.BitFieldSet.add(BitFieldSet.java:659)
	at com.vladsch.flexmark.util.misc.BitFieldSet.of(BitFieldSet.java:1204)
	at com.vladsch.flexmark.util.sequence.LineAppendable.<clinit>(LineAppendable.java:48)

I tried #578 and I confirm it fixes my issue. Any chance we can get a release with that fix any time soon?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants