Linux Mint error with VASSAL 3.2.17

Hi all.

I recently started using Linux and have a new Linux computer beside my old Windows. The new computer runs Linux Mint 18.1.

I installed VASSAL 3.2.17 and sadly got this error at startup:

$ sh VASSAL.sh
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007f8894299009, pid=9309, tid=9332
#
# JRE version: OpenJDK Runtime Environment (9.0) (build 9-internal+0-2016-04-14-195246.buildd.src)
# Java VM: OpenJDK 64-Bit Server VM (9-internal+0-2016-04-14-195246.buildd.src, mixed mode, tiered, compressed oops, g1 gc, linux-amd64)
# Problematic frame:
# C  [libjava.so+0x1d009]  JNU_GetEnv+0x19
#
# No core dump will be written. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# An error report file with more information is saved as:
# /tmp/hs_err_pid9309.log
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.java.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#
Aborted

Here is the top of the THREAD section of /tmp/hs_err_pid9309.log

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

Current thread (0x00007f8890568800):  JavaThread "AWT-EventQueue-0" [_thread_in_native, id=9332, stack(0x00007f8834b56000,0x00007f8834c57000)]

Stack: [0x00007f8834b56000,0x00007f8834c57000],  sp=0x00007f8834c51a50,  free space=1006k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C  [libjava.so+0x1d009]  JNU_GetEnv+0x19
C  [libfontmanager.so+0x33f8e]
C  [libfreetype.so.6+0x130bb]

Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j  sun.font.FreetypeFontScaler.initNativeScaler(Lsun/font/Font2D;IIZI)J+0 java.desktop@9-internal
j  sun.font.FreetypeFontScaler.<init>(Lsun/font/Font2D;IZI)V+26 java.desktop@9-internal
v  ~StubRoutines::call_stub
j  sun.reflect.NativeConstructorAccessorImpl.newInstance0(Ljava/lang/reflect/Constructor;[Ljava/lang/Object;)Ljava/lang/Object;+0 java.base@9-internal
j  sun.reflect.NativeConstructorAccessorImpl.newInstance([Ljava/lang/Object;)Ljava/lang/Object;+85 java.base@9-internal
j  sun.reflect.DelegatingConstructorAccessorImpl.newInstance([Ljava/lang/Object;)Ljava/lang/Object;+5 java.base@9-internal
j  java.lang.reflect.Constructor.newInstance([Ljava/lang/Object;)Ljava/lang/Object;+65 java.base@9-internal
j  sun.font.FontScaler.getScaler(Lsun/font/Font2D;IZI)Lsun/font/FontScaler;+39 java.desktop@9-internal
j  sun.font.TrueTypeFont.getScaler()Lsun/font/FontScaler;+21 java.desktop@9-internal
j  sun.font.FileFontStrike.<init>(Lsun/font/FileFont;Lsun/font/FontStrikeDesc;)V+204 java.desktop@9-internal
j  sun.font.FileFont.createStrike(Lsun/font/FontStrikeDesc;)Lsun/font/FontStrike;+18 java.desktop@9-internal
j  sun.font.Font2D.getStrike(Lsun/font/FontStrikeDesc;Z)Lsun/font/FontStrike;+92 java.desktop@9-internal
j  sun.font.Font2D.getStrike(Lsun/font/FontStrikeDesc;)Lsun/font/FontStrike;+3 java.desktop@9-internal
j  sun.font.CompositeStrike.getStrikeForSlot(I)Lsun/font/PhysicalStrike;+23 java.desktop@9-internal
j  sun.font.CompositeStrike.getFontMetrics()Lsun/font/StrikeMetrics;+31 java.desktop@9-internal
j  sun.font.FontDesignMetrics.initMatrixAndMetrics()V+28 java.desktop@9-internal
j  sun.font.FontDesignMetrics.<init>(Ljava/awt/Font;Ljava/awt/font/FontRenderContext;)V+62 java.desktop@9-internal
j  sun.font.FontDesignMetrics.getMetrics(Ljava/awt/Font;Ljava/awt/font/FontRenderContext;)Lsun/font/FontDesignMetrics;+128 java.desktop@9-internal
j  sun.swing.SwingUtilities2.getFontMetrics(Ljavax/swing/JComponent;Ljava/awt/Font;)Ljava/awt/FontMetrics;+15 java.desktop@9-internal
j  javax.swing.JComponent.getFontMetrics(Ljava/awt/Font;)Ljava/awt/FontMetrics;+2 java.desktop@9-internal
j  javax.swing.plaf.synth.SynthGraphicsUtils.getPreferredSize(Ljavax/swing/plaf/synth/SynthContext;Ljava/awt/Font;Ljava/lang/String;Ljavax/swing/Icon;IIIIII)Ljava/awt/Dimension;+110 java.desktop@9-internal
j  javax.swing.plaf.synth.SynthLabelUI.getPreferredSize(Ljavax/swing/JComponent;)Ljava/awt/Dimension;+82 java.desktop@9-internal
j  javax.swing.JComponent.getPreferredSize()Ljava/awt/Dimension;+26 java.desktop@9-internal
j  javax.swing.plaf.basic.BasicComboBoxUI.getSizeForComponent(Ljava/awt/Component;)Ljava/awt/Dimension;+21 java.desktop@9-internal
j  javax.swing.plaf.basic.BasicComboBoxUI.getDisplaySize()Ljava/awt/Dimension;+153 java.desktop@9-internal
j  javax.swing.plaf.basic.BasicComboBoxUI.getMinimumSize(Ljavax/swing/JComponent;)Ljava/awt/Dimension;+20 java.desktop@9-internal
j  javax.swing.plaf.basic.BasicComboBoxUI.getPreferredSize(Ljavax/swing/JComponent;)Ljava/awt/Dimension;+2 java.desktop@9-internal
j  javax.swing.JComponent.getPreferredSize()Ljava/awt/Dimension;+26 java.desktop@9-internal
j  VASSAL.build.module.gamepieceimage.StringEnumConfigurer.getComboBox()Ljavax/swing/JComboBox;+25
j  VASSAL.build.module.gamepieceimage.StringEnumConfigurer.getControls()Ljava/awt/Component;+35
j  VASSAL.i18n.Resources$1.getControls()Ljava/awt/Component;+8
j  VASSAL.preferences.Prefs.addOption(Ljava/lang/String;LVASSAL/configure/Configurer;Ljava/lang/String;)V+66
j  VASSAL.preferences.Prefs.addOption(Ljava/lang/String;LVASSAL/configure/Configurer;)V+4
j  VASSAL.i18n.Resources.init()V+200
j  VASSAL.i18n.Resources.<init>()V+98
j  VASSAL.i18n.Resources.getInstance()LVASSAL/i18n/Resources;+15
j  VASSAL.i18n.Resources.getString(Ljava/lang/String;)Ljava/lang/String;+0
j  VASSAL.launch.ModuleManagerWindow.<init>()V+44
j  VASSAL.launch.ModuleManagerWindow.<clinit>()V+53
v  ~StubRoutines::call_stub
j  VASSAL.launch.ModuleManager.launch()V+10
j  VASSAL.launch.ModuleManager$2.run()V+4
j  java.awt.event.InvocationEvent.dispatch()V+47 java.desktop@9-internal
j  java.awt.EventQueue.dispatchEventImpl(Ljava/awt/AWTEvent;Ljava/lang/Object;)V+21 java.desktop@9-internal
j  java.awt.EventQueue.access$500(Ljava/awt/EventQueue;Ljava/awt/AWTEvent;Ljava/lang/Object;)V+3 java.desktop@9-internal
j  java.awt.EventQueue$3.run()Ljava/lang/Void;+32 java.desktop@9-internal
j  java.awt.EventQueue$3.run()Ljava/lang/Object;+1 java.desktop@9-internal
v  ~StubRoutines::call_stub
j  java.security.AccessController.doPrivileged(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;)Ljava/lang/Object;+0 java.base@9-internal
j  java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;Ljava/security/AccessControlContext;)Ljava/lang/Object;+18 java.base@9-internal
j  java.awt.EventQueue.dispatchEvent(Ljava/awt/AWTEvent;)V+46 java.desktop@9-internal
j  java.awt.EventDispatchThread.pumpOneEventForFilters(I)V+183 java.desktop@9-internal
j  java.awt.EventDispatchThread.pumpEventsForFilter(ILjava/awt/Conditional;Ljava/awt/EventFilter;)V+35 java.desktop@9-internal
j  java.awt.EventDispatchThread.pumpEventsForHierarchy(ILjava/awt/Conditional;Ljava/awt/Component;)V+11 java.desktop@9-internal
j  java.awt.EventDispatchThread.pumpEvents(ILjava/awt/Conditional;)V+4 java.desktop@9-internal
j  java.awt.EventDispatchThread.pumpEvents(Ljava/awt/Conditional;)V+3 java.desktop@9-internal
j  java.awt.EventDispatchThread.run()V+9 java.desktop@9-internal
v  ~StubRoutines::call_stub

Being new to Linux I have no idea what this is. Obviously it must be something I misssed, something not installed, some bad configuration. Fonts? Font rendering?

Rhett

I found the answer. It had nothing to do with VASSAL.

Linux Mint 18.1 installs as default both the Java runtime JDK8 and JDK9. JDK9 is only a development version and does not support Freetype fonts. I had to uninstall JDK9 and then update Java alternatives:

$ sudo update-java-alternatives --auto
$ java -version
openjdk version "1.8.0_121"
OpenJDK Runtime Environment (build 1.8.0_121-8u121-b13-0ubuntu1.16.04.2-b13)
OpenJDK 64-Bit Server VM (build 25.121-b13, mixed mode)

With openjdk 1.8.0_121 VASSAL works.

I hope this helps others on their way to use Linux.

Rhett

Thank you for posting this. I had problems getting VASSAL to run on my new Ubuntu machine. Turns out it was the same problem with JDK9.