[SOLVED] VASSAL 3.1.2 module manager hangs on startup

VASSAL 3.1.2 (generic version, oops now called linux version I guess)
Fedora 10 (Cambridge) kernel is 2.6.27.18-170.2.35.fc10.x86_64
latest Java (I believe OpenJDK) etc.
Gnome 2.24.3

everything that actually has an arch is 64-bit (x86_64) versions

machine is i7 920 2.67 GHz (8-core) with 6 GB RAM (reports as 5.8 GiB in System Monitor)

It used to work, this version even. But it has been since the 20th or 22nd of March that I last tried.

On starting the module manager appears, but it does not respond to any mouse commands, including the menu. So I can not even shut it down. In fact, even the window control box (whatever you call that in Fedora, the min/max/close thing in the top-right) while it will at least seem to respond to a click (unlike the menu) will not actually do anything. And the window will not repaint itself either if I bring something else over top. I can however drag the window around still, but can’t do anything else with it including close it or get it to re-paint.

error log in my VASSAL folder says only…
1238035885776 83494116 – Starting
1238035885776 83494116 – OS Linux
1238035885776 83494116 – Java version 1.6.0_0
1238035885776 83494116 – VASSAL version 3.1.2
1238035885782 83494116 – Manager

during hang System Monitor entries (CPU, RAM) do not seem too bizarre except Java is at only 62 MB and is sleeping in “futex_wait” for a waiting channel. VASSAL.sh is sleeping in “do_wait” for a waiting channel. This continues even after attempting to close the window.

System shutdown and restart and still hangs.

I have 3.1.0 still on the machine I can change to use that in need (hopefully does not have the same problem - but I do not think I have put a lot of hours in on any of the 3.1 non-beta releases yet).

no rush, when you think of something to try let me know.

Don’t use OpenJDK. As much as I’d love to like it, it fails miserably with VASSAL on my machine.

Get the SunJDK. There’s any number of reasons why it suddenly started failing.

  • M.

2009/3/26 IrishBouzouki <messages@forums.vassalengine.org (messages@forums.vassalengine.org)>


Michael Kiefte, Ph.D.
Associate Professor
School of Human Communication Disorders
Dalhousie University
Halifax, Nova Scotia, Canada
tel: +1 902 494 5150
fax: +1 902 494 5151

Post generated using Mail2Forum (mail2forum.com)

Thus spake Michael Kiefte:

This is a Fedora 10 machine, just like mine. I’ve been using OpenJDK for
months with no problems. I doubt this is a problem with OpenJDK, so long
as it’s the current package.

I would recommend making sure that all of your packages are current first.


J.


Messages mailing list
Messages@forums.vassalengine.org
forums.vassalengine.org/mailman/ … engine.org

Post generated using Mail2Forum (mail2forum.com)

Thus spake Joel Uckelman:

It occurred to me on the way to the office that since you’re using Fedora,
I can tell you exactly how to determine what the problem is.

  1. Make sure that you have the java-1.6.0-openjdk-devel package installed:

rpm -q java-1.6.0-openjdk-devel

will tell you whether it is. If not, do ‘yum install java-1.6.0-openjdk-devel’
(as root) to get it, or use whatever other package manager you use.

  1. cd to the directory where VASSAL.sh is.

  2. Run VASSAL:

java -agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n -classpath lib/Vengine.jar VASSAL.launch.ModuleManager

  1. In a different terminal, start the debugger:

jdb -attach 8000

  1. In the debugger, type the following commands:

suspend
where all

After typing ‘suspend’ and hitting enter, it should say “All threads
suspended.”. After typing ‘where all’, you should get a stack trace for
each thread. Please copy this output and post it here. This will tell
us where VASSAL is getting hung up.

  1. You can stop the debugger by typing ‘quit’, and kill VASSAL now.


J.


Messages mailing list
Messages@forums.vassalengine.org
forums.vassalengine.org/mailman/ … engine.org

Post generated using Mail2Forum (mail2forum.com)

[john-murphy@localhost ~]$ rpm -q java-1.6.0-openjdk-devel java-1.6.0-openjdk-devel-1.6.0.0-11.b14.fc10.x86_64 [john-murphy@localhost ~]$ ls Desktop Music Templates VASSAL-3.1.2 Videos Documents Pictures VASSAL VASSAL.games workspace Download Public VASSAL-3.1.0 VASSAL.modules [john-murphy@localhost ~]$ cd VASSAL-3.1.2 [john-murphy@localhost VASSAL-3.1.2]$ ls doc lib VASSAL.bat VASSAL.sh [john-murphy@localhost VASSAL-3.1.2]$ java -agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n -classpath lib/Vengine.jar VASSAL.launch.ModuleManager Listening for transport dt_socket at address: 8000 ^CListening for transport dt_socket at address: 8000 [john-murphy@localhost VASSAL-3.1.2]$

[code][john-murphy@localhost ~]$ jdb -attach 8000
Set uncaught java.lang.Throwable
Set deferred uncaught java.lang.Throwable
Initializing jdb …

suspend
All threads suspended.
where all
DestroyJavaVM:
TimerQueue:
[1] sun.misc.Unsafe.park (native method)
[2] java.util.concurrent.locks.LockSupport.park (LockSupport.java:186)
[3] java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await (AbstractQueuedSynchronizer.java:1,978)
[4] java.util.concurrent.DelayQueue.take (DelayQueue.java:189)
[5] javax.swing.TimerQueue.run (TimerQueue.java:170)
[6] java.lang.Thread.run (Thread.java:636)
Thread-2:
[1] java.net.PlainSocketImpl.socketAccept (native method)
[2] java.net.AbstractPlainSocketImpl.accept (AbstractPlainSocketImpl.java:358)
[3] java.net.ServerSocket.implAccept (ServerSocket.java:470)
[4] java.net.ServerSocket.accept (ServerSocket.java:438)
[5] VASSAL.launch.ModuleManager$SocketListener.run (ModuleManager.java:345)
[6] java.lang.Thread.run (Thread.java:636)
Thread-1:
[1] sun.misc.Unsafe.park (native method)
[2] java.util.concurrent.locks.LockSupport.park (LockSupport.java:186)
[3] java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await (AbstractQueuedSynchronizer.java:1,978)
[4] java.util.concurrent.LinkedBlockingQueue.take (LinkedBlockingQueue.java:386)
[5] VASSAL.tools.logging.LogManager$1.run (LogManager.java:55)
[6] java.lang.Thread.run (Thread.java:636)
AWT-EventQueue-0:
[1] sun.awt.X11.XInputMethod.openXIMNative (native method)
[2] sun.awt.X11.XInputMethod.openXIM (XInputMethod.java:62)
[3] sun.awt.X11InputMethod.initXIM (X11InputMethod.java:202)
[4] sun.awt.X11InputMethod. (X11InputMethod.java:186)
[5] sun.awt.X11.XInputMethod. (XInputMethod.java:47)
[6] sun.awt.X11.XInputMethodDescriptor.createInputMethod (XInputMethodDescriptor.java:38)
[7] sun.awt.im.InputContext.getInputMethodInstance (InputContext.java:852)
[8] sun.awt.im.InputContext.getInputMethod (InputContext.java:802)
[9] sun.awt.im.InputContext.dispatchEvent (InputContext.java:239)
[10] sun.awt.im.InputMethodContext.dispatchEvent (InputMethodContext.java:197)
[11] java.awt.Component.dispatchEventImpl (Component.java:4,401)
[12] java.awt.Container.dispatchEventImpl (Container.java:2,163)
[13] java.awt.Component.dispatchEvent (Component.java:4,295)
[14] java.awt.KeyboardFocusManager.redispatchEvent (KeyboardFocusManager.java:1,881)
[15] java.awt.DefaultKeyboardFocusManager.typeAheadAssertions (DefaultKeyboardFocusManager.java:918)
[16] java.awt.DefaultKeyboardFocusManager.dispatchEvent (DefaultKeyboardFocusManager.java:550)
[17] java.awt.Component.dispatchEventImpl (Component.java:4,339)
[18] java.awt.Container.dispatchEventImpl (Container.java:2,163)
[19] java.awt.Component.dispatchEvent (Component.java:4,295)
[20] sun.awt.X11.XWindow$1.run (XWindow.java:378)
[21] java.awt.event.InvocationEvent.dispatch (InvocationEvent.java:226)
[22] java.awt.EventQueue.dispatchEvent (EventQueue.java:602)
[23] java.awt.EventDispatchThread.pumpOneEventForFilters (EventDispatchThread.java:275)
[24] java.awt.EventDispatchThread.pumpEventsForFilter (EventDispatchThread.java:200)
[25] java.awt.EventDispatchThread.pumpEventsForHierarchy (EventDispatchThread.java:190)
[26] java.awt.EventDispatchThread.pumpEvents (EventDispatchThread.java:185)
[27] java.awt.EventDispatchThread.pumpEvents (EventDispatchThread.java:177)
[28] java.awt.EventDispatchThread.run (EventDispatchThread.java:138)
AWT-Shutdown:
[1] java.lang.Object.wait (native method)
[2] java.lang.Object.wait (Object.java:502)
[3] sun.awt.AWTAutoShutdown.run (AWTAutoShutdown.java:281)
[4] java.lang.Thread.run (Thread.java:636)
AWT-XAWT:
[1] sun.misc.Unsafe.park (native method)
[2] java.util.concurrent.locks.LockSupport.park (LockSupport.java:186)
[3] java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt (AbstractQueuedSynchronizer.java:773)
[4] java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued (AbstractQueuedSynchronizer.java:806)
[5] java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire (AbstractQueuedSynchronizer.java:1,136)
[6] java.util.concurrent.locks.ReentrantLock$NonfairSync.lock (ReentrantLock.java:214)
[7] java.util.concurrent.locks.ReentrantLock.lock (ReentrantLock.java:290)
[8] sun.awt.SunToolkit.awtLock (SunToolkit.java:270)
[9] sun.awt.X11.XToolkit.waitForEvents (native method)
[10] sun.awt.X11.XToolkit.run (XToolkit.java:543)
[11] sun.awt.X11.XToolkit.run (XToolkit.java:518)
[12] java.lang.Thread.run (Thread.java:636)
Java2D Disposer:
[1] java.lang.Object.wait (native method)
[2] java.lang.ref.ReferenceQueue.remove (ReferenceQueue.java:133)
[3] java.lang.ref.ReferenceQueue.remove (ReferenceQueue.java:149)
[4] sun.java2d.Disposer.run (Disposer.java:143)
[5] java.lang.Thread.run (Thread.java:636)
Signal Dispatcher:
Finalizer:
[1] java.lang.Object.wait (native method)
[2] java.lang.ref.ReferenceQueue.remove (ReferenceQueue.java:133)
[3] java.lang.ref.ReferenceQueue.remove (ReferenceQueue.java:149)
[4] java.lang.ref.Finalizer$FinalizerThread.run (Finalizer.java:177)
Reference Handler:
[1] java.lang.Object.wait (native method)
[2] java.lang.Object.wait (Object.java:502)
[3] java.lang.ref.Reference$ReferenceHandler.run (Reference.java:133)
[/code]

Thus spake “IrishBouzouki”:

This is current. Did you check that all of your other packages are current?
(‘yum update’ if you’re root. ‘sudo yum update’ is better, though, if you’ve
set up sudo. That way you don’t have to become root.)

Had the MM already stopped responding when you did this? How long had it
been running?


J.


Messages mailing list
Messages@forums.vassalengine.org
forums.vassalengine.org/mailman/ … engine.org

Post generated using Mail2Forum (mail2forum.com)

Hi Joel,

Everything should be current as I update and check almost every day - except when the Fedora folks, or more likely their upstream contributors, mess something up on the networking or package management side or put up a package with dependency issues (only twice since November for me). In fact I would not be surprised if that occasionally bit me as sometimes things get pushed that are not quite ready for prime time after all.

Yes it never even seems to START responding… ‘hangs’ as soon as it starts.
I believe it had been running only long enough for me to verify it was hung, to open a new terminal, and to type the commands, say 15 or 20 seconds?

jjm

Thus spake “IrishBouzouki”:

If you’re current, then you have the same packages as I have.

Try waiting a bit longer, say, 5 minutes, before suspending the threads
and dumping their stacks, and post that for me. I want to see if there’s
any difference.


J.


Messages mailing list
Messages@forums.vassalengine.org
forums.vassalengine.org/mailman/ … engine.org

Post generated using Mail2Forum (mail2forum.com)

Okay, again launched VASSAL from the terminal as follows…

[john-murphy@localhost ~]$ ls Desktop Music Templates VASSAL-3.1.2 Videos Documents Pictures VASSAL VASSAL.games workspace Download Public VASSAL-3.1.0 VASSAL.modules [john-murphy@localhost ~]$ cd VASSAL-3.1.2 [john-murphy@localhost VASSAL-3.1.2]$ ls doc lib VASSAL.bat VASSAL.sh [john-murphy@localhost VASSAL-3.1.2]$ java -agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n -classpath lib/Vengine.jar VASSAL.launch.ModuleManager Listening for transport dt_socket at address: 8000

I then attached the debugger right away but then waited between 5 and 6 minutes (and checked it was still having issues - I could tell because the entire module manager screen was blank from not being re-painted) before suspending. Here is the dump…

[code][john-murphy@localhost ~]$ jdb -attach 8000
Set uncaught java.lang.Throwable
Set deferred uncaught java.lang.Throwable
Initializing jdb …

suspend
All threads suspended.
where all
DestroyJavaVM:
TimerQueue:
[1] sun.misc.Unsafe.park (native method)
[2] java.util.concurrent.locks.LockSupport.park (LockSupport.java:186)
[3] java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await (AbstractQueuedSynchronizer.java:1,978)
[4] java.util.concurrent.DelayQueue.take (DelayQueue.java:189)
[5] javax.swing.TimerQueue.run (TimerQueue.java:170)
[6] java.lang.Thread.run (Thread.java:636)
Thread-2:
[1] java.net.PlainSocketImpl.socketAccept (native method)
[2] java.net.AbstractPlainSocketImpl.accept (AbstractPlainSocketImpl.java:358)
[3] java.net.ServerSocket.implAccept (ServerSocket.java:470)
[4] java.net.ServerSocket.accept (ServerSocket.java:438)
[5] VASSAL.launch.ModuleManager$SocketListener.run (ModuleManager.java:345)
[6] java.lang.Thread.run (Thread.java:636)
Thread-1:
[1] sun.misc.Unsafe.park (native method)
[2] java.util.concurrent.locks.LockSupport.park (LockSupport.java:186)
[3] java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await (AbstractQueuedSynchronizer.java:1,978)
[4] java.util.concurrent.LinkedBlockingQueue.take (LinkedBlockingQueue.java:386)
[5] VASSAL.tools.logging.LogManager$1.run (LogManager.java:55)
[6] java.lang.Thread.run (Thread.java:636)
AWT-EventQueue-0:
[1] sun.awt.X11.XInputMethod.openXIMNative (native method)
[2] sun.awt.X11.XInputMethod.openXIM (XInputMethod.java:62)
[3] sun.awt.X11InputMethod.initXIM (X11InputMethod.java:202)
[4] sun.awt.X11InputMethod. (X11InputMethod.java:186)
[5] sun.awt.X11.XInputMethod. (XInputMethod.java:47)
[6] sun.awt.X11.XInputMethodDescriptor.createInputMethod (XInputMethodDescriptor.java:38)
[7] sun.awt.im.InputContext.getInputMethodInstance (InputContext.java:852)
[8] sun.awt.im.InputContext.getInputMethod (InputContext.java:802)
[9] sun.awt.im.InputContext.dispatchEvent (InputContext.java:239)
[10] sun.awt.im.InputMethodContext.dispatchEvent (InputMethodContext.java:197)
[11] java.awt.Component.dispatchEventImpl (Component.java:4,401)
[12] java.awt.Container.dispatchEventImpl (Container.java:2,163)
[13] java.awt.Component.dispatchEvent (Component.java:4,295)
[14] java.awt.LightweightDispatcher.retargetMouseEvent (Container.java:4,461)
[15] java.awt.LightweightDispatcher.trackMouseEnterExit (Container.java:4,250)
[16] java.awt.LightweightDispatcher.processMouseEvent (Container.java:4,107)
[17] java.awt.LightweightDispatcher.dispatchEvent (Container.java:4,055)
[18] java.awt.Container.dispatchEventImpl (Container.java:2,149)
[19] java.awt.Window.dispatchEventImpl (Window.java:2,478)
[20] java.awt.Component.dispatchEvent (Component.java:4,295)
[21] java.awt.EventQueue.dispatchEvent (EventQueue.java:604)
[22] java.awt.EventDispatchThread.pumpOneEventForFilters (EventDispatchThread.java:275)
[23] java.awt.EventDispatchThread.pumpEventsForFilter (EventDispatchThread.java:200)
[24] java.awt.EventDispatchThread.pumpEventsForHierarchy (EventDispatchThread.java:190)
[25] java.awt.EventDispatchThread.pumpEvents (EventDispatchThread.java:185)
[26] java.awt.EventDispatchThread.pumpEvents (EventDispatchThread.java:177)
[27] java.awt.EventDispatchThread.run (EventDispatchThread.java:138)
AWT-Shutdown:
[1] java.lang.Object.wait (native method)
[2] java.lang.Object.wait (Object.java:502)
[3] sun.awt.AWTAutoShutdown.run (AWTAutoShutdown.java:281)
[4] java.lang.Thread.run (Thread.java:636)
AWT-XAWT:
[1] sun.misc.Unsafe.park (native method)
[2] java.util.concurrent.locks.LockSupport.park (LockSupport.java:186)
[3] java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt (AbstractQueuedSynchronizer.java:773)
[4] java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued (AbstractQueuedSynchronizer.java:806)
[5] java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire (AbstractQueuedSynchronizer.java:1,136)
[6] java.util.concurrent.locks.ReentrantLock$NonfairSync.lock (ReentrantLock.java:214)
[7] java.util.concurrent.locks.ReentrantLock.lock (ReentrantLock.java:290)
[8] sun.awt.SunToolkit.awtLock (SunToolkit.java:270)
[9] sun.awt.X11.XToolkit.waitForEvents (native method)
[10] sun.awt.X11.XToolkit.run (XToolkit.java:543)
[11] sun.awt.X11.XToolkit.run (XToolkit.java:518)
[12] java.lang.Thread.run (Thread.java:636)
Java2D Disposer:
[1] java.lang.Object.wait (native method)
[2] java.lang.ref.ReferenceQueue.remove (ReferenceQueue.java:133)
[3] java.lang.ref.ReferenceQueue.remove (ReferenceQueue.java:149)
[4] sun.java2d.Disposer.run (Disposer.java:143)
[5] java.lang.Thread.run (Thread.java:636)
Signal Dispatcher:
Finalizer:
[1] java.lang.Object.wait (native method)
[2] java.lang.ref.ReferenceQueue.remove (ReferenceQueue.java:133)
[3] java.lang.ref.ReferenceQueue.remove (ReferenceQueue.java:149)
[4] java.lang.ref.Finalizer$FinalizerThread.run (Finalizer.java:177)
Reference Handler:
[1] java.lang.Object.wait (native method)
[2] java.lang.Object.wait (Object.java:502)
[3] java.lang.ref.Reference$ReferenceHandler.run (Reference.java:133)
[/code]

I have 27 system updates pending, but they just came “down the pipe” today and are since this problem started. I am waiting to do them so it does not impact troubleshooting this.

Two of them are security updates pertinent to this investigation… one to OpenJDK…

java-1.6.0-openjdk-devel-1:1.6.0.0-13.b14.fc10.x86_64

and one to the runtime…

java-1.6.0-openjdk-1:1.6.0.0-13.b14.fc10.x86_64

lol

btw when I quit the debugger it takes down the hung VASSAL cleanly… but I take it you expect that to happen.

just mentioned for completeness

Thus spake “IrishBouzouki”:

The method openXIMNative at the top of the event queue thread is the one
which is hanging. (I wanted to verify that the event queue stack trace
was the same no matter how long you waited.)

I hunted around and think this is your bug:

bugzilla.redhat.com/show_bug.cgi?id=491813

Java calls a function in libX11, and there’s a problem with libX11-1.1.5-1.
It appears to affect only 32-bit systems. (As evidence, I’m using that
version of libX11 on a 64-bit system, and it works fine for me.)

There’s already an update which has been pushed out, libX11-1.1.5-2, so the
next time you do a ‘yum update’ you should pick it up. (Sanity check: do
an ‘rpm -q libX11’ to check that you don’t already have libX11-1.1.5-2. If
you do already have libX11-1.1.5-2, then the problem is not really fixed
and we should reopen this bug.)


J.


Messages mailing list
Messages@forums.vassalengine.org
forums.vassalengine.org/mailman/ … engine.org

Post generated using Mail2Forum (mail2forum.com)

but… note I AM using 64 bit system and 64 bit software.

[john-murphy@localhost ~]$ rpm -q libX11 libX11-1.1.5-1.fc10.x86_64

except I just ran a refresh and checked for updates (both with the gnome gui - that is what I use normally) and this package is not on the list!

Thus spake “IrishBouzouki”:

Further down the comments some people say that it does affect some 64-bit
systems. I hadn’t read to the bottom when I typed that.

The update was pushed today, so most likely it hasn’t made it to the mirror
you’re using yet. If you don’t want to wait for it, you can get the RPM
here

koji.fedoraproject.org/koji/buil … ldID=95426

and install it using ‘rpm -Uvh’. (You might also need to update libX11-devel,
if you have that installed.)


J.


Messages mailing list
Messages@forums.vassalengine.org
forums.vassalengine.org/mailman/ … engine.org

Post generated using Mail2Forum (mail2forum.com)

the last I remember doing before this started happening was I tried to open the La Bataille de France 1940 extension for A Las Barricades! as a module instead of an extension. Could not believe it did not open so I did it twice in fact and got the error dialog both times.

Just as a lark try doing that twice then restart your system and see if VASSAL hangs.

Otherwise if this looks untraceable any further I think I will go ahead and apply the new openjdk update mentioned a few posts back.

okay I see there is also a new bug 492018, which looks destined to be flagged as a duplicate, where the first comment is that it affects 64 bit systems also.

I think the best approach here is to go ahead and update and resolve this as a X11-java problem and certainly not a VASSAL one.

Thanks for all your help Joel.

Thus spake “IrishBouzouki”:

This is not to discourage you from keeping your system up-to-date, but
installing the newet OpenJDK package won’t make any difference. The problem
is with libX11.


J.


Messages mailing list
Messages@forums.vassalengine.org
forums.vassalengine.org/mailman/ … engine.org

Post generated using Mail2Forum (mail2forum.com)

Thus spake “IrishBouzouki”:

Please let us know whether installing the libX11 updated sovles the problem
for you.


J.


Messages mailing list
Messages@forums.vassalengine.org
forums.vassalengine.org/mailman/ … engine.org

Post generated using Mail2Forum (mail2forum.com)

Thus spake Michael Kiefte:

You should file a bug with Ubuntu, then. The Fedora build of OpenJDK works
fine.


J.


Messages mailing list
Messages@forums.vassalengine.org
forums.vassalengine.org/mailman/ … engine.org

Post generated using Mail2Forum (mail2forum.com)

Well you pegged that one. Changing from -11 to -13 or whatever it was per the security update for openjdk makes no difference.

I can wait for the X11 update to show up wherever it is my repos are pointed.

Of course this all means switching back to VASSAL 3.1.0 would have made no difference either. Luckily my online opponent for Clash of Monarchs “Old Fritz” regularly falls asleep at the Schnapps on me so he should mind waiting a couple days, if I even see his move by then!

But it would be kind of nice to be able to play some more with my module editor soon so hopefully it will not take too long.

EDIT - I finally got my repo mirror to show the update and indeed I can confirm that the update to X11 fixes this problem. Many thanks yet once again Joel.