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

Class cast exception in MTLVolatileSurfaceManager.initAcceleratedSurface

XMLWordPrintable

    • 2d
    • generic
    • os_x

      ADDITIONAL SYSTEM INFORMATION :
      M1 Pro / Sonoma 14.5/ Java 21.0.5

      A DESCRIPTION OF THE PROBLEM :
      When I close my Mac, esp. for a longer time and the Mac goes into sleep mode. When it is reactivated the following exception is displayed:

      2024-12-09 19:04:51,876 ERROR [AWT-EventQueue-0] net.astah.jomt.jview.ck - error has occurred.
      java.lang.ClassCastException: class sun.java2d.opengl.CGLGraphicsConfig cannot be cast to class sun.java2d.metal.MTLGraphicsConfig (sun.java2d.opengl.CGLGraphicsConfig and sun.java2d.metal.MTLGraphicsConfig are in module java.desktop of loader 'bootstrap')
      at java.desktop/sun.java2d.metal.MTLVolatileSurfaceManager.initAcceleratedSurface(Unknown Source)
      at java.desktop/sun.awt.image.VolatileSurfaceManager.initialize(Unknown Source)
      at java.desktop/sun.awt.image.SunVolatileImage.<init>(Unknown Source)
      at java.desktop/sun.awt.image.SunVolatileImage.<init>(Unknown Source)
      at java.desktop/java.awt.GraphicsConfiguration.createCompatibleVolatileImage(Unknown Source)
      at java.desktop/java.awt.GraphicsConfiguration.createCompatibleVolatileImage(Unknown Source)
      at java.desktop/javax.swing.RepaintManager.getVolatileOffscreenBuffer(Unknown Source)
      at java.desktop/javax.swing.RepaintManager$PaintManager.paint(Unknown Source)
      at java.desktop/javax.swing.RepaintManager.paint(Unknown Source)
      at java.desktop/javax.swing.JComponent.paint(Unknown Source)
      at java.desktop/java.awt.GraphicsCallback$PaintCallback.run(Unknown Source)
      at java.desktop/sun.awt.SunGraphicsCallback.runOneComponent(Unknown Source)
      at java.desktop/sun.awt.SunGraphicsCallback.runComponents(Unknown Source)
      at java.desktop/java.awt.Container.paint(Unknown Source)
      at java.desktop/java.awt.Window.paint(Unknown Source)
      at java.desktop/javax.swing.RepaintManager$4.run(Unknown Source)
      at java.desktop/javax.swing.RepaintManager$4.run(Unknown Source)
      at java.base/java.security.AccessController.doPrivileged(Unknown Source)
      at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
      at java.desktop/javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
      at java.desktop/javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
      at java.desktop/javax.swing.RepaintManager.prePaintDirtyRegions(Unknown Source)
      at java.desktop/javax.swing.RepaintManager$ProcessingRunnable.run(Unknown Source)
      at java.desktop/java.awt.event.InvocationEvent.dispatch(Unknown Source)
      at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
      at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
      at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
      at java.base/java.security.AccessController.doPrivileged(Unknown Source)
      at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
      at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
      at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
      at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
      at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
      at java.desktop/java.awt.WaitDispatchSupport$2.run(Unknown Source)
      at java.desktop/java.awt.WaitDispatchSupport$4.run(Unknown Source)
      at java.desktop/java.awt.WaitDispatchSupport$4.run(Unknown Source)
      at java.base/java.security.AccessController.doPrivileged(Unknown Source)
      at java.desktop/java.awt.WaitDispatchSupport.enter(Unknown Source)
      at java.desktop/java.awt.Dialog.show(Unknown Source)
      at java.desktop/java.awt.Component.show(Unknown Source)
      at java.desktop/java.awt.Component.setVisible(Unknown Source)
      at java.desktop/java.awt.Window.setVisible(Unknown Source)
      at java.desktop/java.awt.Dialog.setVisible(Unknown Source)
      at net.astah.jomt.jview.aI.a(X:226)
      at net.astah.jomt.jview.aI.a(X:100)
      at net.astah.jomt.jview.cm.run(X:46)
      at java.desktop/java.awt.event.InvocationEvent.dispatch(Unknown Source)
      at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
      at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
      at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
      at java.base/java.security.AccessController.doPrivileged(Unknown Source)
      at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
      at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
      at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
      at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
      at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
      at java.desktop/java.awt.WaitDispatchSupport$2.run(Unknown Source)
      at java.desktop/java.awt.WaitDispatchSupport$4.run(Unknown Source)
      at java.desktop/java.awt.WaitDispatchSupport$4.run(Unknown Source)




      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      Start Astah SysML (astah.net) on MacOS. Close the mac for a longer time so that Mac goes to sleep mode while Astah is running. Reactivate, login. When switching to Astah, this is the message we receive very often.

      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
      No exception should be displayed.
      ACTUAL -
      Exception is displayed:

      2024-12-09 19:04:51,876 ERROR [AWT-EventQueue-0] net.astah.jomt.jview.ck - error has occurred.
      java.lang.ClassCastException: class sun.java2d.opengl.CGLGraphicsConfig cannot be cast to class sun.java2d.metal.MTLGraphicsConfig (sun.java2d.opengl.CGLGraphicsConfig and sun.java2d.metal.MTLGraphicsConfig are in module java.desktop of loader 'bootstrap')
      at java.desktop/sun.java2d.metal.MTLVolatileSurfaceManager.initAcceleratedSurface(Unknown Source)
      at java.desktop/sun.awt.image.VolatileSurfaceManager.initialize(Unknown Source)
      at java.desktop/sun.awt.image.SunVolatileImage.<init>(Unknown Source)
      at java.desktop/sun.awt.image.SunVolatileImage.<init>(Unknown Source)
      at java.desktop/java.awt.GraphicsConfiguration.createCompatibleVolatileImage(Unknown Source)
      at java.desktop/java.awt.GraphicsConfiguration.createCompatibleVolatileImage(Unknown Source)
      at java.desktop/javax.swing.RepaintManager.getVolatileOffscreenBuffer(Unknown Source)
      at java.desktop/javax.swing.RepaintManager$PaintManager.paint(Unknown Source)
      at java.desktop/javax.swing.RepaintManager.paint(Unknown Source)
      at java.desktop/javax.swing.JComponent.paint(Unknown Source)
      at java.desktop/java.awt.GraphicsCallback$PaintCallback.run(Unknown Source)
      at java.desktop/sun.awt.SunGraphicsCallback.runOneComponent(Unknown Source)
      at java.desktop/sun.awt.SunGraphicsCallback.runComponents(Unknown Source)
      at java.desktop/java.awt.Container.paint(Unknown Source)
      at java.desktop/java.awt.Window.paint(Unknown Source)
      at java.desktop/javax.swing.RepaintManager$4.run(Unknown Source)
      at java.desktop/javax.swing.RepaintManager$4.run(Unknown Source)
      at java.base/java.security.AccessController.doPrivileged(Unknown Source)
      at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
      at java.desktop/javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
      at java.desktop/javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
      at java.desktop/javax.swing.RepaintManager.prePaintDirtyRegions(Unknown Source)
      at java.desktop/javax.swing.RepaintManager$ProcessingRunnable.run(Unknown Source)
      at java.desktop/java.awt.event.InvocationEvent.dispatch(Unknown Source)
      at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
      at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
      at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
      at java.base/java.security.AccessController.doPrivileged(Unknown Source)
      at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
      at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
      at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
      at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
      at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
      at java.desktop/java.awt.WaitDispatchSupport$2.run(Unknown Source)
      at java.desktop/java.awt.WaitDispatchSupport$4.run(Unknown Source)
      at java.desktop/java.awt.WaitDispatchSupport$4.run(Unknown Source)
      at java.base/java.security.AccessController.doPrivileged(Unknown Source)
      at java.desktop/java.awt.WaitDispatchSupport.enter(Unknown Source)
      at java.desktop/java.awt.Dialog.show(Unknown Source)
      at java.desktop/java.awt.Component.show(Unknown Source)
      at java.desktop/java.awt.Component.setVisible(Unknown Source)
      at java.desktop/java.awt.Window.setVisible(Unknown Source)
      at java.desktop/java.awt.Dialog.setVisible(Unknown Source)
      at net.astah.jomt.jview.aI.a(X:226)
      at net.astah.jomt.jview.aI.a(X:100)
      at net.astah.jomt.jview.cm.run(X:46)
      at java.desktop/java.awt.event.InvocationEvent.dispatch(Unknown Source)
      at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
      at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
      at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
      at java.base/java.security.AccessController.doPrivileged(Unknown Source)
      at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
      at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
      at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
      at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
      at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
      at java.desktop/java.awt.WaitDispatchSupport$2.run(Unknown Source)
      at java.desktop/java.awt.WaitDispatchSupport$4.run(Unknown Source)
      at java.desktop/java.awt.WaitDispatchSupport$4.run(Unknown Source)


      CUSTOMER SUBMITTED WORKAROUND :
      We are experimenting with -Dsun.java2d.metal=false

      FREQUENCY : often


            prr Philip Race
            webbuggrp Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

              Created:
              Updated: