2 Replies Latest reply: Jul 24, 2013 4:08 AM by 52d8e652-f9f5-4e62-8bde-4cb3639c5811 RSS

    Java 1.7 update 21 32-bit crashes in fontmanager.dll+0xd1a9

      Some of our users tell us that our application cannot start after updating Java from 7u17 to 7u21. We have already submitted a bug 2 weeks ago (#9001750) but still have no response ('bug is not available'), and no workaround. For now we cannot reproduce this error on our computers but users continue to report it. Reverting JRE to 7u17 fixes the problem. 64-bit JRE 7u21 also works but I not sure that for all users (and some users have 32-bit OS, of course).

      Our app creates TextLayouts with all fonts available in system for creating font selector JComboBox with cached redrawing. We suppose some font cause crash when opening. Currently I cannot say the font(s) name. I know that the problem appears only on some computers.

      I hope there is enough information to localize the error, see also a bug submitted.
      From crash report (OS: Windows 7 Build 7601 Service Pack 1):

      # A fatal error has been detected by the Java Runtime Environment:
      # EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x679bd1a9, pid=744, tid=7440
      # JRE version: 7.0_21-b11
      # Java VM: Java HotSpot(TM) Client VM (23.21-b01 mixed mode, sharing windows-x86 )
      # Problematic frame:
      # C [fontmanager.dll+0xd1a9] Java_sun_font_FileFontStrike__1getGlyphImageFromWindows+0x9eee

      Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
      C [fontmanager.dll+0xd1a9] Java_sun_font_FileFontStrike__1getGlyphImageFromWindows+0x9eee

      Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
      j sun.font.SunLayoutEngine.nativeLayout(Lsun/font/Font2D;Lsun/font/FontStrike;[FII[CIIIIIIILjava/awt/geom/Point2D$Float;Lsun/font/GlyphLayout$GVData;JJ)V+0
      j sun.font.SunLayoutEngine.layout(Lsun/font/FontStrikeDesc;[FIILsun/font/TextRecord;ILjava/awt/geom/Point2D$Float;Lsun/font/GlyphLayout$GVData;)V+98
      j sun.font.GlyphLayout$EngineRecord.layout()V+95
      j sun.font.GlyphLayout.layout(Ljava/awt/Font;Ljava/awt/font/FontRenderContext;[CIIILsun/font/StandardGlyphVector;)Lsun/font/StandardGlyphVector;+541
      j sun.font.ExtendedTextSourceLabel.createGV()Lsun/font/StandardGlyphVector;+63
      j sun.font.ExtendedTextSourceLabel.getGV()Lsun/font/StandardGlyphVector;+9
      j sun.font.ExtendedTextSourceLabel.createLogicalBounds()Ljava/awt/geom/Rectangle2D;+1
      j sun.font.ExtendedTextSourceLabel.getAdvance()F+9
      j java.awt.font.TextLine.init()V+609
      j java.awt.font.TextLine.<init>(Ljava/awt/font/FontRenderContext;[Lsun/font/TextLineComponent;[F[CII[I[BZ)V+79
      j java.awt.font.TextLine.fastCreateTextLine(Ljava/awt/font/FontRenderContext;[CLjava/awt/Font;Lsun/font/CoreMetrics;Ljava/util/Map;)Ljava/awt/font/TextLine;+337
      j java.awt.font.TextLayout.fastInit([CLjava/awt/Font;Ljava/util/Map;Ljava/awt/font/FontRenderContext;)V+83
      j java.awt.font.TextLayout.<init>(Ljava/lang/String;Ljava/awt/Font;Ljava/awt/font/FontRenderContext;)V+124
        • 1. Re: Java 1.7 update 21 32-bit crashes in fontmanager.dll+0xd1a9
          Hi again, I have some new details on that bug.
          JVM crash appears when creating TextLayout with Calibri Light font. Only this font. We have reproduced the bug after installing MS Office 2013 with this new font.
          Moreover, 6.0_45 is also affected. Graphics2D.drawString seems working but not sure.

          By the way, Calibri font is not rendered with TextLayout at all (white space, no shapes) but drawString works.

          Edited by: Electriq on 12.05.2013 1:46
          • 2. Re: Java 1.7 update 21 32-bit crashes in fontmanager.dll+0xd1a9

            I've written a small program isolating this issue, you can find it here. It is effected on the 1.6.0u45 and 1.7.0u21 JVMs on Windows for the Calibri, Calibri Bold, Calibri Bold Italic, Calibri Italic and Cambria Bold fonts, and most likely fixed in the non-public 1.6.0u51 JVM and confirmed to be fixed on the 1.7.0u25 JVMs. Given that there's no public documentation, I assume this has been internally discovered or fixed unintentionally.