Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8341458

JVM crashes on JavaFX application start, occasionally during runtime

XMLWordPrintable

    • generic
    • generic

      ADDITIONAL SYSTEM INFORMATION :
      Host: Intel(R) Core(TM) i7-10700F CPU @ 2.90GHz, 16 cores, 31G, ALT Workstation K 10.4 (Sorbaronia Mitschurinii)

      JRE version: OpenJDK Runtime Environment (23.0+37) (build 23+37-2369)

      Java VM: OpenJDK 64-Bit Server VM (23+37-2369, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, linux-amd64)

      A DESCRIPTION OF THE PROBLEM :
      Occasionally, JVM crashes on startup or during runtime.

      REGRESSION : Last worked in version 22.0.2

      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      1. Create basic maven project from given sources.
      Set JAVA_HOME to 23.

      2. build:
      mvn clean verify jpackage:jpackage

      3. Run multiple times (press button on dialog to let the app finish)

      ./target/dist/bugreport/bin/bugreport

      It may take from 5 to 20 attempts to crash, experience may vary.

      I've tried to use JavaFX 22.0.2, got same issue, does not seem to be FX specific.
      Could not reproduce on OpenJDK 22.0.2.

      ACTUAL -
      Application crashes

      ---------- BEGIN SOURCE ----------
      Main.java
      ========
      package bugreport;

      import javafx.application.Application;
      import javafx.scene.Scene;
      import javafx.scene.control.*;
      import javafx.stage.Stage;

      import java.util.ArrayList;
      import java.util.List;
      import java.util.UUID;

      class MainDialog extends Dialog {
          public MainDialog() {
              getDialogPane().setContent(new TextField());
              getDialogPane().getButtonTypes().add(ButtonType.CLOSE);
          }
      }

      public class Main extends Application {
          private List<String> list = new ArrayList<>();

          @Override
          public void start(Stage stage) throws Exception {
              for (var i = 0; i < 100000; i++) {
                  list.add(UUID.randomUUID().toString());
              }

              var scene = new Scene(new Label("Label"));
              stage.setScene(scene);
              stage.show();
              new MainDialog().showAndWait();
              System.exit(0);
          }

          public static void main(String[] args) {
              launch(args);
          }
      }

      ===
      module-info.java
      ===

      open module bugreport {
          requires javafx.controls;
          exports bugreport;
      }

      ===
      pom.xml
      ===

      <?xml version="1.0" encoding="UTF-8"?>
      <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
          <modelVersion>4.0.0</modelVersion>

          <groupId>org.panteleyev</groupId>
          <artifactId>bugreport</artifactId>
          <version>1.0.0</version>
          <packaging>jar</packaging>
          <name>Bug report</name>

          <properties>
              <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
              <maven.compiler.release>23</maven.compiler.release>
              <appModule>bugreport</appModule>
              <appMainClass>bugreport.Main</appMainClass>
              <!-- Plugins -->
              <mavenResourcePluginVersion>3.3.1</mavenResourcePluginVersion>
              <mavenCompilerPluginVersion>3.13.0</mavenCompilerPluginVersion>
              <mavenJarPluginVersion>3.4.1</mavenJarPluginVersion>
              <mavenDependencyPluginVersion>3.6.1</mavenDependencyPluginVersion>
              <jpackageMavenPluginVersion>1.6.4</jpackageMavenPluginVersion>
              <!-- Dependencies -->
              <javaFxVersion>23</javaFxVersion>
          </properties>

          <dependencies>
              <dependency>
                  <groupId>org.openjfx</groupId>
                  <artifactId>javafx-controls</artifactId>
                  <version>${javaFxVersion}</version>
              </dependency>
          </dependencies>

          <build>
              <plugins>
                  <plugin>
                      <groupId>org.apache.maven.plugins</groupId>
                      <artifactId>maven-compiler-plugin</artifactId>
                      <version>${mavenCompilerPluginVersion}</version>
                  </plugin>
                  <plugin>
                      <groupId>org.apache.maven.plugins</groupId>
                      <artifactId>maven-jar-plugin</artifactId>
                      <version>${mavenJarPluginVersion}</version>
                      <configuration>
                          <outputDirectory>target/jmods</outputDirectory>
                          <archive>
                              <manifestEntries>
                                  <Main-Class>${appMainClass}</Main-Class>
                              </manifestEntries>
                          </archive>
                      </configuration>
                  </plugin>
                  <plugin>
                      <groupId>org.apache.maven.plugins</groupId>
                      <artifactId>maven-dependency-plugin</artifactId>
                      <version>${mavenDependencyPluginVersion}</version>
                      <executions>
                          <execution>
                              <id>copy-dependencies</id>
                              <phase>package</phase>
                              <goals>
                                  <goal>copy-dependencies</goal>
                              </goals>
                              <configuration>
                                  <includeScope>compile</includeScope>
                                  <includeScope>runtime</includeScope>
                                  <outputDirectory>target/jmods</outputDirectory>
                              </configuration>
                          </execution>
                      </executions>
                  </plugin>
                  <plugin>
                      <groupId>org.panteleyev</groupId>
                      <artifactId>jpackage-maven-plugin</artifactId>
                      <version>${jpackageMavenPluginVersion}</version>

                      <configuration>
                          <type>APP_IMAGE</type>
                          <name>bugreport</name>
                          <runtimeImage>${java.home}</runtimeImage>
                          <appVersion>${project.version}</appVersion>
                          <module>${appModule}/${appMainClass}</module>
                          <modulePaths>
                              <modulePath>target/jmods</modulePath>
                          </modulePaths>
                          <destination>target/dist</destination>
                      </configuration>
                  </plugin>
              </plugins>
          </build>
      </project>




      ---------- END SOURCE ----------

      CUSTOMER SUBMITTED WORKAROUND :
      Switch back to 22.0.2, it does not reproduce there.

      FREQUENCY : occasionally


            Unassigned Unassigned
            webbuggrp Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            6 Start watching this issue

              Created:
              Updated:
              Resolved: