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

JVM crashing in fonthandler.dll when transform is Double.NaN and gc() is called

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Duplicate
    • Icon: P4 P4
    • None
    • 6
    • client-libs
    • 2d
    • x86
    • windows_xp

      FULL PRODUCT VERSION :
      java version "1.6.0_01"
      Java(TM) SE Runtime Environment (build 1.6.0_01-b06)
      Java HotSpot(TM) Client VM (build 1.6.0_01-b06, mixed mode, sharing)

      ADDITIONAL OS VERSION INFORMATION :
      Windows XP SP2 [5.1.2600]

      A DESCRIPTION OF THE PROBLEM :
      Running the test code will produce a crash in fonthandler.dll after about 5 secs( on my computer.. may take longer on others) It only crashes if you include the System.gc() call AND if you have NaN in the transform. If you remove the gc() call or set the transform to the identity the bug does not occur.

      During the attempt to define a test case, multiple crash logs were recorded. The most common crash line was at:

      fontmanager.dll+0x26abd

      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      Run the program, wait about 5 secs for the crash

      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
      The program should run forever until the user quits
      ACTUAL -
      The JVM crashes about 5 seconds into the execution.

      ERROR MESSAGES/STACK TRACES THAT OCCUR :
      (Note: our project manager insisted i sanitize some project specific class names)

      #
      # An unexpected error has been detected by Java Runtime Environment:
      #
      # EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x6d2d6819, pid=232, tid=3164
      #
      # Java VM: Java HotSpot(TM) Client VM (1.6.0_01-b06 mixed mode, sharing)
      # Problematic frame:
      # C [fontmanager.dll+0x26819]
      #
      # If you would like to submit a bug report, please visit:
      # http://java.sun.com/webapps/bugreport/crash.jsp
      #

      --------------- T H R E A D ---------------

      Current thread (0x04727800): JavaThread "AWT-EventQueue-0" [_thread_in_native, id=3164]

      siginfo: ExceptionCode=0xc0000005, reading address 0xfff75826

      Registers:
      EAX=0x04707af8, EBX=0xfff756fa, ECX=0x00000000, EDX=0x0604eefc
      ESP=0x0604ee38, EBP=0x0604ee58, ESI=0x04707af8, EDI=0xfff756fa
      EIP=0x6d2d6819, EFLAGS=0x00010246

        Top of Stack: (sp=0x0604ee38)
      0x0604ee38: 00000000 04707af8 04707af8 096b5208
      0x0604ee48: 0604ee98 00d465e4 069a1f90 00000000
      0x0604ee58: 0604ee98 6d2d6afd 047278e8 0604eefc
      0x0604ee68: 04707af8 04707af8 00000000 04727800
      0x0604ee78: 2aa77170 2b310bf0 00000000 5554c2f8
      0x0604ee88: 00000003 0000000b 0604ef08 00000000
      0x0604ee98: 0604eee0 00ccabc1 047278e8 0604eefc
      0x0604eea8: 04707af8 00000002 0000003e 0604eeb8

      Instructions: (pc=0x6d2d6819)
      0x6d2d6809: 57 8b 78 04 89 4d fc 74 06 8d 46 14 50 eb 01 51
      0x6d2d6819: ff b7 2c 01 00 00 e8 b7 d9 fe ff 8b 46 04 89 45


      Stack: [0x05c50000,0x06050000), sp=0x0604ee38, free space=4091k
      Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
      C [fontmanager.dll+0x26819]
      C [fontmanager.dll+0x26afd]
      j sun.font.FileFont.getGlyphImage(JI)J+0
      J sun.font.FileFontStrike.getSlot0GlyphImagePtrs([I[JI)I
      J sun.font.CompositeStrike.getGlyphImagePtrs([I[JI)V
      J sun.font.GlyphList.mapChars(Lsun/java2d/loops/FontInfo;I)Z
      J sun.font.GlyphList.setFromString(Lsun/java2d/loops/FontInfo;Ljava/lang/String;FF)Z
      J sun.java2d.pipe.GlyphListPipe.drawString(Lsun/java2d/SunGraphics2D;Ljava/lang/String;DD)V
      J sun.java2d.pipe.ValidatePipe.drawString(Lsun/java2d/SunGraphics2D;Ljava/lang/String;DD)V
      J sun.java2d.SunGraphics2D.drawString(Ljava/lang/String;II)V
      j net.XXXXXXX.nazca.cad2.PlanEditorView.drawWallFrameText(Ljava/awt/Graphics2D;Lnet/XXXXXXX/nazca/cad2/WallSection;)V+169
      J net.XXXXXXX.nazca.cad2.PlanEditorView.render(Ljava/awt/Graphics2D;)V
      j net.XXXXX.dxfinput.TransformableView.paintChildren(Ljava/awt/Graphics;)V+138
      J javax.swing.JComponent.paint(Ljava/awt/Graphics;)V
      j javax.swing.JComponent.paintToOffscreen(Ljava/awt/Graphics;IIIIII)V+41
      j javax.swing.BufferStrategyPaintManager.paint(Ljavax/swing/JComponent;Ljavax/swing/JComponent;Ljava/awt/Graphics;IIII)Z+157
      j javax.swing.RepaintManager.paint(Ljavax/swing/JComponent;Ljavax/swing/JComponent;Ljava/awt/Graphics;IIII)V+52
      J javax.swing.JComponent._paintImmediately(IIII)V
      j javax.swing.JComponent.paintImmediately(IIII)V+83
      J javax.swing.RepaintManager.paintDirtyRegions(Ljava/util/Map;)V
      j javax.swing.RepaintManager.paintDirtyRegions()V+46
      j javax.swing.RepaintManager.seqPaintDirtyRegions()V+73
      j javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run()V+36
      J java.awt.event.InvocationEvent.dispatch()V
      J java.awt.EventQueue.dispatchEvent(Ljava/awt/AWTEvent;)V
      J java.awt.EventDispatchThread.pumpOneEventForFilters(I)Z
      j java.awt.EventDispatchThread.pumpEventsForFilter(ILjava/awt/Conditional;Ljava/awt/EventFilter;)V+30
      j java.awt.EventDispatchThread.pumpEventsForHierarchy(ILjava/awt/Conditional;Ljava/awt/Component;)V+11
      j java.awt.EventDispatchThread.pumpEvents(ILjava/awt/Conditional;)V+4
      j java.awt.EventDispatchThread.pumpEvents(Ljava/awt/Conditional;)V+3
      j java.awt.EventDispatchThread.run()V+9
      v ~StubRoutines::call_stub

      Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
      j sun.font.FileFont.getGlyphImage(JI)J+0
      J sun.font.FileFontStrike.getSlot0GlyphImagePtrs([I[JI)I
      J sun.font.CompositeStrike.getGlyphImagePtrs([I[JI)V
      J sun.font.GlyphList.mapChars(Lsun/java2d/loops/FontInfo;I)Z
      J sun.font.GlyphList.setFromString(Lsun/java2d/loops/FontInfo;Ljava/lang/String;FF)Z
      J sun.java2d.pipe.GlyphListPipe.drawString(Lsun/java2d/SunGraphics2D;Ljava/lang/String;DD)V
      J sun.java2d.pipe.ValidatePipe.drawString(Lsun/java2d/SunGraphics2D;Ljava/lang/String;DD)V
      J sun.java2d.SunGraphics2D.drawString(Ljava/lang/String;II)V
      j net.XXXXXXX.nazca.cad2.PlanEditorView.drawWallFrameText(Ljava/awt/Graphics2D;Lnet/XXXXXXX/nazca/cad2/WallSection;)V+169
      J net.XXXXXXX.nazca.cad2.PlanEditorView.render(Ljava/awt/Graphics2D;)V
      j net.XXXXX.dxfinput.TransformableView.paintChildren(Ljava/awt/Graphics;)V+138
      J javax.swing.JComponent.paint(Ljava/awt/Graphics;)V
      j javax.swing.JComponent.paintToOffscreen(Ljava/awt/Graphics;IIIIII)V+41
      j javax.swing.BufferStrategyPaintManager.paint(Ljavax/swing/JComponent;Ljavax/swing/JComponent;Ljava/awt/Graphics;IIII)Z+157
      j javax.swing.RepaintManager.paint(Ljavax/swing/JComponent;Ljavax/swing/JComponent;Ljava/awt/Graphics;IIII)V+52
      J javax.swing.JComponent._paintImmediately(IIII)V
      j javax.swing.JComponent.paintImmediately(IIII)V+83
      J javax.swing.RepaintManager.paintDirtyRegions(Ljava/util/Map;)V
      j javax.swing.RepaintManager.paintDirtyRegions()V+46
      j javax.swing.RepaintManager.seqPaintDirtyRegions()V+73
      j javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run()V+36
      J java.awt.event.InvocationEvent.dispatch()V
      J java.awt.EventQueue.dispatchEvent(Ljava/awt/AWTEvent;)V
      J java.awt.EventDispatchThread.pumpOneEventForFilters(I)Z
      j java.awt.EventDispatchThread.pumpEventsForFilter(ILjava/awt/Conditional;Ljava/awt/EventFilter;)V+30
      j java.awt.EventDispatchThread.pumpEventsForHierarchy(ILjava/awt/Conditional;Ljava/awt/Component;)V+11
      j java.awt.EventDispatchThread.pumpEvents(ILjava/awt/Conditional;)V+4
      j java.awt.EventDispatchThread.pumpEvents(Ljava/awt/Conditional;)V+3
      j java.awt.EventDispatchThread.run()V+9
      v ~StubRoutines::call_stub

      --------------- P R O C E S S ---------------

      Java Threads: ( => current thread )
        0x046b7400 JavaThread "Busy Wait Thread method('drawPlan2') with params() on object net.XXXXX.XXXXXX.wfproto.gui.WFProtoFrame[frame0,50,50,1180x924,invalid,layout=java.awt.BorderLayout,title=InfoFrame Integrated Steel House Frame Designer - Release: DEVELOPMENT BUILD,resizable,normal,defaultCloseOperation=DO_NOTHING_ON_CLOSE,rootPane=javax.swing.JRootPane[,4,30,1172x890,invalid,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=],rootPaneCheckingEnabled=true]" [_thread_blocked, id=700]
        0x00386400 JavaThread "DestroyJavaVM" [_thread_blocked, id=1616]
        0x0304a800 JavaThread "TimerQueue" daemon [_thread_blocked, id=2696]
      =>0x04727800 JavaThread "AWT-EventQueue-0" [_thread_in_native, id=3164]
        0x04680400 JavaThread "AWT-Windows" daemon [_thread_in_native, id=2124]
        0x0467f400 JavaThread "AWT-Shutdown" [_thread_blocked, id=268]
        0x0467e800 JavaThread "Java2D Disposer" daemon [_thread_blocked, id=1112]
        0x02facc00 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=876]
        0x02fa8000 JavaThread "CompilerThread0" daemon [_thread_blocked, id=4092]
        0x02fa6c00 JavaThread "Attach Listener" daemon [_thread_blocked, id=1208]
        0x02fa6000 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=1132]
        0x02fa1800 JavaThread "Finalizer" daemon [_thread_blocked, id=2336]
        0x02f9d000 JavaThread "Reference Handler" daemon [_thread_blocked, id=1320]

      Other Threads:
        0x02f94000 VMThread [id=1760]
        0x02fb7800 WatcherThread [id=3116]

      VM state:not at safepoint (normal execution)

      VM Mutex/Monitor currently owned by a thread: None

      Heap
       def new generation total 1152K, used 317K [0x06960000, 0x06a90000, 0x090c0000)
        eden space 1088K, 25% used [0x06960000, 0x069a4738, 0x06a70000)
        from space 64K, 67% used [0x06a70000, 0x06a7acf0, 0x06a80000)
        to space 64K, 0% used [0x06a80000, 0x06a80000, 0x06a90000)
       tenured generation total 13772K, used 6146K [0x090c0000, 0x09e33000, 0x26960000)
         the space 13772K, 44% used [0x090c0000, 0x096c08d8, 0x096c0a00, 0x09e33000)
       compacting perm gen total 12288K, used 5659K [0x26960000, 0x27560000, 0x2a960000)
         the space 12288K, 46% used [0x26960000, 0x26ee6dc0, 0x26ee6e00, 0x27560000)
          ro space 8192K, 62% used [0x2a960000, 0x2ae5e4e8, 0x2ae5e600, 0x2b160000)
          rw space 12288K, 52% used [0x2b160000, 0x2b7a0e78, 0x2b7a1000, 0x2bd60000)

      Dynamic libraries:
      0x00400000 - 0x00423000 C:\Program Files\Java\jre1.6.0_01\bin\javaw.exe
      0x7c900000 - 0x7c9b0000 C:\WINDOWS\system32\ntdll.dll
      0x7c800000 - 0x7c8f4000 C:\WINDOWS\system32\kernel32.dll
      0x77dd0000 - 0x77e6b000 C:\WINDOWS\system32\ADVAPI32.dll
      0x77e70000 - 0x77f01000 C:\WINDOWS\system32\RPCRT4.dll
      0x7e410000 - 0x7e4a0000 C:\WINDOWS\system32\USER32.dll
      0x77f10000 - 0x77f57000 C:\WINDOWS\system32\GDI32.dll
      0x7c340000 - 0x7c396000 C:\Program Files\Java\jre1.6.0_01\bin\msvcr71.dll
      0x6d7c0000 - 0x6da07000 C:\Program Files\Java\jre1.6.0_01\bin\client\jvm.dll
      0x76b40000 - 0x76b6d000 C:\WINDOWS\system32\WINMM.dll
      0x6d310000 - 0x6d318000 C:\Program Files\Java\jre1.6.0_01\bin\hpi.dll
      0x76bf0000 - 0x76bfb000 C:\WINDOWS\system32\PSAPI.DLL
      0x6d770000 - 0x6d77c000 C:\Program Files\Java\jre1.6.0_01\bin\verify.dll
      0x6d3b0000 - 0x6d3cf000 C:\Program Files\Java\jre1.6.0_01\bin\java.dll
      0x6d7b0000 - 0x6d7bf000 C:\Program Files\Java\jre1.6.0_01\bin\zip.dll
      0x6d560000 - 0x6d569000 C:\Program Files\Java\jre1.6.0_01\bin\management.dll
      0x6d000000 - 0x6d1c3000 C:\Program Files\Java\jre1.6.0_01\bin\awt.dll
      0x73000000 - 0x73026000 C:\WINDOWS\system32\WINSPOOL.DRV
      0x77c10000 - 0x77c68000 C:\WINDOWS\system32\msvcrt.dll
      0x76390000 - 0x763ad000 C:\WINDOWS\system32\IMM32.dll
      0x774e0000 - 0x7761d000 C:\WINDOWS\system32\ole32.dll
      0x5ad70000 - 0x5ada8000 C:\WINDOWS\system32\uxtheme.dll
      0x73760000 - 0x737a9000 C:\WINDOWS\system32\ddraw.dll
      0x73bc0000 - 0x73bc6000 C:\WINDOWS\system32\DCIMAN32.dll
      0x74720000 - 0x7476b000 C:\WINDOWS\system32\MSCTF.dll
      0x7c9c0000 - 0x7d1d5000 C:\WINDOWS\system32\shell32.dll
      0x77f60000 - 0x77fd6000 C:\WINDOWS\system32\SHLWAPI.dll
      0x773d0000 - 0x774d3000 C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.2982_x-ww_ac3f9c03\comctl32.dll
      0x5d090000 - 0x5d12a000 C:\WINDOWS\system32\comctl32.dll
      0x6d2b0000 - 0x6d303000 C:\Program Files\Java\jre1.6.0_01\bin\fontmanager.dll
      0x6d570000 - 0x6d583000 C:\Program Files\Java\jre1.6.0_01\bin\net.dll
      0x71ab0000 - 0x71ac7000 C:\WINDOWS\system32\WS2_32.dll
      0x71aa0000 - 0x71aa8000 C:\WINDOWS\system32\WS2HELP.dll
      0x71a50000 - 0x71a8f000 C:\WINDOWS\system32\mswsock.dll
      0x662b0000 - 0x66308000 C:\WINDOWS\system32\hnetcfg.dll
      0x58d40000 - 0x58d47000 C:\WINDOWS\System32\wship6.dll
      0x6d590000 - 0x6d599000 C:\Program Files\Java\jre1.6.0_01\bin\nio.dll
      0x77120000 - 0x771ac000 C:\WINDOWS\system32\OLEAUT32.DLL
      0x71a90000 - 0x71a98000 C:\WINDOWS\System32\wshtcpip.dll

      VM Arguments:
      jvm_args: -Xmx512m -Xss4m -Dsun.java2d.debugfonts=true
      java_command: net.XXXXX.XXXXXX.wfproto.WFProto -debug
      Launcher Type: SUN_STANDARD

      Environment Variables:
      PATH=C:\Program Files\Java\jre1.6.0_01\bin;C:\jvmstat\bat;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\Common Files\GTK\2.0\bin;C:\Program Files\IDM Computer Solutions\UEStudio '06;C:\PROGRA~1\ATT\Graphviz\bin;C:\Program Files\doxygen\bin;C:\ejp\lib
      USERNAME=Glen
      OS=Windows_NT
      PROCESSOR_IDENTIFIER=x86 Family 15 Model 4 Stepping 3, GenuineIntel



      --------------- S Y S T E M ---------------

      OS: Windows XP Build 2600 Service Pack 2

      CPU:total 2 family 15, cmov, cx8, fxsr, mmx, sse, sse2, ht

      Memory: 4k page, physical 1015276k(230032k free), swap 2469756k(1825720k free)

      vm_info: Java HotSpot(TM) Client VM (1.6.0_01-b06) for windows-x86, built on Mar 14 2007 00:24:02 by "java_re" with unknown MS VC++:1310




      REPRODUCIBILITY :
      This bug can be reproduced always.

      ---------- BEGIN SOURCE ----------
      import java.awt.Dimension;
      import java.awt.Graphics;
      import java.awt.Graphics2D;
      import java.awt.event.ActionEvent;
      import java.awt.event.ActionListener;
      import java.awt.geom.AffineTransform;

      import javax.swing.JFrame;
      import javax.swing.JPanel;
      import javax.swing.Timer;

      public class Main
      {
      public static void main(String[] args)
      {
      final JFrame frame = new JFrame("Hello World");

      JPanel p = new JPanel()
      {
      @Override
      public void paintComponent(Graphics g)
      {
      super.paintComponent(g);

      Graphics2D g2 = (Graphics2D)g;

      AffineTransform oldXForm = g2.getTransform();

      AffineTransform xform = new AffineTransform(Double.NaN, Double.NaN, Double.NaN, Double.NaN, Double.NaN, Double.NaN);
      g2.setTransform(xform);
      g.drawString("crashcrash", 100, 200);

      g2.setTransform(oldXForm);
      }

      };

      frame.add(p);
      frame.setPreferredSize(new Dimension(500,500));

      final Timer t2 = new Timer(1, new ActionListener() {
      public void actionPerformed(ActionEvent e)
      {
      System.gc();
      frame.repaint();
      }
      });
      t2.start();

      frame.pack();

      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setVisible(true);
      }
      }

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

      CUSTOMER SUBMITTED WORKAROUND :
      Check if the affine transform has a NaN in it and if it does set the transform to the identity.

            Unassigned Unassigned
            ryeung Roger Yeung (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: