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

Print job fails with Cocoa AWT error

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Duplicate
    • Icon: P3 P3
    • None
    • 8u11
    • client-libs
    • 2d
    • x86
    • os_x

      FULL PRODUCT VERSION :
      jdk 1.8.0_11

      ADDITIONAL OS VERSION INFORMATION :
      Mac OS 10.9 Mavericks

      EXTRA RELEVANT SYSTEM CONFIGURATION :
      Java 8 was installed
      Running from a bundled Mac Application (bundled with appbundler.jar)

      A DESCRIPTION OF THE PROBLEM :
      I want to print out a picture from a local file to a local printer. The below test case runs fine on previous releases of Mac OS X Port of Java, for instance Java 7 from the 10.8 Mac OS.


      REGRESSION. Last worked in version 8u11

      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      Trying to print from buffered graphics, like a picture got from a local file.

      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
      The printjob is supposed to print one page with the picture on it.
      ACTUAL -
      The program crashes with a JVM Fatal error detailed below.
      It turns out that the AWT thread was not invoked by the CPrinter job.

      ERROR MESSAGES/STACK TRACES THAT OCCUR :
      FATAL ERROR in native method: Using JNIEnv in the wrong thread
      2014-07-22 19:31:22.089 java[2306:a643] Cocoa AWT: Not running on AppKit thread 0 when expected. (
          0 libosxapp.dylib 0x00000001205c1782 +[ThreadUtilities getJNIEnv] + 38
          1 libawt_lwawt.dylib 0x0000000120e35567 syncFromJavaPixels + 1842
          2 libawt_lwawt.dylib 0x0000000120e359fb LockImage + 75
          3 libawt_lwawt.dylib 0x0000000120e48127 Java_sun_java2d_CRenderer_doImage + 170
          at sun.java2d.CRenderer.doImage(Native Method)
          at sun.java2d.OSXSurfaceData.blitImage(OSXSurfaceData.java:1027)
          4 ??? 0x0000000109a2ab9e 0x0 + 4456623006
          5 ??? 0x0000000109a16360 0x0 + 4456538976
      )
          - locked <0x000000079adebdd0> (a java.lang.Object)
      2014-07-22 19:31:22.089 java[2306:a643] Please file a bug report at http://java.net/jira/browse/MACOSX_PORT with this message and a reproducible test case.
          at sun.java2d.CRenderer.blitImage(CRenderer.java:461)
          at sun.java2d.CRenderer.copyImage(CRenderer.java:474)
          at sun.java2d.CRenderer.copyImage(CRenderer.java:533)
          at sun.java2d.pipe.ValidatePipe.copyImage(ValidatePipe.java:186)
          at sun.java2d.SunGraphics2D.drawImage(SunGraphics2D.java:3194)
          at sun.java2d.SunGraphics2D.drawImage(SunGraphics2D.java:3321)
          at sun.java2d.SunGraphics2D.drawRenderedImage(SunGraphics2D.java:2627)
          at sun.print.ProxyGraphics2D.drawRenderedImage(ProxyGraphics2D.java:1202)
          at net.sf.jiga.xtended.impl.Sprite.__draw0(Sprite.java:1913)
          at net.sf.jiga.xtended.impl.Sprite.__draw(Sprite.java:1828)
          - locked <0x0000000796dd2630> (a net.sf.jiga.xtended.kernel.Monitor)
          - locked <0x0000000796dd25c0> (a net.sf.jiga.xtended.kernel.Monitor)
          at net.sf.jiga.xtended.impl.Sprite.draw(Sprite.java:3488)
          at jxa.IMCBrowser$48$2.print(IMCBrowser.java:4063)
          at sun.lwawt.macosx.CPrinterJob$4.run(CPrinterJob.java:634)
          at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:301)
          at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:744)
          at java.awt.EventQueue.access$400(EventQueue.java:97)
          at java.awt.EventQueue$3.run(EventQueue.java:697)
          at java.awt.EventQueue$3.run(EventQueue.java:691)
          at java.security.AccessController.doPrivileged(Native Method)
          at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
          at java.awt.EventQueue.dispatchEvent(EventQueue.java:714)
          at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
          at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
          at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
          at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
          at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
          at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:182)
          at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:229)
          at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:227)
          at java.security.AccessController.doPrivileged(Native Method)
          at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:227)
          at sun.lwawt.macosx.CPrinterJob.print(CPrinterJob.java:287)
          at sun.print.RasterPrinterJob.print(RasterPrinterJob.java:1323)
          at jxa.IMCBrowser$48.actionPerformed(IMCBrowser.java:4080)
          at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
          at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2346)
          at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
          at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
          at javax.swing.AbstractButton.doClick(AbstractButton.java:376)
          at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:833)
          at com.apple.laf.AquaMenuItemUI.doClick(AquaMenuItemUI.java:157)
          at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:877)
          at java.awt.Component.processMouseEvent(Component.java:6527)
          at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
          at java.awt.Component.processEvent(Component.java:6292)
          at java.awt.Container.processEvent(Container.java:2234)
          at java.awt.Component.dispatchEventImpl(Component.java:4883)
          at java.awt.Container.dispatchEventImpl(Container.java:2292)
          at java.awt.Component.dispatchEvent(Component.java:4705)
          at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898)
          at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533)
          at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462)
          at java.awt.Container.dispatchEventImpl(Container.java:2278)
          at java.awt.Window.dispatchEventImpl(Window.java:2739)
          at java.awt.Component.dispatchEvent(Component.java:4705)
          at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:746)
          at java.awt.EventQueue.access$400(EventQueue.java:97)
          at java.awt.EventQueue$3.run(EventQueue.java:697)
          at java.awt.EventQueue$3.run(EventQueue.java:691)
          at java.security.AccessController.doPrivileged(Native Method)
          at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
          at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
          at java.awt.EventQueue$4.run(EventQueue.java:719)
          at java.awt.EventQueue$4.run(EventQueue.java:717)
          at java.security.AccessController.doPrivileged(Native Method)
          at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
          at java.awt.EventQueue.dispatchEvent(EventQueue.java:716)
          at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
          at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
          at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
          at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
          at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
          at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
      Java Result: 134

      REPRODUCIBILITY :
      This bug can be reproduced always.

      ---------- BEGIN SOURCE ----------
       Printable printable = new Printable() {
                                          public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException {
                                              if (pageIndex > 0) {
                                                  return Printable.NO_SUCH_PAGE;
                                              }
                    
      /* draw some picture */
                                              BufferedImage img = ImageIO.read(new File("graphic.png"));
                                              Rectangle paperBounds = new Rectangle((int) pageFormat.getImageableX(), (int) pageFormat.getImageableY(), (int) pageFormat.getImageableWidth(), (int) pageFormat.getImageableHeight());
                                               double scaleFitPaper = Math.max(paperBounds.getWidth() / (double) sp.getWidth(), paperBounds.getHeight() / (double) sp.getHeight());
                                              g.translate(Math.round((float) paperBounds.getCenterX() - img.getWidth() / 2f),
                                              Math.round((float) paperBounds.getCenterY() - img.getHeight() / 2f));
                                              int scaleX = (int) (img.getWidth() * scaleFitPaper);
                                              int scaleY = (int) (img.getHeight() * scaleFitPaper);
                                              Image image = img.getScaledInstance(scaleX, scaleY, Image.SCALE_SMOOTH);
                                              BufferedImage picture = new BufferedImage(scaleX, scaleY, TYPE);
                                              picture.getGraphics().drawImage(image, 0, 0 , null);
                                              Graphics2D g = (Graphics2D)graphics;
                                              g.drawRenderedImage(picture, null);
                                              g.dispose();
                                              return Printable.PAGE_EXISTS;
                                          }
                                      };
                                      jobs.add(printable);
                                  }
                              }
                          }
      /* print */
                                  pj.setPrintable(job, pjFormat);
                                  pj.print();
      ---------- END SOURCE ----------

      CUSTOMER SUBMITTED WORKAROUND :
      None found yet.

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

              Created:
              Updated:
              Resolved: