[OpenJDK 2D-Dev] RFR: JDK-8160664 JVM crashed with font manager on Solaris 12

Martin Walsh martin.walsh at oracle.com
Mon Jul 25 14:14:35 UTC 2016


On 07/22/16 05:59 PM, Phil Race wrote:
> Hi,
>
> That looks  reasonable .. but before an OK I would like to see the
> results of running the test case in
> the bug report after that fix. Run the test case with
> -Dsun.java2d.debugfonts=true so we can see
> what the JDK is doing internally. You can add the log to the bug report.

Thanks, I have attached the output of this to the bug.

>
> Basically fontconfig is also likely to be subsequently invoked to build
> the list of real fonts underlying
> the logical font names (eg JDK sansserif which is the equivalent of
> fontconfig's sans).
> I suspect they will all end up just falling back to the Lucida Sans
> Regular font shipped with JDK.
>
> But for OpenJDK that won't be there .. so you may also want to see what
> happens if you
> then delete (move elsewhere) that font from jdk/lib/fonts. Maybe not a
> VM crash but a Java NPE perhaps
> as no fonts at all is not a supportable configuration.

Yes, you get a NPE.

# java Family
Exception in thread "main" java.lang.NullPointerException
         at 
sun.awt.FcFontManager.getDefaultPlatformFont(java.desktop at 9-internal/FcFontManager.java:76)
         at 
sun.font.SunFontManager$2.run(java.desktop at 9-internal/SunFontManager.java:434)
         at 
java.security.AccessController.doPrivileged(java.base at 9-internal/Native 
Method)
         at 
sun.font.SunFontManager.<init>(java.desktop at 9-internal/SunFontManager.java:377)
         at 
sun.awt.FcFontManager.<init>(java.desktop at 9-internal/FcFontManager.java:35)
         at 
sun.awt.X11FontManager.<init>(java.desktop at 9-internal/X11FontManager.java:56)
         at 
jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(java.base at 9-internal/Native 
Method)
         at 
jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(java.base at 9-internal/NativeConstructorAccessorImpl.java:62)
         at 
jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(java.base at 9-internal/DelegatingConstructorAccessorImpl.java:45)
         at 
java.lang.reflect.Constructor.newInstance(java.base at 9-internal/Constructor.java:453)
         at java.lang.Class.newInstance(java.base at 9-internal/Class.java:569)
         at 
sun.font.FontManagerFactory$1.run(java.desktop at 9-internal/FontManagerFactory.java:83)
         at 
java.security.AccessController.doPrivileged(java.base at 9-internal/Native 
Method)
         at 
sun.font.FontManagerFactory.getInstance(java.desktop at 9-internal/FontManagerFactory.java:74)
         at 
sun.java2d.SunGraphicsEnvironment.getFontManagerForSGE(java.desktop at 9-internal/SunGraphicsEnvironment.java:203)
         at 
sun.java2d.SunGraphicsEnvironment.getAllFonts(java.desktop at 9-internal/SunGraphicsEnvironment.java:222)
         at 
sun.java2d.HeadlessGraphicsEnvironment.getAllFonts(java.desktop at 9-internal/HeadlessGraphicsEnvironment.java:72)
         at Family.main(Family.java:7)


>
> So yes, that does mean I think that although avoiding a crash is good,
> running graphics tests on
> a system that has no font is an unsupported and unsupportable
> configuration.
> Put another way Java even as *headless* has a *hard* requirement on the
> fonts being installed
> and Solaris 12 not installing any by default means it does not satisfy
> the requirements of Java
> and that decision should be revisited .. else (and I really, really,
> mean this) we can't support Solaris 12.

Well with a minimal install, Java is not installed either.  As far as I 
can tell, the Java package manifest delivered to Solaris does not depend 
on the font files.  I just "pkg install jdk-8" and no font files came 
with it.  So perhaps the Java pkg manifests needs to depend on the 
relevant font package so that fonts will be installed when Java is 
installed.

However this does not support the scenario where a JDK tar file is 
dropped onto the machine.  I am not sure whether we want to support this 
scenario, we can take this off list for further discussion.

Thanks,

Martin

>
> -phil.
>
> On 07/22/2016 06:54 AM, Martin Walsh wrote:
>> Hi,
>>
>> Could I get a review for the simple fix for
>>
>> https://bugs.openjdk.java.net/browse/JDK-8160664
>>
>> A webrev of the change is available here:
>>
>> http://cr.openjdk.java.net/~aivanov/martin.walsh/8160664/jdk9/webrev.00/
>>
>>
>> Thanks,
>>
>> Martin
>




More information about the 2d-dev mailing list