JDK-6520322 : Calling GraphicsEnv.registerFont(null) crashes the VM
  • Type: Bug
  • Component: client-libs
  • Sub-Component: 2d
  • Affected Version: 6
  • Priority: P3
  • Status: Closed
  • Resolution: Fixed
  • OS: generic
  • CPU: generic
  • Submitted: 2007-02-01
  • Updated: 2017-05-16
  • Resolved: 2011-03-08
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 6 JDK 7 Other
6u2Fixed 7 b10Fixed OpenJDK6Fixed
Description
Calling GraphicsEnvironment.registerFont() with a null argument crashes the VM. VM crash is not an acceptable behavior. This is reproducible on JDK6-FCS as well as JDK7-b06. This is reproducible on all platforms. 

Here is the crash log -
------------------------
#
# An unexpected error has been detected by Java Runtime Environment:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x0096cc57, pid=3040, tid=2472
#
# Java VM: Java HotSpot(TM) Client VM (1.7.0-ea-b06 mixed mode)
# Problematic frame:
# v  ~BufferBlob::jni_fast_GetBooleanField
#
# 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 (0x002a5c00):  JavaThread "main" [_thread_in_native, id=2472]

siginfo: ExceptionCode=0xc0000005, reading address 0x00000000

Registers:
EAX=0x000000f6, EBX=0x06cdfd90, ECX=0x00000000, EDX=0x00000000
ESP=0x0090fbb4, EBP=0x0090fbe8, ESI=0x06cdfd90, EDI=0x002a5c00
EIP=0x0096cc57, EFLAGS=0x00010246

Top of Stack: (sp=0x0090fbb4)
0x0090fbb4:   6d9c07ff 002a5ce8 00000000 000000f6
0x0090fbc4:   002a5c00 06cdfd90 06cdfd90 0090fbc4
0x0090fbd4:   0090f7d8 0090fdc8 6da39a2a 6da5fa20
0x0090fbe4:   00000000 0090fc30 6d3859de 002a5ce8
0x0090fbf4:   00000000 000000f6 0091a430 002a5ce8
0x0090fc04:   0090fc38 00000000 002a4f74 0090fc10
0x0090fc14:   06cdfd90 0090fc40 06ce6158 00000000
0x0090fc24:   06cdfd90 00000000 0090fc40 0090fc6c 

Instructions: (pc=0x0096cc57)
0x0096cc47:   c1 01 0f 85 20 00 00 00 8b 54 24 08 8b 44 24 0c
0x0096cc57:   8b 12 c1 e8 02 0f b6 04 02 3b 0d cc 19 a9 6d 0f 


Stack: [0x008c0000,0x00910000),  sp=0x0090fbb4,  free space=318k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
v  ~BufferBlob::jni_fast_GetBooleanField
C  [fontmanager.dll+0x259de]
v  ~BufferBlob::Interpreter
v  ~BufferBlob::Interpreter
v  ~BufferBlob::Interpreter
v  ~BufferBlob::StubRoutines (1)

Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
v  ~BufferBlob::Interpreter
v  ~BufferBlob::Interpreter
v  ~BufferBlob::Interpreter
v  ~BufferBlob::Interpreter
v  ~BufferBlob::StubRoutines (1)

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

Java Threads: ( => current thread )
  0x0adcbc00 JavaThread "Java2D Disposer" daemon [_thread_blocked, id=2172]
  0x0aabb000 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=3044]
  0x0aab6000 JavaThread "CompilerThread0" daemon [_thread_blocked, id=3212]
  0x0aab5000 JavaThread "Attach Listener" daemon [_thread_blocked, id=3448]
  0x0aab4000 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=2060]
  0x0aaa6400 JavaThread "Finalizer" daemon [_thread_blocked, id=3684]
  0x0aaa2000 JavaThread "Reference Handler" daemon [_thread_blocked, id=3876]
=>0x002a5c00 JavaThread "main" [_thread_in_native, id=2472]

Other Threads:
  0x0aa9ec00 VMThread [id=3328]
  0x0aad5c00 WatcherThread [id=2780]

VM state:not at safepoint (normal execution)

VM Mutex/Monitor currently owned by a thread: None

Heap
 def new generation   total 960K, used 475K [0x02990000, 0x02a90000, 0x02e70000)
  eden space 896K,  53% used [0x02990000, 0x02a06c20, 0x02a70000)
  from space 64K,   0% used [0x02a70000, 0x02a70000, 0x02a80000)
  to   space 64K,   0% used [0x02a80000, 0x02a80000, 0x02a90000)
 tenured generation   total 4096K, used 0K [0x02e70000, 0x03270000, 0x06990000)
   the space 4096K,   0% used [0x02e70000, 0x02e70000, 0x02e70200, 0x03270000)
 compacting perm gen  total 12288K, used 3652K [0x06990000, 0x07590000, 0x0a990000)
   the space 12288K,  29% used [0x06990000, 0x06d21118, 0x06d21200, 0x07590000)
No shared spaces configured.

Dynamic libraries:
0x00400000 - 0x00423000 	e:\JDK1.7.0\bin\java.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
0x7c340000 - 0x7c396000 	e:\JDK1.7.0\jre\bin\msvcr71.dll
0x6d870000 - 0x6dabe000 	e:\JDK1.7.0\jre\bin\client\jvm.dll
0x77d40000 - 0x77dd0000 	C:\WINDOWS\system32\USER32.dll
0x77f10000 - 0x77f57000 	C:\WINDOWS\system32\GDI32.dll
0x76b40000 - 0x76b6d000 	C:\WINDOWS\system32\WINMM.dll
0x6d3c0000 - 0x6d3c8000 	e:\JDK1.7.0\jre\bin\hpi.dll
0x76bf0000 - 0x76bfb000 	C:\WINDOWS\system32\PSAPI.DLL
0x6d820000 - 0x6d82c000 	e:\JDK1.7.0\jre\bin\verify.dll
0x6d460000 - 0x6d47f000 	e:\JDK1.7.0\jre\bin\java.dll
0x6d860000 - 0x6d86f000 	e:\JDK1.7.0\jre\bin\zip.dll
0x6d0b0000 - 0x6d272000 	E:\JDK1.7.0\jre\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
0x73760000 - 0x737a9000 	C:\WINDOWS\system32\ddraw.dll
0x73bc0000 - 0x73bc6000 	C:\WINDOWS\system32\DCIMAN32.dll
0x6d360000 - 0x6d3b3000 	E:\JDK1.7.0\jre\bin\fontmanager.dll

VM Arguments:
java_command: RegisterFontCrashTest
Launcher Type: SUN_STANDARD

Environment Variables:
PATH=e:\JDK1.7.0\bin;y:\b04\windows-i586\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\system32\WBEM;C:\PROGRA~1\MKSTOO~1\bin;C:\PROGRA~1\MKSTOO~1\bin\x11;C:\PROGRA~1\MKSTOO~1\mksnt;C:\PROGRA~1\ULTRAE~1
USERNAME=praveen
SHELL=C:/PROGRA~1/MKSTOO~1/mksnt/sh.exe
DISPLAY=:0.0
OS=Windows_NT
PROCESSOR_IDENTIFIER=x86 Family 15 Model 2 Stepping 9, GenuineIntel



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

OS: Windows XP Build 2600 Service Pack 2

CPU:total 1 (1 cores per cpu, 2 threads per core) family 15 model 2 stepping 9, cmov, cx8, fxsr, mmx, sse, sse2, ht

Memory: 4k page, physical 522992k(193116k free), swap 1278288k(870508k free)

vm_info: Java HotSpot(TM) Client VM (1.7.0-ea-b06) for windows-x86, built on Jan 18 2007 00:47:16 by "java_re" with unknown MS VC++:1310
---------------------------------------------

I have attached a sample test. Run the sample test using JDK6/7 and you will see the VM crash.

Comments
EVALUATION We aren't checking for null.
02-02-2007