JDK-6953806 : thread stuck in sun.font.SunLayoutEngine.getEngine java.util.HashMap.get
  • Type: Bug
  • Component: client-libs
  • Sub-Component: 2d
  • Affected Version: 6u10
  • Priority: P4
  • Status: Closed
  • Resolution: Duplicate
  • OS: windows_7
  • CPU: x86
  • Submitted: 2010-05-19
  • Updated: 2012-06-11
  • Resolved: 2012-06-11
Related Reports
Duplicate :  
Description
FULL PRODUCT VERSION :
java version "1.6.0_18"
java(TM) SE Runtime Environment (build 1.6.0_18-b07)
java HotSpot(TM) 64-Bit Server VM (build 16.0-b13, mixed mode)


ADDITIONAL OS VERSION INFORMATION :
Microsoft Windows [Version 6.1.7600]

A DESCRIPTION OF THE PROBLEM :
Using java.awt.font.LineBreakMeasurer.nextLayout in a multithreaded environment seems to cause a hang in java.util.HashMap.get.
 
The stacktraces of two hanging threads using 100% CPU time is attached.




ERROR MESSAGES/STACK TRACES THAT OCCUR :
"GlyphLayout Thread 5" prio=6 tid=0x000000004b584000 nid=0x1230 runnable [0x000000004c09e000..0x000000004c09f890]
   java.lang.Thread.State: RUNNABLE
	at java.util.HashMap.get(Unknown Source)
	at sun.font.SunLayoutEngine.getEngine(Unknown Source)
	at sun.font.GlyphLayout$EngineRecord.init(Unknown Source)
	at sun.font.GlyphLayout.nextEngineRecord(Unknown Source)
	at sun.font.GlyphLayout.layout(Unknown Source)
	at sun.font.ExtendedTextSourceLabel.createGV(Unknown Source)
	at sun.font.ExtendedTextSourceLabel.getGV(Unknown Source)
	at sun.font.ExtendedTextSourceLabel.createCharinfo(Unknown Source)
	at sun.font.ExtendedTextSourceLabel.getCharinfo(Unknown Source)
	at sun.font.ExtendedTextSourceLabel.getLineBreakIndex(Unknown Source)
	at java.awt.font.TextMeasurer.calcLineBreak(Unknown Source)
	at java.awt.font.TextMeasurer.getLineBreakIndex(Unknown Source)
	at java.awt.font.LineBreakMeasurer.nextOffset(Unknown Source)
	at java.awt.font.LineBreakMeasurer.nextLayout(Unknown Source)
	at java.awt.font.LineBreakMeasurer.nextLayout(Unknown Source)
	at Test.run(Test.java:88)
	at java.lang.Thread.run(Unknown Source)

   Locked ownable synchronizers:
	- None

"GlyphLayout Thread 3" prio=6 tid=0x000000004aed2c00 nid=0xa30 runnable [0x000000004be9e000..0x000000004be9f910]
   java.lang.Thread.State: RUNNABLE
	at java.util.HashMap.get(Unknown Source)
	at sun.font.SunLayoutEngine.getEngine(Unknown Source)
	at sun.font.GlyphLayout$EngineRecord.init(Unknown Source)
	at sun.font.GlyphLayout.nextEngineRecord(Unknown Source)
	at sun.font.GlyphLayout.layout(Unknown Source)
	at sun.font.ExtendedTextSourceLabel.createGV(Unknown Source)
	at sun.font.ExtendedTextSourceLabel.getGV(Unknown Source)
	at sun.font.ExtendedTextSourceLabel.createCharinfo(Unknown Source)
	at sun.font.ExtendedTextSourceLabel.getCharinfo(Unknown Source)
	at sun.font.ExtendedTextSourceLabel.getLineBreakIndex(Unknown Source)
	at java.awt.font.TextMeasurer.calcLineBreak(Unknown Source)
	at java.awt.font.TextMeasurer.getLineBreakIndex(Unknown Source)
	at java.awt.font.LineBreakMeasurer.nextOffset(Unknown Source)
	at java.awt.font.LineBreakMeasurer.nextLayout(Unknown Source)
	at java.awt.font.LineBreakMeasurer.nextLayout(Unknown Source)
	at Test.run(Test.java:88)
	at java.lang.Thread.run(Unknown Source)

REPRODUCIBILITY :
This bug can be reproduced occasionally.

---------- BEGIN SOURCE ----------
Reproducible test case source code has been submitted as comments to issue #6611637:

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6611637
---------- END SOURCE ----------