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

After sending kill signal to JVM JavaFX doesn't work properly

XMLWordPrintable

    • x86_64
    • linux_ubuntu

      ADDITIONAL SYSTEM INFORMATION :
      Java: 21.0.1; OpenJDK 64-Bit Server VM 21.0.1+12-29
      Runtime: OpenJDK Runtime Environment 21.0.1+12-29
      System: Linux version 5.11.0-38-generic running on amd64; UTF-8; en_US (nb)

      A DESCRIPTION OF THE PROBLEM :
      JavaFX stops working after JVM gets kill signal.

      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      As you see the MyApplication has a shutdownHook with 10 seconds thread sleeping. Run MyApplication. After that press CTRL+C to stop the program or kill -15 PID.

      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
      Program must work at least 10 seconds after JVM gets kill signal because Platform.exit() hasn't been called.
      ACTUAL -
      Program stops working immediately after JVM is getting kill signal. Besides there are a lot of exceptions:

      Exception in thread "JavaFX Application Thread" java.lang.NullPointerException: Cannot invoke "com.sun.prism.GraphicsPipeline.is3DSupported()" because the return value of "com.sun.prism.GraphicsPipeline.getPipeline()" is null
      at javafx.graphics@21.0.1/com.sun.javafx.tk.quantum.QuantumToolkit.isSupported(QuantumToolkit.java:1224)
      at javafx.graphics@21.0.1/com.sun.javafx.application.PlatformImpl.isSupportedImpl(PlatformImpl.java:1044)
      at javafx.graphics@21.0.1/com.sun.javafx.application.PlatformImpl.isSupported(PlatformImpl.java:655)
      at javafx.graphics@21.0.1/javafx.application.Platform.isSupported(Platform.java:268)
      at javafx.graphics@21.0.1/com.sun.javafx.scene.input.PickResultChooser.processOffer(PickResultChooser.java:182)
      at javafx.graphics@21.0.1/com.sun.javafx.scene.input.PickResultChooser.offer(PickResultChooser.java:143)
      at javafx.graphics@21.0.1/javafx.scene.Node.intersects(Node.java:5194)
      at javafx.graphics@21.0.1/javafx.scene.Node$1.intersects(Node.java:553)
      at javafx.graphics@21.0.1/com.sun.javafx.scene.NodeHelper.intersects(NodeHelper.java:260)
      at javafx.graphics@21.0.1/javafx.scene.layout.Region.doPickNodeLocal(Region.java:3173)
      at javafx.graphics@21.0.1/javafx.scene.layout.Region$1.doPickNodeLocal(Region.java:182)
      at javafx.graphics@21.0.1/com.sun.javafx.scene.layout.RegionHelper.pickNodeLocalImpl(RegionHelper.java:104)
      at javafx.graphics@21.0.1/com.sun.javafx.scene.NodeHelper.pickNodeLocal(NodeHelper.java:130)
      at javafx.graphics@21.0.1/javafx.scene.Node.pickNode(Node.java:5167)
      at javafx.graphics@21.0.1/javafx.scene.Scene$MouseHandler.pickNode(Scene.java:4127)
      at javafx.graphics@21.0.1/javafx.scene.Scene.pick(Scene.java:2070)
      at javafx.graphics@21.0.1/javafx.scene.Scene$MouseHandler.process(Scene.java:3937)
      at javafx.graphics@21.0.1/javafx.scene.Scene.processMouseEvent(Scene.java:1890)
      at javafx.graphics@21.0.1/javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2708)
      at javafx.graphics@21.0.1/com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:411)
      at javafx.graphics@21.0.1/com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:301)
      at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
      at javafx.graphics@21.0.1/com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$2(GlassViewEventHandler.java:450)
      at javafx.graphics@21.0.1/com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:424)
      at javafx.graphics@21.0.1/com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:449)
      at javafx.graphics@21.0.1/com.sun.glass.ui.View.handleMouseEvent(View.java:551)
      at javafx.graphics@21.0.1/com.sun.glass.ui.View.notifyMouse(View.java:937)
      at javafx.graphics@21.0.1/com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
      at javafx.graphics@21.0.1/com.sun.glass.ui.gtk.GtkApplication.lambda$runLoop$10(GtkApplication.java:263)
      at java.base/java.lang.Thread.run(Thread.java:1583)
      Exception in thread "JavaFX Application Thread" java.lang.NullPointerException: Cannot invoke "com.sun.prism.GraphicsPipeline.is3DSupported()" because the return value of "com.sun.prism.GraphicsPipeline.getPipeline()" is null
      at javafx.graphics@21.0.1/com.sun.javafx.tk.quantum.QuantumToolkit.isSupported(QuantumToolkit.java:1224)
      at javafx.graphics@21.0.1/com.sun.javafx.application.PlatformImpl.isSupportedImpl(PlatformImpl.java:1044)
      at javafx.graphics@21.0.1/com.sun.javafx.application.PlatformImpl.isSupported(PlatformImpl.java:655)
      at javafx.graphics@21.0.1/javafx.application.Platform.isSupported(Platform.java:268)
      at javafx.graphics@21.0.1/com.sun.javafx.scene.input.PickResultChooser.processOffer(PickResultChooser.java:182)
      at javafx.graphics@21.0.1/com.sun.javafx.scene.input.PickResultChooser.offer(PickResultChooser.java:143)
      at javafx.graphics@21.0.1/javafx.scene.Node.intersects(Node.java:5194)
      at javafx.graphics@21.0.1/javafx.scene.Node$1.intersects(Node.java:553)
      at javafx.graphics@21.0.1/com.sun.javafx.scene.NodeHelper.intersects(NodeHelper.java:260)
      at javafx.graphics@21.0.1/javafx.scene.layout.Region.doPickNodeLocal(Region.java:3173)
      at javafx.graphics@21.0.1/javafx.scene.layout.Region$1.doPickNodeLocal(Region.java:182)
      at javafx.graphics@21.0.1/com.sun.javafx.scene.layout.RegionHelper.pickNodeLocalImpl(RegionHelper.java:104)
      at javafx.graphics@21.0.1/com.sun.javafx.scene.NodeHelper.pickNodeLocal(NodeHelper.java:130)
      at javafx.graphics@21.0.1/javafx.scene.Node.pickNode(Node.java:5167)
      at javafx.graphics@21.0.1/javafx.scene.Scene$MouseHandler.pickNode(Scene.java:4127)
      at javafx.graphics@21.0.1/javafx.scene.Scene.pick(Scene.java:2070)
      at javafx.graphics@21.0.1/javafx.scene.Scene$MouseHandler.process(Scene.java:3937)
      at javafx.graphics@21.0.1/javafx.scene.Scene.processMouseEvent(Scene.java:1890)
      at javafx.graphics@21.0.1/javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2708)
      at javafx.graphics@21.0.1/com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:411)
      at javafx.graphics@21.0.1/com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:301)
      at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
      at javafx.graphics@21.0.1/com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$2(GlassViewEventHandler.java:450)
      at javafx.graphics@21.0.1/com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:424)
      at javafx.graphics@21.0.1/com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:449)
      at javafx.graphics@21.0.1/com.sun.glass.ui.View.handleMouseEvent(View.java:551)
      at javafx.graphics@21.0.1/com.sun.glass.ui.View.notifyMouse(View.java:937)
      at javafx.graphics@21.0.1/com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
      at javafx.graphics@21.0.1/com.sun.glass.ui.gtk.GtkApplication.lambda$runLoop$10(GtkApplication.java:263)
      at java.base/java.lang.Thread.run(Thread.java:1583)
      Exception in thread "JavaFX Application Thread" java.lang.NullPointerException: Cannot invoke "com.sun.prism.GraphicsPipeline.is3DSupported()" because the return value of "com.sun.prism.GraphicsPipeline.getPipeline()" is null
      at javafx.graphics@21.0.1/com.sun.javafx.tk.quantum.QuantumToolkit.isSupported(QuantumToolkit.java:1224)
      at javafx.graphics@21.0.1/com.sun.javafx.application.PlatformImpl.isSupportedImpl(PlatformImpl.java:1044)
      at javafx.graphics@21.0.1/com.sun.javafx.application.PlatformImpl.isSupported(PlatformImpl.java:655)
      at javafx.graphics@21.0.1/javafx.application.Platform.isSupported(Platform.java:268)
      at javafx.graphics@21.0.1/com.sun.javafx.scene.input.PickResultChooser.processOffer(PickResultChooser.java:182)
      at javafx.graphics@21.0.1/com.sun.javafx.scene.input.PickResultChooser.offer(PickResultChooser.java:143)
      at javafx.graphics@21.0.1/javafx.scene.Node.intersects(Node.java:5194)
      at javafx.graphics@21.0.1/javafx.scene.Node$1.intersects(Node.java:553)
      at javafx.graphics@21.0.1/com.sun.javafx.scene.NodeHelper.intersects(NodeHelper.java:260)
      at javafx.graphics@21.0.1/javafx.scene.layout.Region.doPickNodeLocal(Region.java:3173)
      at javafx.graphics@21.0.1/javafx.scene.layout.Region$1.doPickNodeLocal(Region.java:182)
      at javafx.graphics@21.0.1/com.sun.javafx.scene.layout.RegionHelper.pickNodeLocalImpl(RegionHelper.java:104)
      at javafx.graphics@21.0.1/com.sun.javafx.scene.NodeHelper.pickNodeLocal(NodeHelper.java:130)
      at javafx.graphics@21.0.1/javafx.scene.Node.pickNode(Node.java:5167)
      at javafx.graphics@21.0.1/javafx.scene.Scene$MouseHandler.pickNode(Scene.java:4127)
      at javafx.graphics@21.0.1/javafx.scene.Scene.pick(Scene.java:2070)
      at javafx.graphics@21.0.1/javafx.scene.Scene$MouseHandler.process(Scene.java:3937)
      at javafx.graphics@21.0.1/javafx.scene.Scene.processMouseEvent(Scene.java:1890)
      at javafx.graphics@21.0.1/javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2708)
      at javafx.graphics@21.0.1/com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:411)
      at javafx.graphics@21.0.1/com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:301)
      at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
      at javafx.graphics@21.0.1/com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$2(GlassViewEventHandler.java:450)
      at javafx.graphics@21.0.1/com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:424)
      at javafx.graphics@21.0.1/com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:449)
      at javafx.graphics@21.0.1/com.sun.glass.ui.View.handleMouseEvent(View.java:551)
      at javafx.graphics@21.0.1/com.sun.glass.ui.View.notifyMouse(View.java:937)
      at javafx.graphics@21.0.1/com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
      at javafx.graphics@21.0.1/com.sun.glass.ui.gtk.GtkApplication.lambda$runLoop$10(GtkApplication.java:263)
      at java.base/java.lang.Thread.run(Thread.java:1583)


      ---------- BEGIN SOURCE ----------
      public class MyApplication extends Application {

          public static void main(String[] args) {
              Runtime.getRuntime().addShutdownHook(new Thread() {
                  @Override
                  public void run() {
                      System.out.println("Point 1");
                      try {
                          Thread.sleep(10000);
                      } catch (Exception e) {
                          e.printStackTrace();
                      }
                      Platform.exit();
                      System.out.println("Point 2");
                  }
              });
              Application.launch(MyApplication.class);
          }

          @Override
          public void start(Stage stage) throws Exception {
              stage.setTitle("Hello World!");
              Button btn = new Button();
              btn.setText("Push Me");

              StackPane root = new StackPane();
              root.getChildren().add(btn);
              stage.setScene(new Scene(root, 600, 650));
              stage.show();
          }

      }

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

      FREQUENCY : always


        1. MyApplication.java
          1 kB
          Praveen Narayanaswamy

            kcr Kevin Rushforth
            webbuggrp Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated: