Bug: Vassal Private Message causes hang or crash

Platform as per signature.

In a Vassal v3.4.2 online session, I am consistently getting crashes when I try to send someone else a Private Message. When someone tried to send me a Private Message, the Private Message window appeared but Vassal was frozen from that point and I have to kill it and restart.

Is this the same for anyone else ?

Does the whole JVM crash or freeze?

Anything interesting in the error log after that happens?

The other person sending me a PM caused the freeze; I ended up killing off Vassal completely. I can’t be sure so I need to test this some more. I will try myself from two sessions when I get a chance; unless anything is obvious to developers from this log…

…it was taken around the time of the crashes. First error was the freeze and I think the log file starts after that. Second one was a more typical Vassal crash where the module was still active after the error message - this error was triggered when I tried trying to send a PM and I have noticed this before under v3.4.2 but not previously. I notice one particular error a few lines into the log: java.lang.NegativeArraySizeException: -40

2020-09-23 09:24:11,198 [0-main] INFO VASSAL.launch.StartUp - Starting 2020-09-23 09:24:11,204 [0-main] INFO VASSAL.launch.StartUp - OS Mac OS X 10.15.6 2020-09-23 09:24:11,204 [0-main] INFO VASSAL.launch.StartUp - Java version 14.0.2 2020-09-23 09:24:11,204 [0-main] INFO VASSAL.launch.StartUp - VASSAL version 3.4.2 2020-09-23 09:24:11,717 [0-AWT-EventQueue-0] INFO VASSAL.launch.ModuleManager - Manager 2020-09-23 09:24:19,399 [0-SwingWorker-pool-1-thread-1] INFO VASSAL.launch.AbstractLaunchAction - Loading module file /Users/Mark/Documents/Vassal Modules/CCNapoleonics3_42.vmod 2020-09-23 09:24:19,653 [0-SwingWorker-pool-1-thread-1] INFO VASSAL.launch.TilingHandler - No images to tile. 2020-09-23 09:24:19,654 [0-SwingWorker-pool-1-thread-1] INFO VASSAL.launch.AbstractLaunchAction - Loading module Commands & Colors: Napoleonics 2020-09-23 09:24:19,665 [0-SwingWorker-pool-1-thread-1] INFO VASSAL.tools.io.ProcessLauncher - launching /Applications/VASSAL 3.4.2.app/Contents/MacOS/jre/bin/java -Xms512M -Xmx1024M -DVASSAL.id=1 -DVASSAL.port=49984 -Duser.home=/Users/Mark -Duser.dir=/Applications/VASSAL 3.4.2.app -cp Contents/Resources/Java/Vengine.jar -Xdock:name=Commands & Colors: Napoleonics -Xdock:icon=/Applications/VASSAL 3.4.2.app/Contents/Resources/VASSAL.icns VASSAL.launch.Player --load -- /Users/Mark/Documents/Vassal Modules/CCNapoleonics3_42.vmod 2020-09-23 09:24:20,512 [1-main] INFO VASSAL.launch.StartUp - Starting 2020-09-23 09:24:20,518 [1-main] INFO VASSAL.launch.StartUp - OS Mac OS X 10.15.6 2020-09-23 09:24:20,519 [1-main] INFO VASSAL.launch.StartUp - Java version 14.0.2 2020-09-23 09:24:20,519 [1-main] INFO VASSAL.launch.StartUp - VASSAL version 3.4.2 2020-09-23 09:24:20,519 [1-main] INFO VASSAL.launch.Launcher - Player 2020-09-23 09:24:25,100 [1-AWT-EventQueue-0] WARN VASSAL.launch.BasicModule - Commands & Colors: Napoleonics version 3.42 2020-09-23 09:24:25,132 [1-AWT-EventQueue-0] ERROR VASSAL.i18n.BundleHelper - No Translation: Wizard.Next_mnemonic 2020-09-23 09:24:25,132 [1-AWT-EventQueue-0] ERROR VASSAL.i18n.BundleHelper - No Translation: Wizard.Prev_mnemonic 2020-09-23 09:24:25,132 [1-AWT-EventQueue-0] ERROR VASSAL.i18n.BundleHelper - No Translation: Wizard.Finish_mnemonic 2020-09-23 09:24:25,132 [1-AWT-EventQueue-0] ERROR VASSAL.i18n.BundleHelper - No Translation: Wizard.Cancel_mnemonic 2020-09-23 09:24:37,320 [1-AWT-EventQueue-0] ERROR VASSAL.tools.ErrorDialog - java.lang.NegativeArraySizeException: -40 at java.desktop/java.awt.image.DataBufferInt.<init>(Unknown Source) at java.desktop/java.awt.image.Raster.createPackedRaster(Unknown Source) at java.desktop/java.awt.image.DirectColorModel.createCompatibleWritableRaster(Unknown Source) at java.desktop/java.awt.image.BufferedImage.<init>(Unknown Source) at java.desktop/com.apple.laf.AquaPainter$AquaSingleImagePainter.createImage(Unknown Source) at java.desktop/com.apple.laf.AquaPainter$AquaSingleImagePainter.lambda$paintFromSingleCachedImage$0(Unknown Source) at java.desktop/sun.awt.image.MultiResolutionCachedImage.getResolutionVariant(Unknown Source) at java.desktop/sun.java2d.SunGraphics2D.getResolutionVariant(Unknown Source) at java.desktop/sun.java2d.SunGraphics2D.drawHiDPIImage(Unknown Source) at java.desktop/sun.java2d.SunGraphics2D.drawImage(Unknown Source) at java.desktop/sun.java2d.SunGraphics2D.drawImage(Unknown Source) at java.desktop/com.apple.laf.AquaPainter$AquaSingleImagePainter.paintFromSingleCachedImage(Unknown Source) at java.desktop/com.apple.laf.AquaPainter$AquaSingleImagePainter.paint(Unknown Source) at java.desktop/com.apple.laf.AquaPainter.paint(Unknown Source) at java.desktop/com.apple.laf.AquaTextFieldBorder.paintBorder(Unknown Source) at java.desktop/javax.swing.JComponent.paintBorder(Unknown Source) at java.desktop/javax.swing.JComponent.paint(Unknown Source) at java.desktop/javax.swing.JComponent.paintChildren(Unknown Source) at java.desktop/javax.swing.JComponent.paint(Unknown Source) at java.desktop/javax.swing.JComponent.paintChildren(Unknown Source) at java.desktop/javax.swing.JComponent.paint(Unknown Source) at java.desktop/javax.swing.JComponent.paintChildren(Unknown Source) at java.desktop/javax.swing.JComponent.paint(Unknown Source) at java.desktop/javax.swing.JLayeredPane.paint(Unknown Source) at java.desktop/javax.swing.JComponent.paintChildren(Unknown Source) at java.desktop/javax.swing.JComponent.paintToOffscreen(Unknown Source) at java.desktop/javax.swing.RepaintManager$PaintManager.paintDoubleBufferedImpl(Unknown Source) at java.desktop/javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(Unknown Source) at java.desktop/javax.swing.RepaintManager$PaintManager.paint(Unknown Source) at java.desktop/javax.swing.RepaintManager.paint(Unknown Source) at java.desktop/javax.swing.JComponent.paint(Unknown Source) at java.desktop/java.awt.GraphicsCallback$PaintCallback.run(Unknown Source) at java.desktop/sun.awt.SunGraphicsCallback.runOneComponent(Unknown Source) at java.desktop/sun.awt.SunGraphicsCallback.runComponents(Unknown Source) at java.desktop/java.awt.Container.paint(Unknown Source) at java.desktop/java.awt.Window.paint(Unknown Source) at java.desktop/javax.swing.RepaintManager$4.run(Unknown Source) at java.desktop/javax.swing.RepaintManager$4.run(Unknown Source) at java.base/java.security.AccessController.doPrivileged(Unknown Source) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) at java.desktop/javax.swing.RepaintManager.paintDirtyRegions(Unknown Source) at java.desktop/javax.swing.RepaintManager.paintDirtyRegions(Unknown Source) at java.desktop/javax.swing.RepaintManager.prePaintDirtyRegions(Unknown Source) at java.desktop/javax.swing.RepaintManager$ProcessingRunnable.run(Unknown Source) at java.desktop/java.awt.event.InvocationEvent.dispatch(Unknown Source) at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source) at java.desktop/java.awt.EventQueue$4.run(Unknown Source) at java.desktop/java.awt.EventQueue$4.run(Unknown Source) at java.base/java.security.AccessController.doPrivileged(Unknown Source) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source) at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.desktop/java.awt.EventDispatchThread.run(Unknown Source) 2020-09-23 09:27:16,615 [1-write game.vassalengine.org/62.210.178.7] WARN VASSAL.tools.logging.LoggedOutputStream - Sent keep-alive 2020-09-23 09:28:23,007 [0-SwingWorker-pool-1-thread-2] INFO VASSAL.launch.AbstractLaunchAction - Loading module file /Users/Mark/Documents/Vassal Modules/CCNapoleonics3_42.vmod

Negative array size, and no Vassal code in the stacktrace. Fun times :smiley:

Is the exception repeatable when you try to send a PM? Do you recall at exactly what point the exception happened?

The error is consistantly repeated for me. Also, a gaming buddy told me that he was experiencing the same problem. We both use Mac but he is on Linux.

Here is the log from the time it happened this afternoon, both of us on v3.4.3 This time, I tried to send a PM and the whole Vassal (JVM?) session hung up. On my buddy’s advice, I waited rather than terminating the session. After about a minute or so, the Vassal session gave the crash dump. Here is the last part; once against showing the array out of bounds error.

VASSAL.script.expression.ExpressionException: null at VASSAL.script.ExpressionInterpreter.evaluate(ExpressionInterpreter.java:311) at VASSAL.script.expression.BeanShellExpression.evaluate(BeanShellExpression.java:51) at VASSAL.script.expression.Expression.evaluate(Expression.java:64) at VASSAL.counters.Embellishment.checkPropertyLevel(Embellishment.java:550) at VASSAL.counters.Embellishment.getName(Embellishment.java:384) at VASSAL.counters.Embellishment.getName(Embellishment.java:380) at VASSAL.counters.Restricted.getName(Restricted.java:108) at VASSAL.counters.Labeler.setLabel(Labeler.java:464) at VASSAL.counters.Labeler.mySetState(Labeler.java:234) at VASSAL.build.GpIdChecker$SlotElement.copyState(GpIdChecker.java:378) at VASSAL.build.GpIdChecker$SlotElement.createPiece(GpIdChecker.java:353) at VASSAL.build.GpIdChecker.createUpdatedPiece(GpIdChecker.java:219) at VASSAL.build.module.GameRefresher.processGamePiece(GameRefresher.java:231) at VASSAL.build.module.GameRefresher.execute(GameRefresher.java:182) at VASSAL.build.module.GameRefresher$RefreshDialog.run(GameRefresher.java:361) at VASSAL.build.module.GameRefresher$RefreshDialog.lambda$initComponents$1(GameRefresher.java:329) at java.desktop/javax.swing.AbstractButton.fireActionPerformed(Unknown Source) at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) at java.desktop/javax.swing.DefaultButtonModel.setPressed(Unknown Source) at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source) at java.desktop/java.awt.Component.processMouseEvent(Unknown Source) at java.desktop/javax.swing.JComponent.processMouseEvent(Unknown Source) at java.desktop/java.awt.Component.processEvent(Unknown Source) at java.desktop/java.awt.Container.processEvent(Unknown Source) at java.desktop/java.awt.Component.dispatchEventImpl(Unknown Source) at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source) at java.desktop/java.awt.Component.dispatchEvent(Unknown Source) at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source) at java.desktop/java.awt.Window.dispatchEventImpl(Unknown Source) at java.desktop/java.awt.Component.dispatchEvent(Unknown Source) at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source) at java.desktop/java.awt.EventQueue$4.run(Unknown Source) at java.desktop/java.awt.EventQueue$4.run(Unknown Source) at java.base/java.security.AccessController.doPrivileged(Unknown Source) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) at java.desktop/java.awt.EventQueue$5.run(Unknown Source) at java.desktop/java.awt.EventQueue$5.run(Unknown Source) at java.base/java.security.AccessController.doPrivileged(Unknown Source) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source) at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.desktop/java.awt.WaitDispatchSupport$2.run(Unknown Source) at java.desktop/java.awt.WaitDispatchSupport$4.run(Unknown Source) at java.desktop/java.awt.WaitDispatchSupport$4.run(Unknown Source) at java.base/java.security.AccessController.doPrivileged(Unknown Source) at java.desktop/java.awt.WaitDispatchSupport.enter(Unknown Source) at java.desktop/java.awt.Dialog.show(Unknown Source) at java.desktop/java.awt.Component.show(Unknown Source) at java.desktop/java.awt.Component.setVisible(Unknown Source) at java.desktop/java.awt.Window.setVisible(Unknown Source) at java.desktop/java.awt.Dialog.setVisible(Unknown Source) at VASSAL.build.module.GameRefresher.start(GameRefresher.java:105) at VASSAL.build.module.GameRefresher$1.actionPerformed(GameRefresher.java:88) at java.desktop/javax.swing.AbstractButton.fireActionPerformed(Unknown Source) at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) at java.desktop/javax.swing.DefaultButtonModel.setPressed(Unknown Source) at java.desktop/javax.swing.AbstractButton.doClick(Unknown Source) at java.desktop/com.apple.laf.ScreenMenuItem.actionPerformed(Unknown Source) at java.desktop/java.awt.MenuItem.processActionEvent(Unknown Source) at java.desktop/java.awt.MenuItem.processEvent(Unknown Source) at java.desktop/java.awt.MenuComponent.dispatchEventImpl(Unknown Source) at java.desktop/java.awt.MenuComponent.dispatchEvent(Unknown Source) at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source) at java.desktop/java.awt.EventQueue$4.run(Unknown Source) at java.desktop/java.awt.EventQueue$4.run(Unknown Source) at java.base/java.security.AccessController.doPrivileged(Unknown Source) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) at java.desktop/java.awt.EventQueue$5.run(Unknown Source) at java.desktop/java.awt.EventQueue$5.run(Unknown Source) at java.base/java.security.AccessController.doPrivileged(Unknown Source) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source) at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.desktop/java.awt.EventDispatchThread.run(Unknown Source) 2020-09-24 14:03:48,676 [11-AWT-EventQueue-0] ERROR VASSAL.build.module.GameRefresher - Can't refresh piece dicetray: No Map 2020-09-24 14:04:29,726 [13-AWT-EventQueue-0] ERROR VASSAL.i18n.BundleHelper - No Translation: Wizard.Next_mnemonic 2020-09-24 14:04:29,727 [13-AWT-EventQueue-0] ERROR VASSAL.i18n.BundleHelper - No Translation: Wizard.Prev_mnemonic 2020-09-24 14:04:29,727 [13-AWT-EventQueue-0] ERROR VASSAL.i18n.BundleHelper - No Translation: Wizard.Finish_mnemonic 2020-09-24 14:04:29,728 [13-AWT-EventQueue-0] ERROR VASSAL.i18n.BundleHelper - No Translation: Wizard.Cancel_mnemonic 2020-09-24 14:04:29,728 [13-AWT-EventQueue-0] ERROR VASSAL.i18n.BundleHelper - No Translation: Wizard.Help_mnemonic 2020-09-24 14:06:13,959 [13-AWT-EventQueue-0] INFO VASSAL.script.ExpressionInterpreter - Attempting to load /VASSAL/script/init_expression.bsh URI generated=jar:file:/Applications/VASSAL-3.4.3-8a786d685.app/Contents/Resources/Java/Vengine.jar!/VASSAL/script/init_expression.bsh 2020-09-24 14:08:17,371 [13-write game.vassalengine.org/62.210.178.7] WARN VASSAL.tools.logging.LoggedOutputStream - Sent keep-alive 2020-09-24 14:15:16,349 [13-write game.vassalengine.org/62.210.178.7] WARN VASSAL.tools.logging.LoggedOutputStream - Sent keep-alive 2020-09-24 14:17:16,358 [13-write game.vassalengine.org/62.210.178.7] WARN VASSAL.tools.logging.LoggedOutputStream - Sent keep-alive 2020-09-24 14:17:32,324 [13-AWT-EventQueue-0] ERROR VASSAL.tools.ErrorDialog - java.lang.NegativeArraySizeException: -40 at java.desktop/java.awt.image.DataBufferInt.<init>(Unknown Source) at java.desktop/java.awt.image.Raster.createPackedRaster(Unknown Source) at java.desktop/java.awt.image.DirectColorModel.createCompatibleWritableRaster(Unknown Source) at java.desktop/java.awt.image.BufferedImage.<init>(Unknown Source) at java.desktop/com.apple.laf.AquaPainter$AquaSingleImagePainter.createImage(Unknown Source) at java.desktop/com.apple.laf.AquaPainter$AquaSingleImagePainter.lambda$paintFromSingleCachedImage$0(Unknown Source) at java.desktop/sun.awt.image.MultiResolutionCachedImage.getResolutionVariant(Unknown Source) at java.desktop/sun.java2d.SunGraphics2D.getResolutionVariant(Unknown Source) at java.desktop/sun.java2d.SunGraphics2D.drawHiDPIImage(Unknown Source) at java.desktop/sun.java2d.SunGraphics2D.drawImage(Unknown Source) at java.desktop/sun.java2d.SunGraphics2D.drawImage(Unknown Source) at java.desktop/com.apple.laf.AquaPainter$AquaSingleImagePainter.paintFromSingleCachedImage(Unknown Source) at java.desktop/com.apple.laf.AquaPainter$AquaSingleImagePainter.paint(Unknown Source) at java.desktop/com.apple.laf.AquaPainter.paint(Unknown Source) at java.desktop/com.apple.laf.AquaTextFieldBorder.paintBorder(Unknown Source) at java.desktop/javax.swing.JComponent.paintBorder(Unknown Source) at java.desktop/javax.swing.JComponent.paint(Unknown Source) at java.desktop/javax.swing.JComponent.paintChildren(Unknown Source) at java.desktop/javax.swing.JComponent.paint(Unknown Source) at java.desktop/javax.swing.JComponent.paintChildren(Unknown Source) at java.desktop/javax.swing.JComponent.paint(Unknown Source) at java.desktop/javax.swing.JComponent.paintChildren(Unknown Source) at java.desktop/javax.swing.JComponent.paint(Unknown Source) at java.desktop/javax.swing.JLayeredPane.paint(Unknown Source) at java.desktop/javax.swing.JComponent.paintChildren(Unknown Source) at java.desktop/javax.swing.JComponent.paintToOffscreen(Unknown Source) at java.desktop/javax.swing.RepaintManager$PaintManager.paintDoubleBufferedImpl(Unknown Source) at java.desktop/javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(Unknown Source) at java.desktop/javax.swing.RepaintManager$PaintManager.paint(Unknown Source) at java.desktop/javax.swing.RepaintManager.paint(Unknown Source) at java.desktop/javax.swing.JComponent.paint(Unknown Source) at java.desktop/java.awt.GraphicsCallback$PaintCallback.run(Unknown Source) at java.desktop/sun.awt.SunGraphicsCallback.runOneComponent(Unknown Source) at java.desktop/sun.awt.SunGraphicsCallback.runComponents(Unknown Source) at java.desktop/java.awt.Container.paint(Unknown Source) at java.desktop/java.awt.Window.paint(Unknown Source) at java.desktop/javax.swing.RepaintManager$4.run(Unknown Source) at java.desktop/javax.swing.RepaintManager$4.run(Unknown Source) at java.base/java.security.AccessController.doPrivileged(Unknown Source) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) at java.desktop/javax.swing.RepaintManager.paintDirtyRegions(Unknown Source) at java.desktop/javax.swing.RepaintManager.paintDirtyRegions(Unknown Source) at java.desktop/javax.swing.RepaintManager.prePaintDirtyRegions(Unknown Source) at java.desktop/javax.swing.RepaintManager$ProcessingRunnable.run(Unknown Source) at java.desktop/java.awt.event.InvocationEvent.dispatch(Unknown Source) at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source) at java.desktop/java.awt.EventQueue$4.run(Unknown Source) at java.desktop/java.awt.EventQueue$4.run(Unknown Source) at java.base/java.security.AccessController.doPrivileged(Unknown Source) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source) at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.desktop/java.awt.EventDispatchThread.run(Unknown Source)

Thus spake marktb1961:

The error is consistantly repeated for me. Also, a gaming buddy told me
that he was experiencing the same problem. We both use Mac but he is on
Linux.

Here is the log from the time it happened this afternoon, both of us on
v3.4.3 This time, I tried to send a PM and the whole Vassal (JVM?)
session hung up. On my buddy’s advice, I waited rather than terminating
the session. After about a minute or so, the Vassal session gave the
crash dump. Here is the last part; once against showing the array out of
bounds error.

Thanks for reporting this. We think we’ve solved the problem. Try
VASSAL-3.4.4-SNAPSHOT-0c9d947ed:

vassalengine.org/~uckelman/tmp/


J.

Hi Joel - Thank you. That fix tests out fine - using MacOs to Linux (Fedora, on an old intel laptop).

At the Linux end (still running v3.4.2) when the first message was received, a message popped up about being out of memory, “please increase Max Heap and restart”. Max Heap was already 1024MB, also the module seemed to be otherwise ok - so I didn’t increase it but instead restarted & resynched. A repeat of the message send didn’t trigger the warning message. Maybe nothing to do with this issue, and anyway, it was on v3.4.2 as I said.

Mark