You can subscribe to this list here.
| 2007 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(23) |
Aug
(6) |
Sep
(15) |
Oct
(31) |
Nov
(22) |
Dec
(47) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2008 |
Jan
(21) |
Feb
(19) |
Mar
(10) |
Apr
(15) |
May
(25) |
Jun
|
Jul
(6) |
Aug
(91) |
Sep
(85) |
Oct
(192) |
Nov
(14) |
Dec
(11) |
| 2009 |
Jan
(19) |
Feb
(8) |
Mar
(14) |
Apr
(1) |
May
(5) |
Jun
(6) |
Jul
(54) |
Aug
(115) |
Sep
(56) |
Oct
(21) |
Nov
(39) |
Dec
(7) |
| 2010 |
Jan
(54) |
Feb
(15) |
Mar
(15) |
Apr
(14) |
May
(4) |
Jun
(10) |
Jul
(6) |
Aug
(6) |
Sep
(10) |
Oct
(3) |
Nov
(1) |
Dec
(16) |
| 2011 |
Jan
(13) |
Feb
(92) |
Mar
(11) |
Apr
(9) |
May
(5) |
Jun
|
Jul
(5) |
Aug
(7) |
Sep
(2) |
Oct
(3) |
Nov
(10) |
Dec
(5) |
| 2012 |
Jan
(4) |
Feb
(19) |
Mar
(5) |
Apr
(6) |
May
(10) |
Jun
(2) |
Jul
(1) |
Aug
(8) |
Sep
(2) |
Oct
(2) |
Nov
(5) |
Dec
(3) |
| 2013 |
Jan
|
Feb
(32) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: SourceForge.net <no...@so...> - 2011-02-15 10:29:06
|
Bugs item #3043368, was opened at 2010-08-12 02:04 Message generated for change (Comment added) made by cleka You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101939&aid=3043368&group_id=1939 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: Network Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: https://www.google.com/accounts () Assigned to: Nobody/Anonymous (nobody) Summary: Can't start a new game Initial Comment: I downloaded the zip file and launched Colossus.jar. I get as far as the Game Setup screen. Then, when I click New Game, I get this error: Could not create server side socket. Configure networking in OS, or check that no previous Colossus instance got stuck and is blocking the socket. Got IOException: java.io.IOException: Unable to establish loopback connection I tried rebooting and that didn't help. ---------------------------------------------------------------------- >Comment By: Clemens Katzer (cleka) Date: 2011-02-15 12:29 Message: Hello, is this still an isse? Is it tracked/handled via some other way? I tried to contact you via the SF "Send me a messge" method but that did not work. Please contact me (e.g. a mail to my SF email alias: my user id, i.e. cleka, then the magic a-like character, and then users , sourceforge, net. Use your imagination to create a valid email from above :) Or write something here how I can contact you... If I don't hear anything from you within, let's say, 4 weeks, I will close it because there's nothing I can do to it. BR, Clemens ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2010-08-12 08:43 Message: This happens already the very first time, right? I.e. never before run Colossus? Which operating system and version? The message sounds like as if the network configuration/settings on your computer are unusual / different from what most computers have by default nowadays. In particular, normally there is defined an address "localhost" with IP address 127.0.0.1. Colossus uses a socket even if playing locally. Thus it requests a "server socket" from the operating system to listen for "clients to connect there" and this requesting failed. Is your computer connected to internet or did you download somewhere else and copied it with USB stick or something? One thing you can try, is starting the Web Client. This will not require a server socket, but just a "I want to connect to some server process somewhere else". Does this work? -Clemens ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101939&aid=3043368&group_id=1939 |
|
From: SourceForge.net <no...@so...> - 2011-02-15 07:19:43
|
Bugs item #3176758, was opened at 2011-02-09 22:38 Message generated for change (Comment added) made by cleka You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101939&aid=3176758&group_id=1939 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Dave (rebhuhn) Assigned to: Nobody/Anonymous (nobody) Summary: null pointer exception Initial Comment: Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at net.sf.colossus.client.SocketClientThread.doMove(SocketClientThread.java:1495) at net.sf.colossus.client.Client.doMove(Client.java:2544) at net.sf.colossus.gui.ClientGUI.doMove(ClientGUI.java:2992) at net.sf.colossus.gui.MasterBoard.actOnHex(MasterBoard.java:2256) at net.sf.colossus.gui.MasterBoard.access$15(MasterBoard.java:2242) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2166) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at net.sf.colossus.gui.ClientGUI.doMove(ClientGUI.java:2983) at net.sf.colossus.gui.MasterBoard.actOnHex(MasterBoard.java:2256) at net.sf.colossus.gui.MasterBoard.access$15(MasterBoard.java:2242) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2166) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at net.sf.colossus.gui.ClientGUI.doMove(ClientGUI.java:2983) at net.sf.colossus.gui.MasterBoard.actOnHex(MasterBoard.java:2256) at net.sf.colossus.gui.MasterBoard.access$15(MasterBoard.java:2242) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2166) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) Feb 9, 2011 12:28:09 PM net.sf.colossus.server.LegionServerSide moveToHex ---------------------------------------------------------------------- >Comment By: Clemens Katzer (cleka) Date: 2011-02-15 09:19 Message: When I try this, first thing after clicking legion to teleport onto is, it asks me for the entry side. I think it will for teleport always ask that, EXCEPT if teleporting into a tower. Did you teleport into the tower? If one closes the entry side dialog with the "x" e.g. to look target legion first, the closing of the dialog already causes the NPE. (fixed that now; that closing pick teleporting lord or pick entry side dialogue with "x" abort the move instead of causing NPE in SocketClientThread.). You can't actually right click a legion while entry side dialog is up (its a modal dialog). Teleporting into a tower, in a local game it's that fast, you practically don't have enough time to click legion before the server response arrives, and after that right click any other legion did not do any harm in my tests. Thus I fix the two "cancel dialog" problems, and begin of move phase clear the list of pending moves (just in case, so that legion can be moved in such a case, should it still happen again), and hope this covers it. ---------------------------------------------------------------------- Comment By: Dave (rebhuhn) Date: 2011-02-10 01:10 Message: Somehow the first part of the text was deleted. Lastest release (as of Feb 9, 2011), playing DinoTitan, 5 AIs, 1 human. Rolled a 6, split the Titan stack and attempted to do a Titan Teleport. Immediately after clicking on the stack to teleport onto, did a right click to try and look at the stack. Received this null pointer exception. Attempts to move the Titan stack returned the "already moved" error from doMove in ClientGUI. This condition persisted for the rest of the game. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101939&aid=3176758&group_id=1939 |
|
From: SourceForge.net <no...@so...> - 2011-02-14 19:14:07
|
Bugs item #3177305, was opened at 2011-02-10 12:40 Message generated for change (Comment added) made by nobody You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101939&aid=3177305&group_id=1939 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: GUI Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Nobody/Anonymous (nobody) Assigned to: Clemens Katzer (cleka) Summary: Can not pick color to start game Initial Comment: Recently tried to play this game. I downloaded both the java version and the zip file. Both seem to start up just fine. The board will appear and another small window with choose a color pops up. I can not click on any color. I've tried pressing the letters that correspond to the colors. I've tried alt and ctrl combinations. Nothing works. I have to force the program to quit. Ideas? ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-14 19:14 Message: btw, I can not disable Citrix on this machine. If that is my problem I may not be able to play then. :( ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-14 19:12 Message: Tried again... received dialog box asking me to pick creature, did so then it said there are different ways to recruit creature.. that is when I could not choose anything. Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C:\Documents and Settings\thr85850>"C:\Documents and Settings\thr85850\Desktop\collossus\run.bat" C:\Documents and Settings\thr85850>cd "C:\Documents and Settings\thr85850\Desktop\collossus\" C:\Documents and Settings\thr85850\Desktop\collossus>java -Djava.util.logging.config.file=logging.properties -Xmx256M -jar Colossus.jar 2011-02-14 13:10:13 Full thread dump Java HotSpot(TM) Client VM (14.3-b01 mixed mode): "Client Red" prio=6 tid=0x177dc000 nid=0x33c runnable [0x17d2f000] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(Unknown Source) at sun.nio.cs.StreamDecoder.readBytes(Unknown Source) at sun.nio.cs.StreamDecoder.implRead(Unknown Source) at sun.nio.cs.StreamDecoder.read(Unknown Source) - locked <0x041a1c40> (a java.io.InputStreamReader) at java.io.InputStreamReader.read(Unknown Source) at java.io.BufferedReader.fill(Unknown Source) at java.io.BufferedReader.readLine(Unknown Source) - locked <0x041a1c40> (a java.io.InputStreamReader) at java.io.BufferedReader.readLine(Unknown Source) at net.sf.colossus.client.SocketClientThread.waitForLine(SocketClientThread.java:504) at net.sf.colossus.client.SocketClientThread.readAndParseUntilDone(SocketClientThread.java:419) at net.sf.colossus.client.SocketClientThread.run(SocketClientThread.java:373) "Client kevin" prio=6 tid=0x170da400 nid=0x740 runnable [0x17cdf000] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(Unknown Source) at sun.nio.cs.StreamDecoder.readBytes(Unknown Source) at sun.nio.cs.StreamDecoder.implRead(Unknown Source) at sun.nio.cs.StreamDecoder.read(Unknown Source) - locked <0x0418b318> (a java.io.InputStreamReader) at java.io.InputStreamReader.read(Unknown Source) at java.io.BufferedReader.fill(Unknown Source) at java.io.BufferedReader.readLine(Unknown Source) - locked <0x0418b318> (a java.io.InputStreamReader) at java.io.BufferedReader.readLine(Unknown Source) at net.sf.colossus.client.SocketClientThread.waitForLine(SocketClientThread.java:504) at net.sf.colossus.client.SocketClientThread.readAndParseUntilDone(SocketClientThread.java:419) at net.sf.colossus.client.SocketClientThread.run(SocketClientThread.java:373) "Thread-4" prio=6 tid=0x170e0800 nid=0x654 runnable [0x17c3f000] java.lang.Thread.State: RUNNABLE at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method) at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(Unknown Source) at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(Unknown Source) at sun.nio.ch.WindowsSelectorImpl.doSelect(Unknown Source) at sun.nio.ch.SelectorImpl.lockAndDoSelect(Unknown Source) - locked <0x0417dae8> (a sun.nio.ch.Util$1) - locked <0x0417daf8> (a java.util.Collections$UnmodifiableSet) - locked <0x0417da70> (a sun.nio.ch.WindowsSelectorImpl) at sun.nio.ch.SelectorImpl.select(Unknown Source) at net.sf.colossus.server.Server.handleOutsideChanges(Server.java:439) at net.sf.colossus.server.Server.waitOnSelector(Server.java:398) at net.sf.colossus.server.Server.run(Server.java:227) "TimerQueue" daemon prio=6 tid=0x170b0400 nid=0xbfc in Object.wait() [0x17a9f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x04165ea0> (a javax.swing.TimerQueue) at javax.swing.TimerQueue.run(Unknown Source) - locked <0x04165ea0> (a javax.swing.TimerQueue) at java.lang.Thread.run(Unknown Source) "AWT-EventQueue-0" prio=6 tid=0x17048c00 nid=0x754 waiting for monitor entry [0x1759e000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02b71628> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruiter.<init>(PickRecruiter.java:133) at net.sf.colossus.gui.PickRecruiter.pickRecruiter(PickRecruiter.java:146) - locked <0x138674b8> (a java.lang.Class for net.sf.colossus.gui.PickRecruiter) at net.sf.colossus.gui.ClientGUI.doPickRecruiter(ClientGUI.java:2133) at net.sf.colossus.client.Client.findRecruiterName(Client.java:1898) at net.sf.colossus.client.Client.doRecruit(Client.java:1775) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch" prio=6 tid=0x17026000 nid=0xf58 waiting for monitor entry [0x173bf000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x138674b8> (a java.lang.Class for net.sf.colossus.gui.PickRecruiter) at java.awt.Component.getName(Unknown Source) - locked <0x02b71628> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x04048118> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) "AWT-Windows" daemon prio=6 tid=0x17016800 nid=0x44c runnable [0x1729f000] java.lang.Thread.State: RUNNABLE at sun.awt.windows.WToolkit.eventLoop(Native Method) at sun.awt.windows.WToolkit.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "AWT-Shutdown" prio=6 tid=0x1700c800 nid=0xf6c in Object.wait() [0x1724f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) at java.lang.Object.wait(Object.java:485) at sun.awt.AWTAutoShutdown.run(Unknown Source) - locked <0x0402d038> (a java.lang.Object) at java.lang.Thread.run(Unknown Source) "Java2D Disposer" daemon prio=10 tid=0x16ffe400 nid=0xcc8 in Object.wait() [0x171ff000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x0402d0c8> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) at sun.java2d.Disposer.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "Low Memory Detector" daemon prio=6 tid=0x16c80800 nid=0x76c runnable [0x00000000] java.lang.Thread.State: RUNNABLE "CompilerThread0" daemon prio=10 tid=0x16c7a400 nid=0x268 waiting on condition [0x00000000] java.lang.Thread.State: RUNNABLE "Attach Listener" daemon prio=10 tid=0x16c78c00 nid=0xa9c runnable [0x00000000] java.lang.Thread.State: RUNNABLE "Signal Dispatcher" daemon prio=10 tid=0x16c77800 nid=0xa2c waiting on condition [0x00000000] java.lang.Thread.State: RUNNABLE "Finalizer" daemon prio=8 tid=0x16c67800 nid=0xf20 in Object.wait() [0x16ddf000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x03ebd718> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source) "Reference Handler" daemon prio=10 tid=0x16c62c00 nid=0x684 in Object.wait() [0x16d8f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) at java.lang.Object.wait(Object.java:485) at java.lang.ref.Reference$ReferenceHandler.run(Unknown Source) - locked <0x03ebd7a0> (a java.lang.ref.Reference$Lock) "main" prio=6 tid=0x003b6400 nid=0x12c in Object.wait() [0x009df000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0417f040> (a java.lang.Object) at java.lang.Object.wait(Object.java:485) at net.sf.colossus.server.Server.waitUntilGameFinishes(Server.java:780) - locked <0x0417f040> (a java.lang.Object) at net.sf.colossus.server.GameServerSide.cleanupWhenGameOver(GameServerSide.java:401) at net.sf.colossus.server.GameServerSide.startNewGameAndWaitUntilOver(GameServerSide.java:454) at net.sf.colossus.appmain.Start.setupAndLoop(Start.java:663) at net.sf.colossus.appmain.Start.main(Start.java:874) "VM Thread" prio=10 tid=0x16c5fc00 nid=0xe18 runnable "VM Periodic Task Thread" prio=10 tid=0x16c82c00 nid=0xb90 waiting on condition JNI global references: 1556 Found one Java-level deadlock: ============================= "AWT-EventQueue-0": waiting to lock monitor 0x177ea964 (object 0x02b71628, a java.lang.Object), which is held by "EventQueueMonitor-ComponentEvtDispatch" "EventQueueMonitor-ComponentEvtDispatch": waiting to lock monitor 0x1704bfdc (object 0x138674b8, a java.lang.Class), which is held by "AWT-EventQueue-0" Java stack information for the threads listed above: =================================================== "AWT-EventQueue-0": at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02b71628> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruiter.<init>(PickRecruiter.java:133) at net.sf.colossus.gui.PickRecruiter.pickRecruiter(PickRecruiter.java:146) - locked <0x138674b8> (a java.lang.Class for net.sf.colossus.gui.PickRecruiter) at net.sf.colossus.gui.ClientGUI.doPickRecruiter(ClientGUI.java:2133) at net.sf.colossus.client.Client.findRecruiterName(Client.java:1898) at net.sf.colossus.client.Client.doRecruit(Client.java:1775) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch": at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x138674b8> (a java.lang.Class for net.sf.colossus.gui.PickRecruiter) at java.awt.Component.getName(Unknown Source) - locked <0x02b71628> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x04048118> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) Found 1 deadlock. Heap def new generation total 960K, used 482K [0x02a90000, 0x02b90000, 0x03e40000) eden space 896K, 51% used [0x02a90000, 0x02b038b0, 0x02b70000) from space 64K, 31% used [0x02b70000, 0x02b75148, 0x02b80000) to space 64K, 0% used [0x02b80000, 0x02b80000, 0x02b90000) tenured generation total 10940K, used 10778K [0x03e40000, 0x048ef000, 0x12a90000) the space 10940K, 98% used [0x03e40000, 0x048c6b18, 0x048c6c00, 0x048ef000) compacting perm gen total 14336K, used 14176K [0x12a90000, 0x13890000, 0x16a90000) the space 14336K, 98% used [0x12a90000, 0x13868170, 0x13868200, 0x13890000) No shared spaces configured. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-14 19:10 Message: Downloaded older version (.0) and still had same problem. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-14 16:30 Message: Strange. Even when I run with Javq 1.6.0_xx, there is only "AWT" related thread shown (it's not in a lock situation however anyway. Can you try the ctrl-break once when it's just asking but not locked?) This one is there in both cases: "AWT-EventQueue-0" prio=6 tid=0x17042800 nid=0x1eac waiting for monitor entry [0x1759e000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) ... ... But only you have: "EventQueueMonitor-ComponentEvtDispatch" prio=6 tid=0x1701c000 nid=0x193c waiting for monitor entry [0x173bf000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x04048108> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) Perhaps the fact that you have something with Citrix running (possibly some security stuff... I know what Citrix is, some Remote screen software etc.), perhaps this causes two GUI threads? Can you disable Citrix? Or do you have e.g. a Jave 1.5.0_xx installed and use that instead? BR, Clemens ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-14 16:26 Message: hm, ok... still, that's no solution. Could you download an older version (oldest you find, 0.9.0, or even something from 2007 or 2008), and see whether they behave the same. https://sourceforge.net/projects/colossus/files/ ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-14 13:49 Message: So this morning, I gave it a try and it actually seemed to be working for quite awhile. I even was able to engage in a couple battles. (I died promptly) After several minutes though it did lock up again when I had to choose between two creatures. At least I made it a lot further! ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 21:05 Message: No problem, see you Monday. You should get some sleep. 2300 is way past my bedtime. lol Btw, I am running multiple monitors as well, don't know if that would cause an issue. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:58 Message: > That was funny about finding an old laptop. Hey, that was a practical piece of advice! :>) (if your toaster has big enough screen and keyboard/mouse perhpaps even that will do ... ;~) ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:56 Message: > not before monday OK, fits me fine, then I dont need to "stress" myself. Very nice that you mention it beforehand! And here we see it: "AWT-EventQueue-0" prio=6 tid=0x17042800 nid=0x1eac waiting for monitor entry [0x1759e000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruit.<init>(PickRecruit.java:168) at net.sf.colossus.gui.PickRecruit.pickRecruit(PickRecruit.java:186) - locked <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at net.sf.colossus.gui.ClientGUI.doPickRecruit(ClientGUI.java:2097) at net.sf.colossus.client.Client.doRecruit(Client.java:1763) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch" prio=6 tid=0x1701c000 nid=0x193c waiting for monitor entry [0x173bf000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x04048108> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) STRANGE: Two EDT / GUI graphics related threads, both related to the PickRecruit!?!? Have to crosscheck whether those two threads also both exist in when I run it. Thanks for the provided infos, let's contineue monday or something; but then, rather evenings (time is 5 hours ago until now). Because, I _am_ committed to fix such issues, but its hard to fix if I cant reproduce them... BR & Have a nice weekend! -Clemens ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 20:52 Message: Ok, I tried it again... made it even bigger: Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C:\Documents and Settings\thr85850>"C:\Documents and Settings\thr85850\Desktop\collossus\run.bat" C:\Documents and Settings\thr85850>cd "C:\Documents and Settings\thr85850\Desktop\collossus\" C:\Documents and Settings\thr85850\Desktop\collossus>java -Djava.util.logging.config.file=logging.properties -Xmx256M -jar Colossus.jar 2011-02-10 14:50:27 Full thread dump Java HotSpot(TM) Client VM (14.3-b01 mixed mode): "Client Gold" prio=6 tid=0x177d9800 nid=0x56c runnable [0x17d2f000] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(Unknown Source) at sun.nio.cs.StreamDecoder.readBytes(Unknown Source) at sun.nio.cs.StreamDecoder.implRead(Unknown Source) at sun.nio.cs.StreamDecoder.read(Unknown Source) - locked <0x041a1880> (a java.io.InputStreamReader) at java.io.InputStreamReader.read(Unknown Source) at java.io.BufferedReader.fill(Unknown Source) at java.io.BufferedReader.readLine(Unknown Source) - locked <0x041a1880> (a java.io.InputStreamReader) at java.io.BufferedReader.readLine(Unknown Source) at net.sf.colossus.client.SocketClientThread.waitForLine(SocketClientThread.java:504) at net.sf.colossus.client.SocketClientThread.readAndParseUntilDone(SocketClientThread.java:419) at net.sf.colossus.client.SocketClientThread.run(SocketClientThread.java:373) "Client kevin" prio=6 tid=0x177e7400 nid=0x1634 runnable [0x17cdf000] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(Unknown Source) at sun.nio.cs.StreamDecoder.readBytes(Unknown Source) at sun.nio.cs.StreamDecoder.implRead(Unknown Source) at sun.nio.cs.StreamDecoder.read(Unknown Source) - locked <0x04189358> (a java.io.InputStreamReader) at java.io.InputStreamReader.read(Unknown Source) at java.io.BufferedReader.fill(Unknown Source) at java.io.BufferedReader.readLine(Unknown Source) - locked <0x04189358> (a java.io.InputStreamReader) at java.io.BufferedReader.readLine(Unknown Source) at net.sf.colossus.client.SocketClientThread.waitForLine(SocketClientThread.java:504) at net.sf.colossus.client.SocketClientThread.readAndParseUntilDone(SocketClientThread.java:419) at net.sf.colossus.client.SocketClientThread.run(SocketClientThread.java:373) "Thread-4" prio=6 tid=0x17701400 nid=0x1248 runnable [0x17c3f000] java.lang.Thread.State: RUNNABLE at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method) at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(Unknown Source) at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(Unknown Source) at sun.nio.ch.WindowsSelectorImpl.doSelect(Unknown Source) at sun.nio.ch.SelectorImpl.lockAndDoSelect(Unknown Source) - locked <0x0417bd60> (a sun.nio.ch.Util$1) - locked <0x0417bd70> (a java.util.Collections$UnmodifiableSet) - locked <0x0417bce8> (a sun.nio.ch.WindowsSelectorImpl) at sun.nio.ch.SelectorImpl.select(Unknown Source) at net.sf.colossus.server.Server.handleOutsideChanges(Server.java:439) at net.sf.colossus.server.Server.waitOnSelector(Server.java:398) at net.sf.colossus.server.Server.run(Server.java:227) "TimerQueue" daemon prio=6 tid=0x176dd000 nid=0x1dd0 in Object.wait() [0x17a9f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x04165ee0> (a javax.swing.TimerQueue) at javax.swing.TimerQueue.run(Unknown Source) - locked <0x04165ee0> (a javax.swing.TimerQueue) at java.lang.Thread.run(Unknown Source) "AWT-EventQueue-0" prio=6 tid=0x1703ac00 nid=0x1a08 waiting for monitor entry [0x1759e000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02aa5580> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruit.<init>(PickRecruit.java:168) at net.sf.colossus.gui.PickRecruit.pickRecruit(PickRecruit.java:186) - locked <0x138642d8> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at net.sf.colossus.gui.ClientGUI.doPickRecruit(ClientGUI.java:2097) at net.sf.colossus.client.Client.doRecruit(Client.java:1763) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch" prio=6 tid=0x17022400 nid=0x1bb8 waiting for monitor entry [0x173bf000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x138642d8> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02aa5580> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x040480d0> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) "AWT-Windows" daemon prio=6 tid=0x17018800 nid=0x1694 runnable [0x1729f000] java.lang.Thread.State: RUNNABLE at sun.awt.windows.WToolkit.eventLoop(Native Method) at sun.awt.windows.WToolkit.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "AWT-Shutdown" prio=6 tid=0x17017800 nid=0x410 in Object.wait() [0x1724f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0402d038> (a java.lang.Object) at java.lang.Object.wait(Object.java:485) at sun.awt.AWTAutoShutdown.run(Unknown Source) - locked <0x0402d038> (a java.lang.Object) at java.lang.Thread.run(Unknown Source) "Java2D Disposer" daemon prio=10 tid=0x17011400 nid=0x1fd8 in Object.wait() [0x171ff000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0402d0c8> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x0402d0c8> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) at sun.java2d.Disposer.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "Low Memory Detector" daemon prio=6 tid=0x16c80400 nid=0x1a3c runnable [0x00000000] java.lang.Thread.State: RUNNABLE "CompilerThread0" daemon prio=10 tid=0x16c7a400 nid=0x11c4 waiting on condition [0x00000000] java.lang.Thread.State: RUNNABLE "Attach Listener" daemon prio=10 tid=0x16c78c00 nid=0x13ac runnable [0x00000000] java.lang.Thread.State: RUNNABLE "Signal Dispatcher" daemon prio=10 tid=0x16c77800 nid=0xdac waiting on condition [0x00000000] java.lang.Thread.State: RUNNABLE "Finalizer" daemon prio=8 tid=0x16c67800 nid=0x1860 in Object.wait() [0x16ddf000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x03ebd718> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x03ebd718> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source) "Reference Handler" daemon prio=10 tid=0x16c62c00 nid=0x1ae0 in Object.wait() [0x16d8f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x03ebd7a0> (a java.lang.ref.Reference$Lock) at java.lang.Object.wait(Object.java:485) at java.lang.ref.Reference$ReferenceHandler.run(Unknown Source) - locked <0x03ebd7a0> (a java.lang.ref.Reference$Lock) "main" prio=6 tid=0x003b6400 nid=0x1540 in Object.wait() [0x009df000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0417d9d0> (a java.lang.Object) at java.lang.Object.wait(Object.java:485) at net.sf.colossus.server.Server.waitUntilGameFinishes(Server.java:780) - locked <0x0417d9d0> (a java.lang.Object) at net.sf.colossus.server.GameServerSide.cleanupWhenGameOver(GameServerSide.java:401) at net.sf.colossus.server.GameServerSide.startNewGameAndWaitUntilOver(GameServerSide.java:454) at net.sf.colossus.appmain.Start.setupAndLoop(Start.java:663) at net.sf.colossus.appmain.Start.main(Start.java:874) "VM Thread" prio=10 tid=0x16c5fc00 nid=0x187c runnable "VM Periodic Task Thread" prio=10 tid=0x16c82c00 nid=0x1a24 waiting on condition JNI global references: 1447 Found one Java-level deadlock: ============================= "AWT-EventQueue-0": waiting to lock monitor 0x177d1804 (object 0x02aa5580, a java.lang.Object), which is held by "EventQueueMonitor-ComponentEvtDispatch" "EventQueueMonitor-ComponentEvtDispatch": waiting to lock monitor 0x176eb214 (object 0x138642d8, a java.lang.Class), which is held by "AWT-EventQueue-0" Java stack information for the threads listed above: =================================================== "AWT-EventQueue-0": at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02aa5580> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruit.<init>(PickRecruit.java:168) at net.sf.colossus.gui.PickRecruit.pickRecruit(PickRecruit.java:186) - locked <0x138642d8> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at net.sf.colossus.gui.ClientGUI.doPickRecruit(ClientGUI.java:2097) at net.sf.colossus.client.Client.doRecruit(Client.java:1763) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch": at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x138642d8> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02aa5580> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x040480d0> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) Found 1 deadlock. Heap def new generation total 960K, used 819K [0x02a90000, 0x02b90000, 0x03e40000) eden space 896K, 84% used [0x02a90000, 0x02b4e030, 0x02b70000) from space 64K, 93% used [0x02b80000, 0x02b8ef48, 0x02b90000) to space 64K, 0% used [0x02b70000, 0x02b70000, 0x02b80000) tenured generation total 10940K, used 9911K [0x03e40000, 0x048ef000, 0x12a90000) the space 10940K, 90% used [0x03e40000, 0x047eddf8, 0x047ede00, 0x048ef000) compacting perm gen total 14336K, used 14166K [0x12a90000, 0x13890000, 0x16a90000) the space 14336K, 98% used [0x12a90000, 0x13865a58, 0x13865c00, 0x13890000) No shared spaces configured. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 20:48 Message: Thanks for walking me through this and all. Just so you know I will not be able to respond to you again until Monday. I stretched it to fit my entire screen.... and I'm running a big screen. lol That was funny about finding an old laptop. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:46 Message: did you make window big enough ? Seems begin of it is missing again. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:43 Message: Yeah. As I almost expected: > Found 1 deadlock. Analyzing that and thinking how to go further will take some time. But I have to go sleeping now (22:40 here in Finland) and I have to get up early tomorrow. I try to look deeper into it tomorrow. Meanwhile, can you find a 5 year old laptop somewhere? ;-) (namely, any computer with one CPU or core only...) Chances are there it works fine. >btw, I couldn't copy and paste the java console because when the > program locked it wouldn't let me select the console either. Ah, right! And ah, you saw the deadlock reported also. Br, Clemens ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 20:40 Message: btw, I couldn't copy and paste the java console because when the program locked it wouldn't let me select the console either. and looks like your suspicions are right about that dead lock... shows below it found 1. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 20:38 Message: holy moly... its a lot... here goes: at net.sf.colossus.client.SocketClientThread.readAndParseUntilDone(SocketClientThread.java:419) at net.sf.colossus.client.SocketClientThread.run(SocketClientThread.java:373) "Client kevin" prio=6 tid=0x170d5400 nid=0x1eb4 runnable [0x17cdf000] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(Unknown Source) at sun.nio.cs.StreamDecoder.readBytes(Unknown Source) at sun.nio.cs.StreamDecoder.implRead(Unknown Source) at sun.nio.cs.StreamDecoder.read(Unknown Source) - locked <0x041a4f00> (a java.io.InputStreamReader) at java.io.InputStreamReader.read(Unknown Source) at java.io.BufferedReader.fill(Unknown Source) at java.io.BufferedReader.readLine(Unknown Source) - locked <0x041a4f00> (a java.io.InputStreamReader) at java.io.BufferedReader.readLine(Unknown Source) at net.sf.colossus.client.SocketClientThread.waitForLine(SocketClientThread.java:504) at net.sf.colossus.client.SocketClientThread.readAndParseUntilDone(SocketClientThread.java:419) at net.sf.colossus.client.SocketClientThread.run(SocketClientThread.java:373) "Thread-4" prio=6 tid=0x1716a800 nid=0x1428 runnable [0x17c3f000] java.lang.Thread.State: RUNNABLE at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method) at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(Unknown Source) at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(Unknown Source) at sun.nio.ch.WindowsSelectorImpl.doSelect(Unknown Source) at sun.nio.ch.SelectorImpl.lockAndDoSelect(Unknown Source) - locked <0x0418f468> (a sun.nio.ch.Util$1) - locked <0x0418f478> (a java.util.Collections$UnmodifiableSet) - locked <0x0418f3f0> (a sun.nio.ch.WindowsSelectorImpl) at sun.nio.ch.SelectorImpl.select(Unknown Source) at net.sf.colossus.server.Server.handleOutsideChanges(Server.java:439) at net.sf.colossus.server.Server.waitOnSelector(Server.java:398) at net.sf.colossus.server.Server.run(Server.java:227) "TimerQueue" daemon prio=6 tid=0x176e6400 nid=0x1f8c in Object.wait() [0x17a9f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x04168e60> (a javax.swing.TimerQueue) at javax.swing.TimerQueue.run(Unknown Source) - locked <0x04168e60> (a javax.swing.TimerQueue) at java.lang.Thread.run(Unknown Source) "AWT-EventQueue-0" prio=6 tid=0x17042800 nid=0x1eac waiting for monitor entry [0x1759e000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruit.<init>(PickRecruit.java:168) at net.sf.colossus.gui.PickRecruit.pickRecruit(PickRecruit.java:186) - locked <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at net.sf.colossus.gui.ClientGUI.doPickRecruit(ClientGUI.java:2097) at net.sf.colossus.client.Client.doRecruit(Client.java:1763) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch" prio=6 tid=0x1701c000 nid=0x193c waiting for monitor entry [0x173bf000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x04048108> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) "AWT-Windows" daemon prio=6 tid=0x16ff8400 nid=0x1d74 runnable [0x1729f000] java.lang.Thread.State: RUNNABLE at sun.awt.windows.WToolkit.eventLoop(Native Method) at sun.awt.windows.WToolkit.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "AWT-Shutdown" prio=6 tid=0x17001c00 nid=0x1844 in Object.wait() [0x1724f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0402cf70> (a java.lang.Object) at java.lang.Object.wait(Object.java:485) at sun.awt.AWTAutoShutdown.run(Unknown Source) - locked <0x0402cf70> (a java.lang.Object) at java.lang.Thread.run(Unknown Source) "Java2D Disposer" daemon prio=10 tid=0x17018800 nid=0x1cbc in Object.wait() [0x171ff000] java.lang.Thread.State: WAITING (on object monit... [truncated message content] |
|
From: SourceForge.net <no...@so...> - 2011-02-14 19:12:25
|
Bugs item #3177305, was opened at 2011-02-10 12:40 Message generated for change (Comment added) made by nobody You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101939&aid=3177305&group_id=1939 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: GUI Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Nobody/Anonymous (nobody) Assigned to: Clemens Katzer (cleka) Summary: Can not pick color to start game Initial Comment: Recently tried to play this game. I downloaded both the java version and the zip file. Both seem to start up just fine. The board will appear and another small window with choose a color pops up. I can not click on any color. I've tried pressing the letters that correspond to the colors. I've tried alt and ctrl combinations. Nothing works. I have to force the program to quit. Ideas? ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-14 19:12 Message: Tried again... received dialog box asking me to pick creature, did so then it said there are different ways to recruit creature.. that is when I could not choose anything. Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C:\Documents and Settings\thr85850>"C:\Documents and Settings\thr85850\Desktop\collossus\run.bat" C:\Documents and Settings\thr85850>cd "C:\Documents and Settings\thr85850\Desktop\collossus\" C:\Documents and Settings\thr85850\Desktop\collossus>java -Djava.util.logging.config.file=logging.properties -Xmx256M -jar Colossus.jar 2011-02-14 13:10:13 Full thread dump Java HotSpot(TM) Client VM (14.3-b01 mixed mode): "Client Red" prio=6 tid=0x177dc000 nid=0x33c runnable [0x17d2f000] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(Unknown Source) at sun.nio.cs.StreamDecoder.readBytes(Unknown Source) at sun.nio.cs.StreamDecoder.implRead(Unknown Source) at sun.nio.cs.StreamDecoder.read(Unknown Source) - locked <0x041a1c40> (a java.io.InputStreamReader) at java.io.InputStreamReader.read(Unknown Source) at java.io.BufferedReader.fill(Unknown Source) at java.io.BufferedReader.readLine(Unknown Source) - locked <0x041a1c40> (a java.io.InputStreamReader) at java.io.BufferedReader.readLine(Unknown Source) at net.sf.colossus.client.SocketClientThread.waitForLine(SocketClientThread.java:504) at net.sf.colossus.client.SocketClientThread.readAndParseUntilDone(SocketClientThread.java:419) at net.sf.colossus.client.SocketClientThread.run(SocketClientThread.java:373) "Client kevin" prio=6 tid=0x170da400 nid=0x740 runnable [0x17cdf000] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(Unknown Source) at sun.nio.cs.StreamDecoder.readBytes(Unknown Source) at sun.nio.cs.StreamDecoder.implRead(Unknown Source) at sun.nio.cs.StreamDecoder.read(Unknown Source) - locked <0x0418b318> (a java.io.InputStreamReader) at java.io.InputStreamReader.read(Unknown Source) at java.io.BufferedReader.fill(Unknown Source) at java.io.BufferedReader.readLine(Unknown Source) - locked <0x0418b318> (a java.io.InputStreamReader) at java.io.BufferedReader.readLine(Unknown Source) at net.sf.colossus.client.SocketClientThread.waitForLine(SocketClientThread.java:504) at net.sf.colossus.client.SocketClientThread.readAndParseUntilDone(SocketClientThread.java:419) at net.sf.colossus.client.SocketClientThread.run(SocketClientThread.java:373) "Thread-4" prio=6 tid=0x170e0800 nid=0x654 runnable [0x17c3f000] java.lang.Thread.State: RUNNABLE at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method) at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(Unknown Source) at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(Unknown Source) at sun.nio.ch.WindowsSelectorImpl.doSelect(Unknown Source) at sun.nio.ch.SelectorImpl.lockAndDoSelect(Unknown Source) - locked <0x0417dae8> (a sun.nio.ch.Util$1) - locked <0x0417daf8> (a java.util.Collections$UnmodifiableSet) - locked <0x0417da70> (a sun.nio.ch.WindowsSelectorImpl) at sun.nio.ch.SelectorImpl.select(Unknown Source) at net.sf.colossus.server.Server.handleOutsideChanges(Server.java:439) at net.sf.colossus.server.Server.waitOnSelector(Server.java:398) at net.sf.colossus.server.Server.run(Server.java:227) "TimerQueue" daemon prio=6 tid=0x170b0400 nid=0xbfc in Object.wait() [0x17a9f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x04165ea0> (a javax.swing.TimerQueue) at javax.swing.TimerQueue.run(Unknown Source) - locked <0x04165ea0> (a javax.swing.TimerQueue) at java.lang.Thread.run(Unknown Source) "AWT-EventQueue-0" prio=6 tid=0x17048c00 nid=0x754 waiting for monitor entry [0x1759e000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02b71628> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruiter.<init>(PickRecruiter.java:133) at net.sf.colossus.gui.PickRecruiter.pickRecruiter(PickRecruiter.java:146) - locked <0x138674b8> (a java.lang.Class for net.sf.colossus.gui.PickRecruiter) at net.sf.colossus.gui.ClientGUI.doPickRecruiter(ClientGUI.java:2133) at net.sf.colossus.client.Client.findRecruiterName(Client.java:1898) at net.sf.colossus.client.Client.doRecruit(Client.java:1775) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch" prio=6 tid=0x17026000 nid=0xf58 waiting for monitor entry [0x173bf000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x138674b8> (a java.lang.Class for net.sf.colossus.gui.PickRecruiter) at java.awt.Component.getName(Unknown Source) - locked <0x02b71628> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x04048118> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) "AWT-Windows" daemon prio=6 tid=0x17016800 nid=0x44c runnable [0x1729f000] java.lang.Thread.State: RUNNABLE at sun.awt.windows.WToolkit.eventLoop(Native Method) at sun.awt.windows.WToolkit.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "AWT-Shutdown" prio=6 tid=0x1700c800 nid=0xf6c in Object.wait() [0x1724f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) at java.lang.Object.wait(Object.java:485) at sun.awt.AWTAutoShutdown.run(Unknown Source) - locked <0x0402d038> (a java.lang.Object) at java.lang.Thread.run(Unknown Source) "Java2D Disposer" daemon prio=10 tid=0x16ffe400 nid=0xcc8 in Object.wait() [0x171ff000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x0402d0c8> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) at sun.java2d.Disposer.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "Low Memory Detector" daemon prio=6 tid=0x16c80800 nid=0x76c runnable [0x00000000] java.lang.Thread.State: RUNNABLE "CompilerThread0" daemon prio=10 tid=0x16c7a400 nid=0x268 waiting on condition [0x00000000] java.lang.Thread.State: RUNNABLE "Attach Listener" daemon prio=10 tid=0x16c78c00 nid=0xa9c runnable [0x00000000] java.lang.Thread.State: RUNNABLE "Signal Dispatcher" daemon prio=10 tid=0x16c77800 nid=0xa2c waiting on condition [0x00000000] java.lang.Thread.State: RUNNABLE "Finalizer" daemon prio=8 tid=0x16c67800 nid=0xf20 in Object.wait() [0x16ddf000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x03ebd718> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source) "Reference Handler" daemon prio=10 tid=0x16c62c00 nid=0x684 in Object.wait() [0x16d8f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) at java.lang.Object.wait(Object.java:485) at java.lang.ref.Reference$ReferenceHandler.run(Unknown Source) - locked <0x03ebd7a0> (a java.lang.ref.Reference$Lock) "main" prio=6 tid=0x003b6400 nid=0x12c in Object.wait() [0x009df000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0417f040> (a java.lang.Object) at java.lang.Object.wait(Object.java:485) at net.sf.colossus.server.Server.waitUntilGameFinishes(Server.java:780) - locked <0x0417f040> (a java.lang.Object) at net.sf.colossus.server.GameServerSide.cleanupWhenGameOver(GameServerSide.java:401) at net.sf.colossus.server.GameServerSide.startNewGameAndWaitUntilOver(GameServerSide.java:454) at net.sf.colossus.appmain.Start.setupAndLoop(Start.java:663) at net.sf.colossus.appmain.Start.main(Start.java:874) "VM Thread" prio=10 tid=0x16c5fc00 nid=0xe18 runnable "VM Periodic Task Thread" prio=10 tid=0x16c82c00 nid=0xb90 waiting on condition JNI global references: 1556 Found one Java-level deadlock: ============================= "AWT-EventQueue-0": waiting to lock monitor 0x177ea964 (object 0x02b71628, a java.lang.Object), which is held by "EventQueueMonitor-ComponentEvtDispatch" "EventQueueMonitor-ComponentEvtDispatch": waiting to lock monitor 0x1704bfdc (object 0x138674b8, a java.lang.Class), which is held by "AWT-EventQueue-0" Java stack information for the threads listed above: =================================================== "AWT-EventQueue-0": at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02b71628> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruiter.<init>(PickRecruiter.java:133) at net.sf.colossus.gui.PickRecruiter.pickRecruiter(PickRecruiter.java:146) - locked <0x138674b8> (a java.lang.Class for net.sf.colossus.gui.PickRecruiter) at net.sf.colossus.gui.ClientGUI.doPickRecruiter(ClientGUI.java:2133) at net.sf.colossus.client.Client.findRecruiterName(Client.java:1898) at net.sf.colossus.client.Client.doRecruit(Client.java:1775) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch": at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x138674b8> (a java.lang.Class for net.sf.colossus.gui.PickRecruiter) at java.awt.Component.getName(Unknown Source) - locked <0x02b71628> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x04048118> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) Found 1 deadlock. Heap def new generation total 960K, used 482K [0x02a90000, 0x02b90000, 0x03e40000) eden space 896K, 51% used [0x02a90000, 0x02b038b0, 0x02b70000) from space 64K, 31% used [0x02b70000, 0x02b75148, 0x02b80000) to space 64K, 0% used [0x02b80000, 0x02b80000, 0x02b90000) tenured generation total 10940K, used 10778K [0x03e40000, 0x048ef000, 0x12a90000) the space 10940K, 98% used [0x03e40000, 0x048c6b18, 0x048c6c00, 0x048ef000) compacting perm gen total 14336K, used 14176K [0x12a90000, 0x13890000, 0x16a90000) the space 14336K, 98% used [0x12a90000, 0x13868170, 0x13868200, 0x13890000) No shared spaces configured. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-14 19:10 Message: Downloaded older version (.0) and still had same problem. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-14 16:30 Message: Strange. Even when I run with Javq 1.6.0_xx, there is only "AWT" related thread shown (it's not in a lock situation however anyway. Can you try the ctrl-break once when it's just asking but not locked?) This one is there in both cases: "AWT-EventQueue-0" prio=6 tid=0x17042800 nid=0x1eac waiting for monitor entry [0x1759e000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) ... ... But only you have: "EventQueueMonitor-ComponentEvtDispatch" prio=6 tid=0x1701c000 nid=0x193c waiting for monitor entry [0x173bf000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x04048108> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) Perhaps the fact that you have something with Citrix running (possibly some security stuff... I know what Citrix is, some Remote screen software etc.), perhaps this causes two GUI threads? Can you disable Citrix? Or do you have e.g. a Jave 1.5.0_xx installed and use that instead? BR, Clemens ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-14 16:26 Message: hm, ok... still, that's no solution. Could you download an older version (oldest you find, 0.9.0, or even something from 2007 or 2008), and see whether they behave the same. https://sourceforge.net/projects/colossus/files/ ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-14 13:49 Message: So this morning, I gave it a try and it actually seemed to be working for quite awhile. I even was able to engage in a couple battles. (I died promptly) After several minutes though it did lock up again when I had to choose between two creatures. At least I made it a lot further! ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 21:05 Message: No problem, see you Monday. You should get some sleep. 2300 is way past my bedtime. lol Btw, I am running multiple monitors as well, don't know if that would cause an issue. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:58 Message: > That was funny about finding an old laptop. Hey, that was a practical piece of advice! :>) (if your toaster has big enough screen and keyboard/mouse perhpaps even that will do ... ;~) ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:56 Message: > not before monday OK, fits me fine, then I dont need to "stress" myself. Very nice that you mention it beforehand! And here we see it: "AWT-EventQueue-0" prio=6 tid=0x17042800 nid=0x1eac waiting for monitor entry [0x1759e000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruit.<init>(PickRecruit.java:168) at net.sf.colossus.gui.PickRecruit.pickRecruit(PickRecruit.java:186) - locked <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at net.sf.colossus.gui.ClientGUI.doPickRecruit(ClientGUI.java:2097) at net.sf.colossus.client.Client.doRecruit(Client.java:1763) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch" prio=6 tid=0x1701c000 nid=0x193c waiting for monitor entry [0x173bf000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x04048108> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) STRANGE: Two EDT / GUI graphics related threads, both related to the PickRecruit!?!? Have to crosscheck whether those two threads also both exist in when I run it. Thanks for the provided infos, let's contineue monday or something; but then, rather evenings (time is 5 hours ago until now). Because, I _am_ committed to fix such issues, but its hard to fix if I cant reproduce them... BR & Have a nice weekend! -Clemens ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 20:52 Message: Ok, I tried it again... made it even bigger: Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C:\Documents and Settings\thr85850>"C:\Documents and Settings\thr85850\Desktop\collossus\run.bat" C:\Documents and Settings\thr85850>cd "C:\Documents and Settings\thr85850\Desktop\collossus\" C:\Documents and Settings\thr85850\Desktop\collossus>java -Djava.util.logging.config.file=logging.properties -Xmx256M -jar Colossus.jar 2011-02-10 14:50:27 Full thread dump Java HotSpot(TM) Client VM (14.3-b01 mixed mode): "Client Gold" prio=6 tid=0x177d9800 nid=0x56c runnable [0x17d2f000] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(Unknown Source) at sun.nio.cs.StreamDecoder.readBytes(Unknown Source) at sun.nio.cs.StreamDecoder.implRead(Unknown Source) at sun.nio.cs.StreamDecoder.read(Unknown Source) - locked <0x041a1880> (a java.io.InputStreamReader) at java.io.InputStreamReader.read(Unknown Source) at java.io.BufferedReader.fill(Unknown Source) at java.io.BufferedReader.readLine(Unknown Source) - locked <0x041a1880> (a java.io.InputStreamReader) at java.io.BufferedReader.readLine(Unknown Source) at net.sf.colossus.client.SocketClientThread.waitForLine(SocketClientThread.java:504) at net.sf.colossus.client.SocketClientThread.readAndParseUntilDone(SocketClientThread.java:419) at net.sf.colossus.client.SocketClientThread.run(SocketClientThread.java:373) "Client kevin" prio=6 tid=0x177e7400 nid=0x1634 runnable [0x17cdf000] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(Unknown Source) at sun.nio.cs.StreamDecoder.readBytes(Unknown Source) at sun.nio.cs.StreamDecoder.implRead(Unknown Source) at sun.nio.cs.StreamDecoder.read(Unknown Source) - locked <0x04189358> (a java.io.InputStreamReader) at java.io.InputStreamReader.read(Unknown Source) at java.io.BufferedReader.fill(Unknown Source) at java.io.BufferedReader.readLine(Unknown Source) - locked <0x04189358> (a java.io.InputStreamReader) at java.io.BufferedReader.readLine(Unknown Source) at net.sf.colossus.client.SocketClientThread.waitForLine(SocketClientThread.java:504) at net.sf.colossus.client.SocketClientThread.readAndParseUntilDone(SocketClientThread.java:419) at net.sf.colossus.client.SocketClientThread.run(SocketClientThread.java:373) "Thread-4" prio=6 tid=0x17701400 nid=0x1248 runnable [0x17c3f000] java.lang.Thread.State: RUNNABLE at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method) at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(Unknown Source) at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(Unknown Source) at sun.nio.ch.WindowsSelectorImpl.doSelect(Unknown Source) at sun.nio.ch.SelectorImpl.lockAndDoSelect(Unknown Source) - locked <0x0417bd60> (a sun.nio.ch.Util$1) - locked <0x0417bd70> (a java.util.Collections$UnmodifiableSet) - locked <0x0417bce8> (a sun.nio.ch.WindowsSelectorImpl) at sun.nio.ch.SelectorImpl.select(Unknown Source) at net.sf.colossus.server.Server.handleOutsideChanges(Server.java:439) at net.sf.colossus.server.Server.waitOnSelector(Server.java:398) at net.sf.colossus.server.Server.run(Server.java:227) "TimerQueue" daemon prio=6 tid=0x176dd000 nid=0x1dd0 in Object.wait() [0x17a9f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x04165ee0> (a javax.swing.TimerQueue) at javax.swing.TimerQueue.run(Unknown Source) - locked <0x04165ee0> (a javax.swing.TimerQueue) at java.lang.Thread.run(Unknown Source) "AWT-EventQueue-0" prio=6 tid=0x1703ac00 nid=0x1a08 waiting for monitor entry [0x1759e000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02aa5580> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruit.<init>(PickRecruit.java:168) at net.sf.colossus.gui.PickRecruit.pickRecruit(PickRecruit.java:186) - locked <0x138642d8> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at net.sf.colossus.gui.ClientGUI.doPickRecruit(ClientGUI.java:2097) at net.sf.colossus.client.Client.doRecruit(Client.java:1763) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch" prio=6 tid=0x17022400 nid=0x1bb8 waiting for monitor entry [0x173bf000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x138642d8> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02aa5580> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x040480d0> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) "AWT-Windows" daemon prio=6 tid=0x17018800 nid=0x1694 runnable [0x1729f000] java.lang.Thread.State: RUNNABLE at sun.awt.windows.WToolkit.eventLoop(Native Method) at sun.awt.windows.WToolkit.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "AWT-Shutdown" prio=6 tid=0x17017800 nid=0x410 in Object.wait() [0x1724f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0402d038> (a java.lang.Object) at java.lang.Object.wait(Object.java:485) at sun.awt.AWTAutoShutdown.run(Unknown Source) - locked <0x0402d038> (a java.lang.Object) at java.lang.Thread.run(Unknown Source) "Java2D Disposer" daemon prio=10 tid=0x17011400 nid=0x1fd8 in Object.wait() [0x171ff000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0402d0c8> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x0402d0c8> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) at sun.java2d.Disposer.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "Low Memory Detector" daemon prio=6 tid=0x16c80400 nid=0x1a3c runnable [0x00000000] java.lang.Thread.State: RUNNABLE "CompilerThread0" daemon prio=10 tid=0x16c7a400 nid=0x11c4 waiting on condition [0x00000000] java.lang.Thread.State: RUNNABLE "Attach Listener" daemon prio=10 tid=0x16c78c00 nid=0x13ac runnable [0x00000000] java.lang.Thread.State: RUNNABLE "Signal Dispatcher" daemon prio=10 tid=0x16c77800 nid=0xdac waiting on condition [0x00000000] java.lang.Thread.State: RUNNABLE "Finalizer" daemon prio=8 tid=0x16c67800 nid=0x1860 in Object.wait() [0x16ddf000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x03ebd718> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x03ebd718> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source) "Reference Handler" daemon prio=10 tid=0x16c62c00 nid=0x1ae0 in Object.wait() [0x16d8f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x03ebd7a0> (a java.lang.ref.Reference$Lock) at java.lang.Object.wait(Object.java:485) at java.lang.ref.Reference$ReferenceHandler.run(Unknown Source) - locked <0x03ebd7a0> (a java.lang.ref.Reference$Lock) "main" prio=6 tid=0x003b6400 nid=0x1540 in Object.wait() [0x009df000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0417d9d0> (a java.lang.Object) at java.lang.Object.wait(Object.java:485) at net.sf.colossus.server.Server.waitUntilGameFinishes(Server.java:780) - locked <0x0417d9d0> (a java.lang.Object) at net.sf.colossus.server.GameServerSide.cleanupWhenGameOver(GameServerSide.java:401) at net.sf.colossus.server.GameServerSide.startNewGameAndWaitUntilOver(GameServerSide.java:454) at net.sf.colossus.appmain.Start.setupAndLoop(Start.java:663) at net.sf.colossus.appmain.Start.main(Start.java:874) "VM Thread" prio=10 tid=0x16c5fc00 nid=0x187c runnable "VM Periodic Task Thread" prio=10 tid=0x16c82c00 nid=0x1a24 waiting on condition JNI global references: 1447 Found one Java-level deadlock: ============================= "AWT-EventQueue-0": waiting to lock monitor 0x177d1804 (object 0x02aa5580, a java.lang.Object), which is held by "EventQueueMonitor-ComponentEvtDispatch" "EventQueueMonitor-ComponentEvtDispatch": waiting to lock monitor 0x176eb214 (object 0x138642d8, a java.lang.Class), which is held by "AWT-EventQueue-0" Java stack information for the threads listed above: =================================================== "AWT-EventQueue-0": at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02aa5580> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruit.<init>(PickRecruit.java:168) at net.sf.colossus.gui.PickRecruit.pickRecruit(PickRecruit.java:186) - locked <0x138642d8> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at net.sf.colossus.gui.ClientGUI.doPickRecruit(ClientGUI.java:2097) at net.sf.colossus.client.Client.doRecruit(Client.java:1763) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch": at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x138642d8> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02aa5580> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x040480d0> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) Found 1 deadlock. Heap def new generation total 960K, used 819K [0x02a90000, 0x02b90000, 0x03e40000) eden space 896K, 84% used [0x02a90000, 0x02b4e030, 0x02b70000) from space 64K, 93% used [0x02b80000, 0x02b8ef48, 0x02b90000) to space 64K, 0% used [0x02b70000, 0x02b70000, 0x02b80000) tenured generation total 10940K, used 9911K [0x03e40000, 0x048ef000, 0x12a90000) the space 10940K, 90% used [0x03e40000, 0x047eddf8, 0x047ede00, 0x048ef000) compacting perm gen total 14336K, used 14166K [0x12a90000, 0x13890000, 0x16a90000) the space 14336K, 98% used [0x12a90000, 0x13865a58, 0x13865c00, 0x13890000) No shared spaces configured. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 20:48 Message: Thanks for walking me through this and all. Just so you know I will not be able to respond to you again until Monday. I stretched it to fit my entire screen.... and I'm running a big screen. lol That was funny about finding an old laptop. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:46 Message: did you make window big enough ? Seems begin of it is missing again. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:43 Message: Yeah. As I almost expected: > Found 1 deadlock. Analyzing that and thinking how to go further will take some time. But I have to go sleeping now (22:40 here in Finland) and I have to get up early tomorrow. I try to look deeper into it tomorrow. Meanwhile, can you find a 5 year old laptop somewhere? ;-) (namely, any computer with one CPU or core only...) Chances are there it works fine. >btw, I couldn't copy and paste the java console because when the > program locked it wouldn't let me select the console either. Ah, right! And ah, you saw the deadlock reported also. Br, Clemens ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 20:40 Message: btw, I couldn't copy and paste the java console because when the program locked it wouldn't let me select the console either. and looks like your suspicions are right about that dead lock... shows below it found 1. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 20:38 Message: holy moly... its a lot... here goes: at net.sf.colossus.client.SocketClientThread.readAndParseUntilDone(SocketClientThread.java:419) at net.sf.colossus.client.SocketClientThread.run(SocketClientThread.java:373) "Client kevin" prio=6 tid=0x170d5400 nid=0x1eb4 runnable [0x17cdf000] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(Unknown Source) at sun.nio.cs.StreamDecoder.readBytes(Unknown Source) at sun.nio.cs.StreamDecoder.implRead(Unknown Source) at sun.nio.cs.StreamDecoder.read(Unknown Source) - locked <0x041a4f00> (a java.io.InputStreamReader) at java.io.InputStreamReader.read(Unknown Source) at java.io.BufferedReader.fill(Unknown Source) at java.io.BufferedReader.readLine(Unknown Source) - locked <0x041a4f00> (a java.io.InputStreamReader) at java.io.BufferedReader.readLine(Unknown Source) at net.sf.colossus.client.SocketClientThread.waitForLine(SocketClientThread.java:504) at net.sf.colossus.client.SocketClientThread.readAndParseUntilDone(SocketClientThread.java:419) at net.sf.colossus.client.SocketClientThread.run(SocketClientThread.java:373) "Thread-4" prio=6 tid=0x1716a800 nid=0x1428 runnable [0x17c3f000] java.lang.Thread.State: RUNNABLE at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method) at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(Unknown Source) at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(Unknown Source) at sun.nio.ch.WindowsSelectorImpl.doSelect(Unknown Source) at sun.nio.ch.SelectorImpl.lockAndDoSelect(Unknown Source) - locked <0x0418f468> (a sun.nio.ch.Util$1) - locked <0x0418f478> (a java.util.Collections$UnmodifiableSet) - locked <0x0418f3f0> (a sun.nio.ch.WindowsSelectorImpl) at sun.nio.ch.SelectorImpl.select(Unknown Source) at net.sf.colossus.server.Server.handleOutsideChanges(Server.java:439) at net.sf.colossus.server.Server.waitOnSelector(Server.java:398) at net.sf.colossus.server.Server.run(Server.java:227) "TimerQueue" daemon prio=6 tid=0x176e6400 nid=0x1f8c in Object.wait() [0x17a9f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x04168e60> (a javax.swing.TimerQueue) at javax.swing.TimerQueue.run(Unknown Source) - locked <0x04168e60> (a javax.swing.TimerQueue) at java.lang.Thread.run(Unknown Source) "AWT-EventQueue-0" prio=6 tid=0x17042800 nid=0x1eac waiting for monitor entry [0x1759e000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruit.<init>(PickRecruit.java:168) at net.sf.colossus.gui.PickRecruit.pickRecruit(PickRecruit.java:186) - locked <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at net.sf.colossus.gui.ClientGUI.doPickRecruit(ClientGUI.java:2097) at net.sf.colossus.client.Client.doRecruit(Client.java:1763) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch" prio=6 tid=0x1701c000 nid=0x193c waiting for monitor entry [0x173bf000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x04048108> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) "AWT-Windows" daemon prio=6 tid=0x16ff8400 nid=0x1d74 runnable [0x1729f000] java.lang.Thread.State: RUNNABLE at sun.awt.windows.WToolkit.eventLoop(Native Method) at sun.awt.windows.WToolkit.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "AWT-Shutdown" prio=6 tid=0x17001c00 nid=0x1844 in Object.wait() [0x1724f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0402cf70> (a java.lang.Object) at java.lang.Object.wait(Object.java:485) at sun.awt.AWTAutoShutdown.run(Unknown Source) - locked <0x0402cf70> (a java.lang.Object) at java.lang.Thread.run(Unknown Source) "Java2D Disposer" daemon prio=10 tid=0x17018800 nid=0x1cbc in Object.wait() [0x171ff000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0402d000> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x0402d000> (a java.lang.ref.ReferenceQueue$L... [truncated message content] |
|
From: SourceForge.net <no...@so...> - 2011-02-14 19:10:10
|
Bugs item #3177305, was opened at 2011-02-10 12:40 Message generated for change (Comment added) made by nobody You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101939&aid=3177305&group_id=1939 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: GUI Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Nobody/Anonymous (nobody) Assigned to: Clemens Katzer (cleka) Summary: Can not pick color to start game Initial Comment: Recently tried to play this game. I downloaded both the java version and the zip file. Both seem to start up just fine. The board will appear and another small window with choose a color pops up. I can not click on any color. I've tried pressing the letters that correspond to the colors. I've tried alt and ctrl combinations. Nothing works. I have to force the program to quit. Ideas? ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-14 19:10 Message: Downloaded older version (.0) and still had same problem. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-14 16:30 Message: Strange. Even when I run with Javq 1.6.0_xx, there is only "AWT" related thread shown (it's not in a lock situation however anyway. Can you try the ctrl-break once when it's just asking but not locked?) This one is there in both cases: "AWT-EventQueue-0" prio=6 tid=0x17042800 nid=0x1eac waiting for monitor entry [0x1759e000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) ... ... But only you have: "EventQueueMonitor-ComponentEvtDispatch" prio=6 tid=0x1701c000 nid=0x193c waiting for monitor entry [0x173bf000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x04048108> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) Perhaps the fact that you have something with Citrix running (possibly some security stuff... I know what Citrix is, some Remote screen software etc.), perhaps this causes two GUI threads? Can you disable Citrix? Or do you have e.g. a Jave 1.5.0_xx installed and use that instead? BR, Clemens ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-14 16:26 Message: hm, ok... still, that's no solution. Could you download an older version (oldest you find, 0.9.0, or even something from 2007 or 2008), and see whether they behave the same. https://sourceforge.net/projects/colossus/files/ ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-14 13:49 Message: So this morning, I gave it a try and it actually seemed to be working for quite awhile. I even was able to engage in a couple battles. (I died promptly) After several minutes though it did lock up again when I had to choose between two creatures. At least I made it a lot further! ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 21:05 Message: No problem, see you Monday. You should get some sleep. 2300 is way past my bedtime. lol Btw, I am running multiple monitors as well, don't know if that would cause an issue. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:58 Message: > That was funny about finding an old laptop. Hey, that was a practical piece of advice! :>) (if your toaster has big enough screen and keyboard/mouse perhpaps even that will do ... ;~) ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:56 Message: > not before monday OK, fits me fine, then I dont need to "stress" myself. Very nice that you mention it beforehand! And here we see it: "AWT-EventQueue-0" prio=6 tid=0x17042800 nid=0x1eac waiting for monitor entry [0x1759e000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruit.<init>(PickRecruit.java:168) at net.sf.colossus.gui.PickRecruit.pickRecruit(PickRecruit.java:186) - locked <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at net.sf.colossus.gui.ClientGUI.doPickRecruit(ClientGUI.java:2097) at net.sf.colossus.client.Client.doRecruit(Client.java:1763) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch" prio=6 tid=0x1701c000 nid=0x193c waiting for monitor entry [0x173bf000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x04048108> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) STRANGE: Two EDT / GUI graphics related threads, both related to the PickRecruit!?!? Have to crosscheck whether those two threads also both exist in when I run it. Thanks for the provided infos, let's contineue monday or something; but then, rather evenings (time is 5 hours ago until now). Because, I _am_ committed to fix such issues, but its hard to fix if I cant reproduce them... BR & Have a nice weekend! -Clemens ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 20:52 Message: Ok, I tried it again... made it even bigger: Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C:\Documents and Settings\thr85850>"C:\Documents and Settings\thr85850\Desktop\collossus\run.bat" C:\Documents and Settings\thr85850>cd "C:\Documents and Settings\thr85850\Desktop\collossus\" C:\Documents and Settings\thr85850\Desktop\collossus>java -Djava.util.logging.config.file=logging.properties -Xmx256M -jar Colossus.jar 2011-02-10 14:50:27 Full thread dump Java HotSpot(TM) Client VM (14.3-b01 mixed mode): "Client Gold" prio=6 tid=0x177d9800 nid=0x56c runnable [0x17d2f000] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(Unknown Source) at sun.nio.cs.StreamDecoder.readBytes(Unknown Source) at sun.nio.cs.StreamDecoder.implRead(Unknown Source) at sun.nio.cs.StreamDecoder.read(Unknown Source) - locked <0x041a1880> (a java.io.InputStreamReader) at java.io.InputStreamReader.read(Unknown Source) at java.io.BufferedReader.fill(Unknown Source) at java.io.BufferedReader.readLine(Unknown Source) - locked <0x041a1880> (a java.io.InputStreamReader) at java.io.BufferedReader.readLine(Unknown Source) at net.sf.colossus.client.SocketClientThread.waitForLine(SocketClientThread.java:504) at net.sf.colossus.client.SocketClientThread.readAndParseUntilDone(SocketClientThread.java:419) at net.sf.colossus.client.SocketClientThread.run(SocketClientThread.java:373) "Client kevin" prio=6 tid=0x177e7400 nid=0x1634 runnable [0x17cdf000] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(Unknown Source) at sun.nio.cs.StreamDecoder.readBytes(Unknown Source) at sun.nio.cs.StreamDecoder.implRead(Unknown Source) at sun.nio.cs.StreamDecoder.read(Unknown Source) - locked <0x04189358> (a java.io.InputStreamReader) at java.io.InputStreamReader.read(Unknown Source) at java.io.BufferedReader.fill(Unknown Source) at java.io.BufferedReader.readLine(Unknown Source) - locked <0x04189358> (a java.io.InputStreamReader) at java.io.BufferedReader.readLine(Unknown Source) at net.sf.colossus.client.SocketClientThread.waitForLine(SocketClientThread.java:504) at net.sf.colossus.client.SocketClientThread.readAndParseUntilDone(SocketClientThread.java:419) at net.sf.colossus.client.SocketClientThread.run(SocketClientThread.java:373) "Thread-4" prio=6 tid=0x17701400 nid=0x1248 runnable [0x17c3f000] java.lang.Thread.State: RUNNABLE at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method) at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(Unknown Source) at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(Unknown Source) at sun.nio.ch.WindowsSelectorImpl.doSelect(Unknown Source) at sun.nio.ch.SelectorImpl.lockAndDoSelect(Unknown Source) - locked <0x0417bd60> (a sun.nio.ch.Util$1) - locked <0x0417bd70> (a java.util.Collections$UnmodifiableSet) - locked <0x0417bce8> (a sun.nio.ch.WindowsSelectorImpl) at sun.nio.ch.SelectorImpl.select(Unknown Source) at net.sf.colossus.server.Server.handleOutsideChanges(Server.java:439) at net.sf.colossus.server.Server.waitOnSelector(Server.java:398) at net.sf.colossus.server.Server.run(Server.java:227) "TimerQueue" daemon prio=6 tid=0x176dd000 nid=0x1dd0 in Object.wait() [0x17a9f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x04165ee0> (a javax.swing.TimerQueue) at javax.swing.TimerQueue.run(Unknown Source) - locked <0x04165ee0> (a javax.swing.TimerQueue) at java.lang.Thread.run(Unknown Source) "AWT-EventQueue-0" prio=6 tid=0x1703ac00 nid=0x1a08 waiting for monitor entry [0x1759e000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02aa5580> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruit.<init>(PickRecruit.java:168) at net.sf.colossus.gui.PickRecruit.pickRecruit(PickRecruit.java:186) - locked <0x138642d8> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at net.sf.colossus.gui.ClientGUI.doPickRecruit(ClientGUI.java:2097) at net.sf.colossus.client.Client.doRecruit(Client.java:1763) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch" prio=6 tid=0x17022400 nid=0x1bb8 waiting for monitor entry [0x173bf000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x138642d8> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02aa5580> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x040480d0> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) "AWT-Windows" daemon prio=6 tid=0x17018800 nid=0x1694 runnable [0x1729f000] java.lang.Thread.State: RUNNABLE at sun.awt.windows.WToolkit.eventLoop(Native Method) at sun.awt.windows.WToolkit.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "AWT-Shutdown" prio=6 tid=0x17017800 nid=0x410 in Object.wait() [0x1724f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0402d038> (a java.lang.Object) at java.lang.Object.wait(Object.java:485) at sun.awt.AWTAutoShutdown.run(Unknown Source) - locked <0x0402d038> (a java.lang.Object) at java.lang.Thread.run(Unknown Source) "Java2D Disposer" daemon prio=10 tid=0x17011400 nid=0x1fd8 in Object.wait() [0x171ff000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0402d0c8> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x0402d0c8> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) at sun.java2d.Disposer.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "Low Memory Detector" daemon prio=6 tid=0x16c80400 nid=0x1a3c runnable [0x00000000] java.lang.Thread.State: RUNNABLE "CompilerThread0" daemon prio=10 tid=0x16c7a400 nid=0x11c4 waiting on condition [0x00000000] java.lang.Thread.State: RUNNABLE "Attach Listener" daemon prio=10 tid=0x16c78c00 nid=0x13ac runnable [0x00000000] java.lang.Thread.State: RUNNABLE "Signal Dispatcher" daemon prio=10 tid=0x16c77800 nid=0xdac waiting on condition [0x00000000] java.lang.Thread.State: RUNNABLE "Finalizer" daemon prio=8 tid=0x16c67800 nid=0x1860 in Object.wait() [0x16ddf000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x03ebd718> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x03ebd718> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source) "Reference Handler" daemon prio=10 tid=0x16c62c00 nid=0x1ae0 in Object.wait() [0x16d8f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x03ebd7a0> (a java.lang.ref.Reference$Lock) at java.lang.Object.wait(Object.java:485) at java.lang.ref.Reference$ReferenceHandler.run(Unknown Source) - locked <0x03ebd7a0> (a java.lang.ref.Reference$Lock) "main" prio=6 tid=0x003b6400 nid=0x1540 in Object.wait() [0x009df000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0417d9d0> (a java.lang.Object) at java.lang.Object.wait(Object.java:485) at net.sf.colossus.server.Server.waitUntilGameFinishes(Server.java:780) - locked <0x0417d9d0> (a java.lang.Object) at net.sf.colossus.server.GameServerSide.cleanupWhenGameOver(GameServerSide.java:401) at net.sf.colossus.server.GameServerSide.startNewGameAndWaitUntilOver(GameServerSide.java:454) at net.sf.colossus.appmain.Start.setupAndLoop(Start.java:663) at net.sf.colossus.appmain.Start.main(Start.java:874) "VM Thread" prio=10 tid=0x16c5fc00 nid=0x187c runnable "VM Periodic Task Thread" prio=10 tid=0x16c82c00 nid=0x1a24 waiting on condition JNI global references: 1447 Found one Java-level deadlock: ============================= "AWT-EventQueue-0": waiting to lock monitor 0x177d1804 (object 0x02aa5580, a java.lang.Object), which is held by "EventQueueMonitor-ComponentEvtDispatch" "EventQueueMonitor-ComponentEvtDispatch": waiting to lock monitor 0x176eb214 (object 0x138642d8, a java.lang.Class), which is held by "AWT-EventQueue-0" Java stack information for the threads listed above: =================================================== "AWT-EventQueue-0": at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02aa5580> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruit.<init>(PickRecruit.java:168) at net.sf.colossus.gui.PickRecruit.pickRecruit(PickRecruit.java:186) - locked <0x138642d8> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at net.sf.colossus.gui.ClientGUI.doPickRecruit(ClientGUI.java:2097) at net.sf.colossus.client.Client.doRecruit(Client.java:1763) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch": at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x138642d8> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02aa5580> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x040480d0> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) Found 1 deadlock. Heap def new generation total 960K, used 819K [0x02a90000, 0x02b90000, 0x03e40000) eden space 896K, 84% used [0x02a90000, 0x02b4e030, 0x02b70000) from space 64K, 93% used [0x02b80000, 0x02b8ef48, 0x02b90000) to space 64K, 0% used [0x02b70000, 0x02b70000, 0x02b80000) tenured generation total 10940K, used 9911K [0x03e40000, 0x048ef000, 0x12a90000) the space 10940K, 90% used [0x03e40000, 0x047eddf8, 0x047ede00, 0x048ef000) compacting perm gen total 14336K, used 14166K [0x12a90000, 0x13890000, 0x16a90000) the space 14336K, 98% used [0x12a90000, 0x13865a58, 0x13865c00, 0x13890000) No shared spaces configured. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 20:48 Message: Thanks for walking me through this and all. Just so you know I will not be able to respond to you again until Monday. I stretched it to fit my entire screen.... and I'm running a big screen. lol That was funny about finding an old laptop. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:46 Message: did you make window big enough ? Seems begin of it is missing again. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:43 Message: Yeah. As I almost expected: > Found 1 deadlock. Analyzing that and thinking how to go further will take some time. But I have to go sleeping now (22:40 here in Finland) and I have to get up early tomorrow. I try to look deeper into it tomorrow. Meanwhile, can you find a 5 year old laptop somewhere? ;-) (namely, any computer with one CPU or core only...) Chances are there it works fine. >btw, I couldn't copy and paste the java console because when the > program locked it wouldn't let me select the console either. Ah, right! And ah, you saw the deadlock reported also. Br, Clemens ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 20:40 Message: btw, I couldn't copy and paste the java console because when the program locked it wouldn't let me select the console either. and looks like your suspicions are right about that dead lock... shows below it found 1. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 20:38 Message: holy moly... its a lot... here goes: at net.sf.colossus.client.SocketClientThread.readAndParseUntilDone(SocketClientThread.java:419) at net.sf.colossus.client.SocketClientThread.run(SocketClientThread.java:373) "Client kevin" prio=6 tid=0x170d5400 nid=0x1eb4 runnable [0x17cdf000] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(Unknown Source) at sun.nio.cs.StreamDecoder.readBytes(Unknown Source) at sun.nio.cs.StreamDecoder.implRead(Unknown Source) at sun.nio.cs.StreamDecoder.read(Unknown Source) - locked <0x041a4f00> (a java.io.InputStreamReader) at java.io.InputStreamReader.read(Unknown Source) at java.io.BufferedReader.fill(Unknown Source) at java.io.BufferedReader.readLine(Unknown Source) - locked <0x041a4f00> (a java.io.InputStreamReader) at java.io.BufferedReader.readLine(Unknown Source) at net.sf.colossus.client.SocketClientThread.waitForLine(SocketClientThread.java:504) at net.sf.colossus.client.SocketClientThread.readAndParseUntilDone(SocketClientThread.java:419) at net.sf.colossus.client.SocketClientThread.run(SocketClientThread.java:373) "Thread-4" prio=6 tid=0x1716a800 nid=0x1428 runnable [0x17c3f000] java.lang.Thread.State: RUNNABLE at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method) at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(Unknown Source) at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(Unknown Source) at sun.nio.ch.WindowsSelectorImpl.doSelect(Unknown Source) at sun.nio.ch.SelectorImpl.lockAndDoSelect(Unknown Source) - locked <0x0418f468> (a sun.nio.ch.Util$1) - locked <0x0418f478> (a java.util.Collections$UnmodifiableSet) - locked <0x0418f3f0> (a sun.nio.ch.WindowsSelectorImpl) at sun.nio.ch.SelectorImpl.select(Unknown Source) at net.sf.colossus.server.Server.handleOutsideChanges(Server.java:439) at net.sf.colossus.server.Server.waitOnSelector(Server.java:398) at net.sf.colossus.server.Server.run(Server.java:227) "TimerQueue" daemon prio=6 tid=0x176e6400 nid=0x1f8c in Object.wait() [0x17a9f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x04168e60> (a javax.swing.TimerQueue) at javax.swing.TimerQueue.run(Unknown Source) - locked <0x04168e60> (a javax.swing.TimerQueue) at java.lang.Thread.run(Unknown Source) "AWT-EventQueue-0" prio=6 tid=0x17042800 nid=0x1eac waiting for monitor entry [0x1759e000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruit.<init>(PickRecruit.java:168) at net.sf.colossus.gui.PickRecruit.pickRecruit(PickRecruit.java:186) - locked <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at net.sf.colossus.gui.ClientGUI.doPickRecruit(ClientGUI.java:2097) at net.sf.colossus.client.Client.doRecruit(Client.java:1763) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch" prio=6 tid=0x1701c000 nid=0x193c waiting for monitor entry [0x173bf000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x04048108> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) "AWT-Windows" daemon prio=6 tid=0x16ff8400 nid=0x1d74 runnable [0x1729f000] java.lang.Thread.State: RUNNABLE at sun.awt.windows.WToolkit.eventLoop(Native Method) at sun.awt.windows.WToolkit.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "AWT-Shutdown" prio=6 tid=0x17001c00 nid=0x1844 in Object.wait() [0x1724f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0402cf70> (a java.lang.Object) at java.lang.Object.wait(Object.java:485) at sun.awt.AWTAutoShutdown.run(Unknown Source) - locked <0x0402cf70> (a java.lang.Object) at java.lang.Thread.run(Unknown Source) "Java2D Disposer" daemon prio=10 tid=0x17018800 nid=0x1cbc in Object.wait() [0x171ff000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0402d000> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x0402d000> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) at sun.java2d.Disposer.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "Low Memory Detector" daemon prio=6 tid=0x16c80400 nid=0x1cac runnable [0x00000000] java.lang.Thread.State: RUNNABLE "CompilerThread0" daemon prio=10 tid=0x16c7a400 nid=0x450 waiting on condition [0x00000000] java.lang.Thread.State: RUNNABLE "Attach Listener" daemon prio=10 tid=0x16c78c00 nid=0x1d44 runnable [0x00000000] java.lang.Thread.State: RUNNABLE "Signal Dispatcher" daemon prio=10 tid=0x16c77800 nid=0x1b30 waiting on condition [0x00000000] java.lang.Thread.State: RUNNABLE "Finalizer" daemon prio=8 tid=0x16c67800 nid=0x19cc in Object.wait() [0x16ddf000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x03ebd718> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x03ebd718> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source) "Reference Handler" daemon prio=10 tid=0x16c62c00 nid=0x1eb0 in Object.wait() [0x16d8f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x03ebd7a0> (a java.lang.ref.Reference$Lock) at java.lang.Object.wait(Object.java:485) at java.lang.ref.Reference$ReferenceHandler.run(Unknown Source) - locked <0x03ebd7a0> (a java.lang.ref.Reference$Lock) "main" prio=6 tid=0x003b6400 nid=0x1e2c in Object.wait() [0x009df000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x041915c8> (a java.lang.Object) at java.lang.Object.wait(Object.java:485) at net.sf.colossus.server.Server.waitUntilGameFinishes(Server.java:780) - locked <0x041915c8> (a java.lang.Object) at net.sf.colossus.server.GameServerSide.cleanupWhenGameOver(GameServerSide.java:401) at net.sf.colossus.server.GameServerSide.startNewGameAndWaitUntilOver(GameServerSide.java:454) at net.sf.colossus.appmain.Start.setupAndLoop(Start.java:663) at net.sf.colossus.appmain.Start.main(Start.java:874) "VM Thread" prio=10 tid=0x16c5fc00 nid=0x10fc runnable "VM Periodic Task Thread" prio=10 tid=0x16c82c00 nid=0x1a00 waiting on condition JNI global references: 1473 Found one Java-level deadlock: ============================= "AWT-EventQueue-0": waiting to lock monitor 0x177e5b1c (object 0x02ba1288, a java.lang.Object), which is held by "EventQueueMonitor-ComponentEvtDispatch" "EventQueueMonitor-ComponentEvtDispatch": waiting to lock monitor 0x176e8c54 (object 0x13872538, a java.lang.Class), which is held by "AWT-EventQueue-0" Java stack information for the threads listed above: =================================================== "AWT-EventQueue-0": at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruit.<init>(PickRecruit.java:168) at net.sf.colossus.gui.PickRecruit.pickRecruit(PickRecruit.java:186) - locked <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at net.sf.colossus.gui.ClientGUI.doPickRecruit(ClientGUI.java:2097) at net.sf.colossus.client.Client.doRecruit(Client.java:1763) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch": at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x04048108> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) Found 1 deadlock. Heap def new generation total 1216K, used 704K [0x02a90000, 0x02be0000, 0x03e40000) eden space 1088K, 57% used [0x02a90000, 0x02b2b388, 0x02ba0000) from space 128K, 65% used [0x02ba0000, 0x02bb4f20, 0x02bc0000) to space 128K, 0% used [0x02bc0000, 0x02bc0000, 0x02be0000) tenured generation total 15784K, used 9845K [0x03e40000, 0x04daa000, 0x12a90000) the space 15784K, 62% used [0x03e40000, 0x047dd428, 0x047dd600, 0x04daa000) compacting perm gen total 14336K, used 14223K [0x12a90000, 0x13890000, 0x16a90000) the space 14336K, 99% used [0x12a90000, 0x13873d10, 0x13873e00, 0x13890000) No shared spaces configured. Terminate batch job (Y/N)? ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:27 Message: NOTE, from the Java console log you should be able to copy paste! (mark with mouse and Ctrl-C or right click -> copy.) Only from that Colossus own "About" window you can't copy paste. Not sure whether that affinity helps; Colossus is "multithreaded", so if there is more than one core existing it might still use a 2nd. (affinity to me means merely, it would _preferrably_ run on that core). My suspicion is it is some kind of deadlock, caused by the way how those dialogs are called: "synchronous" , and in the "Event Dispatcher thread". That it happens randomly is much more "reasonable" than that some dialogs lock and some not. Such random misbehaviors we had earlier. They were fixed, but merely "somehow" and "when it happened", not systematically "rewrite everything to be thread-safe by design". Can you try the following: Run it from commandline. If possible, make the commandline window as big as possible, like window size (field 3 +4) width 150 height 50, screen buffer size (1+2 fields) 150 and 3000.) (to do so, on the cmdline window, click the smal C:\ in top LEFT corner, Properties). When it looks, make the cmdline box the active window and press Ctrl-Break (bottom left and top right keys of the keyboard together ;-)) Lot of glibberish would be printed to screen. Same top left icon, Edit => Select all ; copy (ctrl-c or from same menu copy). Send me what's there (or post it here). That's the "which thread is doing what at the moment" summary. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 20:10 Message: yes I was able to limit the program running on one processer. Or at least I told it to set its affinity to Core 0 from the processes. It still locked up. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 20:08 Message: I did some further testing... it will actually lock up randomly still. Doesn't matter if I can recruit one or two. :/ ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 20:06 Message: Ran java -version from command window: java version "1.6.0_17" Java(TM) SE Runtime Environment (build 1.6.0_17-b04) Java HotSpot(TM) Client VM (build 14.3-b01, mixed mode) I figured out how to get into the Java Options. Logging was turned off. So now I have a Java Console window when the program opens. So I tried a game, and it got stuck after 2nd time I tried to add a recruit. Btw, I notice it seems to do it when I can choose more than one recruit. Here is the last few lines of the log: (man... this is a lot of typing and I'm not sure it is really showing any errors. It just shows the last step before it "froze". INFO: Legion Gr09 (Lobster) in Tower hex 600 moves to Jungle hex 135 entering on RIGHT Feb 10, 2011 2:00:47 PM net.sf.colossus.server.GameServerSide$GamePhaseAdvancer advancePhaseInternal INFO:Phase advances to Muster Feb 10, 2011 2:00:49 PM net.sf.colossus.server.LegionServerSide addCreature INFO: Added Ceentaur -now there are 20 left. Feb 10, 2011 2:00:49 PM net.sf.colossus.server.GameServerSide doRecruit INFO: Legion Gr05 in Woods hex 39 recruits Centaur with 1 Centaur ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 19:37 Message: > It is a quad core system. hm. That might be part of the reason. I have some wild guess what it could be... Can you tell me exact java version? Help => About tells it. It tells also Log directory, there would be a file Colossus0.log. (The *0,log is always the newest; if new starts, it renames 1 to 2, 0 to 1nd creates new 0.log file). Sorry you have to type the stuff from Help => About, no copy paste. Or make a screenshot if you know how. If you wish you can also send it to me via mail (my SF username, i.e. the "cleka", then the magic a-like character, then users.sourceforge.net . Can you tune your system to use one CPU only? ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 19:15 Message: We were at a party and someone brought the board game Titan over. It confused the heck out of us (never even made it around once) but it seemed interesting. I did a search and found you making an app for it. So I thought I'd try it out. I am definitely brand new to Titan, so I expect to actually be the only player on here that gets defeated by your "dumb" AI. It is a quad core system. No I can not close the the dialog box with the small "X". In fact I can't do anything except shut it down. I selected Auto Pick Recruiters... and now I think it hangs up on actual recruiting now. It appears random too. Sometimes I can recruit a whole stack (7) without "locking up" and other times it will do it after the first recruit. (btw... sometimes I can't move a stack. That just a rule I'm not aware of?) ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 18:50 Message: Do you happen to know, do you have more than one CPU or CPU core? ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 18:43 Message: BTW, are you "well familiar with Titan, just new to use Colossus, or need to learn also "how game works, rules, strategy, etc." first? Once you are familar with the game and the usage, you could even try the public game server (by clicking the "WebClient" button), where you could find other "real people" to play against. (in contrast to the AI ("Artificial Intelligence") i.e. Robot players... However to notice is, people are usually online in afternoon/evening for US time. At other time you might log in there and be alone 30 or 60 mins before any other drop by. However, that's anyway more recommded only a) it does not hang for you any more and b) once you are "fluent" in playing. It's annoying for others when you need, let's say, 1.5 minutes for each individual move, split, recruit etc.... => Practicing to get faster better with AI players.They are all in all rather dump, but for first few weeks ok. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 18:35 Message: okay (or not okay), but that's something. In worst case I have to make you a special version which prints something to screen for every line of code before and around where it calls that "Pick Recruiter" dialog :)) That's what I meant, you might run into a "block" somewhat later with some other dialog. But the recruit dialog itself worked?? Strange; they are very similarly programmed. Some more "smalltalk" :o) > Made me green in fact. > I guess I can always play green. :p :) You can try: Window => Preferences => "Color" tab. Click on "Select" and choose another color. Next time you START a game it would choose that color for you automatically. (all those "Autoplay" options do certain things for you. So in fact you could enable "Auto Pick Recruiter", since that one is rather unimportant, as long as you can choose an actual Recruit. (so we can circumvent THIS cliff for now). But there might be other dialogs later to block you as well. And/or, in fact that's an interesting thing to try, whether that color chooser dialog would work??? If not, can you close it with the "x" shaped icon in upper right corner? (the initial color pick dialog CAN'T be closed that way, or rather, if one does, it reappears immediately.) So, sure, I'd like to continue troubleshoot this. Let's try that above for now, have to bring kids to bed now. -Cle. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 18:17 Message: So I've been running through this... moving, recruiting, etc... then I came to a point where it won't let me pick again. :/ Says: kevinnew: Pick Recruiter in Brush hex17 There is more than one way you can recruit this. Current content of legion Gr05: There is a Titan, Cyclops, Gargoyle, Gargoyle, Centaur, Centaur Pick the creature type you want to reveal: There is a Cyclops, Gargoyle I can't pick anything. Tried clicking on it numerous times. Nothing will select and it is stuck on this dialog box. Not sure why this happening... but thank you for sticking it out with me. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 18:12 Message: You are correct. I typed the name in, it found it and ran fine. Well.. I can play now. yay! ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 18:08 Message: K so, I opened the default kevin.cfg and added those lines to it: Auto\ pick\ markers=true Auto\ pick\ color=true Favorite\ colors=Green And it worked. The game started. Made me green in fact. So far so good to, I was able to split a stack. Move the unit. Recruit. And watched the computer take it's move as well. So not sure why it wasn't working but it is now. Want to continue to troubleshoot? I guess I can always play green. :p ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 18:06 Message: No, you cannot "pick" the name kevinnew - it does not offer all "names that may exist". You choose the name on "Players" tab, On left side, Choose HUman, on right side type the name. 2nd Line, choose e.g. "SimpleAI", it fills right side with <byColor> or something, thats ok, Type there in first line the name kevinnew, and when game starts, it goes looking for a file Colossus-kewvinnew.cfg [and if it wouldn't exist, create it, sooner or later, after GUI / preferences changes]. Now we pre-create that file, so that it skips the color picking dialog because it would find a value to say "auto pick" from the file. -Cle. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 17:59 Message: btw, I did try and run the Colossus.jnlp stand alone and brings up the welcome screen, I hit ok, and the Game setup screen appears. I still can't choose newkevin and when I run it, once again I can not pick... [truncated message content] |
|
From: SourceForge.net <no...@so...> - 2011-02-14 18:13:26
|
Bugs item #3176805, was opened at 2011-02-09 23:54 Message generated for change (Settings changed) made by cleka You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101939&aid=3176805&group_id=1939 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: GUI Group: None >Status: Closed >Resolution: Duplicate Priority: 5 Private: No Submitted By: Nobody/Anonymous (nobody) Assigned to: Clemens Katzer (cleka) Summary: Can not pick color to start game Initial Comment: Recently tried to play this game. I downloaded both the java version and the zip file. Both seem to start up just fine. The board will appear and another small window with choose a color pops up. I can not click on any color. I've tried pressing the letters that correspond to the colors. I've tried alt and ctrl combinations. Nothing works. I have to force the program to quit. Ideas? ---------------------------------------------------------------------- >Comment By: Clemens Katzer (cleka) Date: 2011-02-14 20:13 Message: Duplicate of 3177305; in there all followup is done. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101939&aid=3176805&group_id=1939 |
|
From: SourceForge.net <no...@so...> - 2011-02-14 16:30:59
|
Bugs item #3177305, was opened at 2011-02-10 14:40 Message generated for change (Comment added) made by cleka You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101939&aid=3177305&group_id=1939 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: GUI Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Nobody/Anonymous (nobody) Assigned to: Clemens Katzer (cleka) Summary: Can not pick color to start game Initial Comment: Recently tried to play this game. I downloaded both the java version and the zip file. Both seem to start up just fine. The board will appear and another small window with choose a color pops up. I can not click on any color. I've tried pressing the letters that correspond to the colors. I've tried alt and ctrl combinations. Nothing works. I have to force the program to quit. Ideas? ---------------------------------------------------------------------- >Comment By: Clemens Katzer (cleka) Date: 2011-02-14 18:30 Message: Strange. Even when I run with Javq 1.6.0_xx, there is only "AWT" related thread shown (it's not in a lock situation however anyway. Can you try the ctrl-break once when it's just asking but not locked?) This one is there in both cases: "AWT-EventQueue-0" prio=6 tid=0x17042800 nid=0x1eac waiting for monitor entry [0x1759e000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) ... ... But only you have: "EventQueueMonitor-ComponentEvtDispatch" prio=6 tid=0x1701c000 nid=0x193c waiting for monitor entry [0x173bf000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x04048108> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) Perhaps the fact that you have something with Citrix running (possibly some security stuff... I know what Citrix is, some Remote screen software etc.), perhaps this causes two GUI threads? Can you disable Citrix? Or do you have e.g. a Jave 1.5.0_xx installed and use that instead? BR, Clemens ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-14 18:26 Message: hm, ok... still, that's no solution. Could you download an older version (oldest you find, 0.9.0, or even something from 2007 or 2008), and see whether they behave the same. https://sourceforge.net/projects/colossus/files/ ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-14 15:49 Message: So this morning, I gave it a try and it actually seemed to be working for quite awhile. I even was able to engage in a couple battles. (I died promptly) After several minutes though it did lock up again when I had to choose between two creatures. At least I made it a lot further! ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 23:05 Message: No problem, see you Monday. You should get some sleep. 2300 is way past my bedtime. lol Btw, I am running multiple monitors as well, don't know if that would cause an issue. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 22:58 Message: > That was funny about finding an old laptop. Hey, that was a practical piece of advice! :>) (if your toaster has big enough screen and keyboard/mouse perhpaps even that will do ... ;~) ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 22:56 Message: > not before monday OK, fits me fine, then I dont need to "stress" myself. Very nice that you mention it beforehand! And here we see it: "AWT-EventQueue-0" prio=6 tid=0x17042800 nid=0x1eac waiting for monitor entry [0x1759e000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruit.<init>(PickRecruit.java:168) at net.sf.colossus.gui.PickRecruit.pickRecruit(PickRecruit.java:186) - locked <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at net.sf.colossus.gui.ClientGUI.doPickRecruit(ClientGUI.java:2097) at net.sf.colossus.client.Client.doRecruit(Client.java:1763) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch" prio=6 tid=0x1701c000 nid=0x193c waiting for monitor entry [0x173bf000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x04048108> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) STRANGE: Two EDT / GUI graphics related threads, both related to the PickRecruit!?!? Have to crosscheck whether those two threads also both exist in when I run it. Thanks for the provided infos, let's contineue monday or something; but then, rather evenings (time is 5 hours ago until now). Because, I _am_ committed to fix such issues, but its hard to fix if I cant reproduce them... BR & Have a nice weekend! -Clemens ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 22:52 Message: Ok, I tried it again... made it even bigger: Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C:\Documents and Settings\thr85850>"C:\Documents and Settings\thr85850\Desktop\collossus\run.bat" C:\Documents and Settings\thr85850>cd "C:\Documents and Settings\thr85850\Desktop\collossus\" C:\Documents and Settings\thr85850\Desktop\collossus>java -Djava.util.logging.config.file=logging.properties -Xmx256M -jar Colossus.jar 2011-02-10 14:50:27 Full thread dump Java HotSpot(TM) Client VM (14.3-b01 mixed mode): "Client Gold" prio=6 tid=0x177d9800 nid=0x56c runnable [0x17d2f000] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(Unknown Source) at sun.nio.cs.StreamDecoder.readBytes(Unknown Source) at sun.nio.cs.StreamDecoder.implRead(Unknown Source) at sun.nio.cs.StreamDecoder.read(Unknown Source) - locked <0x041a1880> (a java.io.InputStreamReader) at java.io.InputStreamReader.read(Unknown Source) at java.io.BufferedReader.fill(Unknown Source) at java.io.BufferedReader.readLine(Unknown Source) - locked <0x041a1880> (a java.io.InputStreamReader) at java.io.BufferedReader.readLine(Unknown Source) at net.sf.colossus.client.SocketClientThread.waitForLine(SocketClientThread.java:504) at net.sf.colossus.client.SocketClientThread.readAndParseUntilDone(SocketClientThread.java:419) at net.sf.colossus.client.SocketClientThread.run(SocketClientThread.java:373) "Client kevin" prio=6 tid=0x177e7400 nid=0x1634 runnable [0x17cdf000] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(Unknown Source) at sun.nio.cs.StreamDecoder.readBytes(Unknown Source) at sun.nio.cs.StreamDecoder.implRead(Unknown Source) at sun.nio.cs.StreamDecoder.read(Unknown Source) - locked <0x04189358> (a java.io.InputStreamReader) at java.io.InputStreamReader.read(Unknown Source) at java.io.BufferedReader.fill(Unknown Source) at java.io.BufferedReader.readLine(Unknown Source) - locked <0x04189358> (a java.io.InputStreamReader) at java.io.BufferedReader.readLine(Unknown Source) at net.sf.colossus.client.SocketClientThread.waitForLine(SocketClientThread.java:504) at net.sf.colossus.client.SocketClientThread.readAndParseUntilDone(SocketClientThread.java:419) at net.sf.colossus.client.SocketClientThread.run(SocketClientThread.java:373) "Thread-4" prio=6 tid=0x17701400 nid=0x1248 runnable [0x17c3f000] java.lang.Thread.State: RUNNABLE at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method) at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(Unknown Source) at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(Unknown Source) at sun.nio.ch.WindowsSelectorImpl.doSelect(Unknown Source) at sun.nio.ch.SelectorImpl.lockAndDoSelect(Unknown Source) - locked <0x0417bd60> (a sun.nio.ch.Util$1) - locked <0x0417bd70> (a java.util.Collections$UnmodifiableSet) - locked <0x0417bce8> (a sun.nio.ch.WindowsSelectorImpl) at sun.nio.ch.SelectorImpl.select(Unknown Source) at net.sf.colossus.server.Server.handleOutsideChanges(Server.java:439) at net.sf.colossus.server.Server.waitOnSelector(Server.java:398) at net.sf.colossus.server.Server.run(Server.java:227) "TimerQueue" daemon prio=6 tid=0x176dd000 nid=0x1dd0 in Object.wait() [0x17a9f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x04165ee0> (a javax.swing.TimerQueue) at javax.swing.TimerQueue.run(Unknown Source) - locked <0x04165ee0> (a javax.swing.TimerQueue) at java.lang.Thread.run(Unknown Source) "AWT-EventQueue-0" prio=6 tid=0x1703ac00 nid=0x1a08 waiting for monitor entry [0x1759e000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02aa5580> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruit.<init>(PickRecruit.java:168) at net.sf.colossus.gui.PickRecruit.pickRecruit(PickRecruit.java:186) - locked <0x138642d8> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at net.sf.colossus.gui.ClientGUI.doPickRecruit(ClientGUI.java:2097) at net.sf.colossus.client.Client.doRecruit(Client.java:1763) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch" prio=6 tid=0x17022400 nid=0x1bb8 waiting for monitor entry [0x173bf000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x138642d8> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02aa5580> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x040480d0> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) "AWT-Windows" daemon prio=6 tid=0x17018800 nid=0x1694 runnable [0x1729f000] java.lang.Thread.State: RUNNABLE at sun.awt.windows.WToolkit.eventLoop(Native Method) at sun.awt.windows.WToolkit.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "AWT-Shutdown" prio=6 tid=0x17017800 nid=0x410 in Object.wait() [0x1724f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0402d038> (a java.lang.Object) at java.lang.Object.wait(Object.java:485) at sun.awt.AWTAutoShutdown.run(Unknown Source) - locked <0x0402d038> (a java.lang.Object) at java.lang.Thread.run(Unknown Source) "Java2D Disposer" daemon prio=10 tid=0x17011400 nid=0x1fd8 in Object.wait() [0x171ff000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0402d0c8> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x0402d0c8> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) at sun.java2d.Disposer.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "Low Memory Detector" daemon prio=6 tid=0x16c80400 nid=0x1a3c runnable [0x00000000] java.lang.Thread.State: RUNNABLE "CompilerThread0" daemon prio=10 tid=0x16c7a400 nid=0x11c4 waiting on condition [0x00000000] java.lang.Thread.State: RUNNABLE "Attach Listener" daemon prio=10 tid=0x16c78c00 nid=0x13ac runnable [0x00000000] java.lang.Thread.State: RUNNABLE "Signal Dispatcher" daemon prio=10 tid=0x16c77800 nid=0xdac waiting on condition [0x00000000] java.lang.Thread.State: RUNNABLE "Finalizer" daemon prio=8 tid=0x16c67800 nid=0x1860 in Object.wait() [0x16ddf000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x03ebd718> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x03ebd718> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source) "Reference Handler" daemon prio=10 tid=0x16c62c00 nid=0x1ae0 in Object.wait() [0x16d8f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x03ebd7a0> (a java.lang.ref.Reference$Lock) at java.lang.Object.wait(Object.java:485) at java.lang.ref.Reference$ReferenceHandler.run(Unknown Source) - locked <0x03ebd7a0> (a java.lang.ref.Reference$Lock) "main" prio=6 tid=0x003b6400 nid=0x1540 in Object.wait() [0x009df000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0417d9d0> (a java.lang.Object) at java.lang.Object.wait(Object.java:485) at net.sf.colossus.server.Server.waitUntilGameFinishes(Server.java:780) - locked <0x0417d9d0> (a java.lang.Object) at net.sf.colossus.server.GameServerSide.cleanupWhenGameOver(GameServerSide.java:401) at net.sf.colossus.server.GameServerSide.startNewGameAndWaitUntilOver(GameServerSide.java:454) at net.sf.colossus.appmain.Start.setupAndLoop(Start.java:663) at net.sf.colossus.appmain.Start.main(Start.java:874) "VM Thread" prio=10 tid=0x16c5fc00 nid=0x187c runnable "VM Periodic Task Thread" prio=10 tid=0x16c82c00 nid=0x1a24 waiting on condition JNI global references: 1447 Found one Java-level deadlock: ============================= "AWT-EventQueue-0": waiting to lock monitor 0x177d1804 (object 0x02aa5580, a java.lang.Object), which is held by "EventQueueMonitor-ComponentEvtDispatch" "EventQueueMonitor-ComponentEvtDispatch": waiting to lock monitor 0x176eb214 (object 0x138642d8, a java.lang.Class), which is held by "AWT-EventQueue-0" Java stack information for the threads listed above: =================================================== "AWT-EventQueue-0": at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02aa5580> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruit.<init>(PickRecruit.java:168) at net.sf.colossus.gui.PickRecruit.pickRecruit(PickRecruit.java:186) - locked <0x138642d8> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at net.sf.colossus.gui.ClientGUI.doPickRecruit(ClientGUI.java:2097) at net.sf.colossus.client.Client.doRecruit(Client.java:1763) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch": at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x138642d8> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02aa5580> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x040480d0> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) Found 1 deadlock. Heap def new generation total 960K, used 819K [0x02a90000, 0x02b90000, 0x03e40000) eden space 896K, 84% used [0x02a90000, 0x02b4e030, 0x02b70000) from space 64K, 93% used [0x02b80000, 0x02b8ef48, 0x02b90000) to space 64K, 0% used [0x02b70000, 0x02b70000, 0x02b80000) tenured generation total 10940K, used 9911K [0x03e40000, 0x048ef000, 0x12a90000) the space 10940K, 90% used [0x03e40000, 0x047eddf8, 0x047ede00, 0x048ef000) compacting perm gen total 14336K, used 14166K [0x12a90000, 0x13890000, 0x16a90000) the space 14336K, 98% used [0x12a90000, 0x13865a58, 0x13865c00, 0x13890000) No shared spaces configured. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 22:48 Message: Thanks for walking me through this and all. Just so you know I will not be able to respond to you again until Monday. I stretched it to fit my entire screen.... and I'm running a big screen. lol That was funny about finding an old laptop. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 22:46 Message: did you make window big enough ? Seems begin of it is missing again. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 22:43 Message: Yeah. As I almost expected: > Found 1 deadlock. Analyzing that and thinking how to go further will take some time. But I have to go sleeping now (22:40 here in Finland) and I have to get up early tomorrow. I try to look deeper into it tomorrow. Meanwhile, can you find a 5 year old laptop somewhere? ;-) (namely, any computer with one CPU or core only...) Chances are there it works fine. >btw, I couldn't copy and paste the java console because when the > program locked it wouldn't let me select the console either. Ah, right! And ah, you saw the deadlock reported also. Br, Clemens ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 22:40 Message: btw, I couldn't copy and paste the java console because when the program locked it wouldn't let me select the console either. and looks like your suspicions are right about that dead lock... shows below it found 1. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 22:38 Message: holy moly... its a lot... here goes: at net.sf.colossus.client.SocketClientThread.readAndParseUntilDone(SocketClientThread.java:419) at net.sf.colossus.client.SocketClientThread.run(SocketClientThread.java:373) "Client kevin" prio=6 tid=0x170d5400 nid=0x1eb4 runnable [0x17cdf000] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(Unknown Source) at sun.nio.cs.StreamDecoder.readBytes(Unknown Source) at sun.nio.cs.StreamDecoder.implRead(Unknown Source) at sun.nio.cs.StreamDecoder.read(Unknown Source) - locked <0x041a4f00> (a java.io.InputStreamReader) at java.io.InputStreamReader.read(Unknown Source) at java.io.BufferedReader.fill(Unknown Source) at java.io.BufferedReader.readLine(Unknown Source) - locked <0x041a4f00> (a java.io.InputStreamReader) at java.io.BufferedReader.readLine(Unknown Source) at net.sf.colossus.client.SocketClientThread.waitForLine(SocketClientThread.java:504) at net.sf.colossus.client.SocketClientThread.readAndParseUntilDone(SocketClientThread.java:419) at net.sf.colossus.client.SocketClientThread.run(SocketClientThread.java:373) "Thread-4" prio=6 tid=0x1716a800 nid=0x1428 runnable [0x17c3f000] java.lang.Thread.State: RUNNABLE at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method) at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(Unknown Source) at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(Unknown Source) at sun.nio.ch.WindowsSelectorImpl.doSelect(Unknown Source) at sun.nio.ch.SelectorImpl.lockAndDoSelect(Unknown Source) - locked <0x0418f468> (a sun.nio.ch.Util$1) - locked <0x0418f478> (a java.util.Collections$UnmodifiableSet) - locked <0x0418f3f0> (a sun.nio.ch.WindowsSelectorImpl) at sun.nio.ch.SelectorImpl.select(Unknown Source) at net.sf.colossus.server.Server.handleOutsideChanges(Server.java:439) at net.sf.colossus.server.Server.waitOnSelector(Server.java:398) at net.sf.colossus.server.Server.run(Server.java:227) "TimerQueue" daemon prio=6 tid=0x176e6400 nid=0x1f8c in Object.wait() [0x17a9f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x04168e60> (a javax.swing.TimerQueue) at javax.swing.TimerQueue.run(Unknown Source) - locked <0x04168e60> (a javax.swing.TimerQueue) at java.lang.Thread.run(Unknown Source) "AWT-EventQueue-0" prio=6 tid=0x17042800 nid=0x1eac waiting for monitor entry [0x1759e000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruit.<init>(PickRecruit.java:168) at net.sf.colossus.gui.PickRecruit.pickRecruit(PickRecruit.java:186) - locked <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at net.sf.colossus.gui.ClientGUI.doPickRecruit(ClientGUI.java:2097) at net.sf.colossus.client.Client.doRecruit(Client.java:1763) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch" prio=6 tid=0x1701c000 nid=0x193c waiting for monitor entry [0x173bf000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x04048108> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) "AWT-Windows" daemon prio=6 tid=0x16ff8400 nid=0x1d74 runnable [0x1729f000] java.lang.Thread.State: RUNNABLE at sun.awt.windows.WToolkit.eventLoop(Native Method) at sun.awt.windows.WToolkit.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "AWT-Shutdown" prio=6 tid=0x17001c00 nid=0x1844 in Object.wait() [0x1724f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0402cf70> (a java.lang.Object) at java.lang.Object.wait(Object.java:485) at sun.awt.AWTAutoShutdown.run(Unknown Source) - locked <0x0402cf70> (a java.lang.Object) at java.lang.Thread.run(Unknown Source) "Java2D Disposer" daemon prio=10 tid=0x17018800 nid=0x1cbc in Object.wait() [0x171ff000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0402d000> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x0402d000> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) at sun.java2d.Disposer.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "Low Memory Detector" daemon prio=6 tid=0x16c80400 nid=0x1cac runnable [0x00000000] java.lang.Thread.State: RUNNABLE "CompilerThread0" daemon prio=10 tid=0x16c7a400 nid=0x450 waiting on condition [0x00000000] java.lang.Thread.State: RUNNABLE "Attach Listener" daemon prio=10 tid=0x16c78c00 nid=0x1d44 runnable [0x00000000] java.lang.Thread.State: RUNNABLE "Signal Dispatcher" daemon prio=10 tid=0x16c77800 nid=0x1b30 waiting on condition [0x00000000] java.lang.Thread.State: RUNNABLE "Finalizer" daemon prio=8 tid=0x16c67800 nid=0x19cc in Object.wait() [0x16ddf000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x03ebd718> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x03ebd718> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source) "Reference Handler" daemon prio=10 tid=0x16c62c00 nid=0x1eb0 in Object.wait() [0x16d8f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x03ebd7a0> (a java.lang.ref.Reference$Lock) at java.lang.Object.wait(Object.java:485) at java.lang.ref.Reference$ReferenceHandler.run(Unknown Source) - locked <0x03ebd7a0> (a java.lang.ref.Reference$Lock) "main" prio=6 tid=0x003b6400 nid=0x1e2c in Object.wait() [0x009df000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x041915c8> (a java.lang.Object) at java.lang.Object.wait(Object.java:485) at net.sf.colossus.server.Server.waitUntilGameFinishes(Server.java:780) - locked <0x041915c8> (a java.lang.Object) at net.sf.colossus.server.GameServerSide.cleanupWhenGameOver(GameServerSide.java:401) at net.sf.colossus.server.GameServerSide.startNewGameAndWaitUntilOver(GameServerSide.java:454) at net.sf.colossus.appmain.Start.setupAndLoop(Start.java:663) at net.sf.colossus.appmain.Start.main(Start.java:874) "VM Thread" prio=10 tid=0x16c5fc00 nid=0x10fc runnable "VM Periodic Task Thread" prio=10 tid=0x16c82c00 nid=0x1a00 waiting on condition JNI global references: 1473 Found one Java-level deadlock: ============================= "AWT-EventQueue-0": waiting to lock monitor 0x177e5b1c (object 0x02ba1288, a java.lang.Object), which is held by "EventQueueMonitor-ComponentEvtDispatch" "EventQueueMonitor-ComponentEvtDispatch": waiting to lock monitor 0x176e8c54 (object 0x13872538, a java.lang.Class), which is held by "AWT-EventQueue-0" Java stack information for the threads listed above: =================================================== "AWT-EventQueue-0": at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruit.<init>(PickRecruit.java:168) at net.sf.colossus.gui.PickRecruit.pickRecruit(PickRecruit.java:186) - locked <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at net.sf.colossus.gui.ClientGUI.doPickRecruit(ClientGUI.java:2097) at net.sf.colossus.client.Client.doRecruit(Client.java:1763) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch": at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x04048108> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) Found 1 deadlock. Heap def new generation total 1216K, used 704K [0x02a90000, 0x02be0000, 0x03e40000) eden space 1088K, 57% used [0x02a90000, 0x02b2b388, 0x02ba0000) from space 128K, 65% used [0x02ba0000, 0x02bb4f20, 0x02bc0000) to space 128K, 0% used [0x02bc0000, 0x02bc0000, 0x02be0000) tenured generation total 15784K, used 9845K [0x03e40000, 0x04daa000, 0x12a90000) the space 15784K, 62% used [0x03e40000, 0x047dd428, 0x047dd600, 0x04daa000) compacting perm gen total 14336K, used 14223K [0x12a90000, 0x13890000, 0x16a90000) the space 14336K, 99% used [0x12a90000, 0x13873d10, 0x13873e00, 0x13890000) No shared spaces configured. Terminate batch job (Y/N)? ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 22:27 Message: NOTE, from the Java console log you should be able to copy paste! (mark with mouse and Ctrl-C or right click -> copy.) Only from that Colossus own "About" window you can't copy paste. Not sure whether that affinity helps; Colossus is "multithreaded", so if there is more than one core existing it might still use a 2nd. (affinity to me means merely, it would _preferrably_ run on that core). My suspicion is it is some kind of deadlock, caused by the way how those dialogs are called: "synchronous" , and in the "Event Dispatcher thread". That it happens randomly is much more "reasonable" than that some dialogs lock and some not. Such random misbehaviors we had earlier. They were fixed, but merely "somehow" and "when it happened", not systematically "rewrite everything to be thread-safe by design". Can you try the following: Run it from commandline. If possible, make the commandline window as big as possible, like window size (field 3 +4) width 150 height 50, screen buffer size (1+2 fields) 150 and 3000.) (to do so, on the cmdline window, click the smal C:\ in top LEFT corner, Properties). When it looks, make the cmdline box the active window and press Ctrl-Break (bottom left and top right keys of the keyboard together ;-)) Lot of glibberish would be printed to screen. Same top left icon, Edit => Select all ; copy (ctrl-c or from same menu copy). Send me what's there (or post it here). That's the "which thread is doing what at the moment" summary. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 22:10 Message: yes I was able to limit the program running on one processer. Or at least I told it to set its affinity to Core 0 from the processes. It still locked up. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 22:08 Message: I did some further testing... it will actually lock up randomly still. Doesn't matter if I can recruit one or two. :/ ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 22:06 Message: Ran java -version from command window: java version "1.6.0_17" Java(TM) SE Runtime Environment (build 1.6.0_17-b04) Java HotSpot(TM) Client VM (build 14.3-b01, mixed mode) I figured out how to get into the Java Options. Logging was turned off. So now I have a Java Console window when the program opens. So I tried a game, and it got stuck after 2nd time I tried to add a recruit. Btw, I notice it seems to do it when I can choose more than one recruit. Here is the last few lines of the log: (man... this is a lot of typing and I'm not sure it is really showing any errors. It just shows the last step before it "froze". INFO: Legion Gr09 (Lobster) in Tower hex 600 moves to Jungle hex 135 entering on RIGHT Feb 10, 2011 2:00:47 PM net.sf.colossus.server.GameServerSide$GamePhaseAdvancer advancePhaseInternal INFO:Phase advances to Muster Feb 10, 2011 2:00:49 PM net.sf.colossus.server.LegionServerSide addCreature INFO: Added Ceentaur -now there are 20 left. Feb 10, 2011 2:00:49 PM net.sf.colossus.server.GameServerSide doRecruit INFO: Legion Gr05 in Woods hex 39 recruits Centaur with 1 Centaur ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 21:37 Message: > It is a quad core system. hm. That might be part of the reason. I have some wild guess what it could be... Can you tell me exact java version? Help => About tells it. It tells also Log directory, there would be a file Colossus0.log. (The *0,log is always the newest; if new starts, it renames 1 to 2, 0 to 1nd creates new 0.log file). Sorry you have to type the stuff from Help => About, no copy paste. Or make a screenshot if you know how. If you wish you can also send it to me via mail (my SF username, i.e. the "cleka", then the magic a-like character, then users.sourceforge.net . Can you tune your system to use one CPU only? ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 21:15 Message: We were at a party and someone brought the board game Titan over. It confused the heck out of us (never even made it around once) but it seemed interesting. I did a search and found you making an app for it. So I thought I'd try it out. I am definitely brand new to Titan, so I expect to actually be the only player on here that gets defeated by your "dumb" AI. It is a quad core system. No I can not close the the dialog box with the small "X". In fact I can't do anything except shut it down. I selected Auto Pick Recruiters... and now I think it hangs up on actual recruiting now. It appears random too. Sometimes I can recruit a whole stack (7) without "locking up" and other times it will do it after the first recruit. (btw... sometimes I can't move a stack. That just a rule I'm not aware of?) ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:50 Message: Do you happen to know, do you have more than one CPU or CPU core? ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:43 Message: BTW, are you "well familiar with Titan, just new to use Colossus, or need to learn also "how game works, rules, strategy, etc." first? Once you are familar with the game and the usage, you could even try the public game server (by clicking the "WebClient" button), where you could find other "real people" to play against. (in contrast to the AI ("Artificial Intelligence") i.e. Robot players... However to notice is, people are usually online in afternoon/evening for US time. At other time you might log in there and be alone 30 or 60 mins before any other drop by. However, that's anyway more recommded only a) it does not hang for you any more and b) once you are "fluent" in playing. It's annoying for others when you need, let's say, 1.5 minutes for each individual move, split, recruit etc.... => Practicing to get faster better with AI players.They are all in all rather dump, but for first few weeks ok. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:35 Message: okay (or not okay), but that's something. In worst case I have to make you a special version which prints something to screen for every line of code before and around where it calls that "Pick Recruiter" dialog :)) That's what I meant, you might run into a "block" somewhat later with some other dialog. But the recruit dialog itself worked?? Strange; they are very similarly programmed. Some more "smalltalk" :o) > Made me green in fact. > I guess I can always play green. :p :) You can try: Window => Preferences => "Color" tab. Click on "Select" and choose another color. Next time you START a game it would choose that color for you automatically. (all those "Autoplay" options do certain things for you. So in fact you could enable "Auto Pick Recruiter", since that one is rather unimportant, as long as you can choose an actual Recruit. (so we can circumvent THIS cliff for now). But there might be other dialogs later to block you as well. And/or, in fact that's an interesting thing to try, whether that color chooser dialog would work??? If not, can you close it with the "x" shaped icon in upper right corner? (the initial color pick dialog CAN'T be closed that way, or rather, if one does, it reappears immediately.) So, sure, I'd like to continue troubleshoot this. Let's try that above for now, have to bring kids to bed now. -Cle. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 20:17 Message: So I've been running through this... moving, recruiting, etc... then I came to a point where it won't let me pick again. :/ Says: kevinnew: Pick Recruiter in Brush hex17 There is more than one way you can recruit this. Current content of legion Gr05: There is a Titan, Cyclops, Gargoyle, Gargoyle, Centaur, Centaur Pick the creature type you want to reveal: There is a Cyclops, Gargoyle I can't pick anything. Tried clicking on it numerous times. Nothing will select and it is stuck on this dialog box. Not sure why this happening... but thank you for sticking it out with me. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 20:12 Message: You are correct. I typed the name in, it found it and ran fine. Well.. I can play now. yay! ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 20:08 Message: K so, I opened the default kevin.cfg and added those lines to it: Auto\ pick\ markers=true Auto\ pick\ color=true Favorite\ colors=Green And it worked. The game started. Made me green in fact. So far so good to, I was able to split a stack. Move the unit. Recruit. And watched the computer take it's move as well. So not sure why it wasn't working but it is now. Want to continue to troubleshoot? I guess I can always play green. :p ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:06 Message: No, you cannot "pick" the name kevinnew - it does not offer all "names that may exist". You choose the name on "Players" tab, On left side, Choose HUman, on right side type the name. 2nd Line, choose e.g. "SimpleAI", it fills right side with <byColor> or something, thats ok, Type there in first line the name kevinnew, and when game starts, it goes looking for a file Colossus-kewvinnew.cfg [and if it wouldn't exist, create it, sooner or later, after GUI / preferences changes]. Now we pre-create that file, so that it skips the color picking dialog because it would find a value to say "auto pick" from the file. -Cle. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 19:59 Message: btw, I did try and run the Colossus.jnlp stand alone and brings up the welcome screen, I hit ok, and the Game setup screen appears. I still can't choose newkevin and when I run it, once again I can not pick any of the colors. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 19:57 Message: I'll start from the beginning... [truncated message content] |
|
From: SourceForge.net <no...@so...> - 2011-02-14 16:26:47
|
Bugs item #3177305, was opened at 2011-02-10 14:40 Message generated for change (Comment added) made by cleka You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101939&aid=3177305&group_id=1939 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: GUI Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Nobody/Anonymous (nobody) Assigned to: Clemens Katzer (cleka) Summary: Can not pick color to start game Initial Comment: Recently tried to play this game. I downloaded both the java version and the zip file. Both seem to start up just fine. The board will appear and another small window with choose a color pops up. I can not click on any color. I've tried pressing the letters that correspond to the colors. I've tried alt and ctrl combinations. Nothing works. I have to force the program to quit. Ideas? ---------------------------------------------------------------------- >Comment By: Clemens Katzer (cleka) Date: 2011-02-14 18:26 Message: hm, ok... still, that's no solution. Could you download an older version (oldest you find, 0.9.0, or even something from 2007 or 2008), and see whether they behave the same. https://sourceforge.net/projects/colossus/files/ ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-14 15:49 Message: So this morning, I gave it a try and it actually seemed to be working for quite awhile. I even was able to engage in a couple battles. (I died promptly) After several minutes though it did lock up again when I had to choose between two creatures. At least I made it a lot further! ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 23:05 Message: No problem, see you Monday. You should get some sleep. 2300 is way past my bedtime. lol Btw, I am running multiple monitors as well, don't know if that would cause an issue. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 22:58 Message: > That was funny about finding an old laptop. Hey, that was a practical piece of advice! :>) (if your toaster has big enough screen and keyboard/mouse perhpaps even that will do ... ;~) ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 22:56 Message: > not before monday OK, fits me fine, then I dont need to "stress" myself. Very nice that you mention it beforehand! And here we see it: "AWT-EventQueue-0" prio=6 tid=0x17042800 nid=0x1eac waiting for monitor entry [0x1759e000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruit.<init>(PickRecruit.java:168) at net.sf.colossus.gui.PickRecruit.pickRecruit(PickRecruit.java:186) - locked <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at net.sf.colossus.gui.ClientGUI.doPickRecruit(ClientGUI.java:2097) at net.sf.colossus.client.Client.doRecruit(Client.java:1763) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch" prio=6 tid=0x1701c000 nid=0x193c waiting for monitor entry [0x173bf000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x04048108> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) STRANGE: Two EDT / GUI graphics related threads, both related to the PickRecruit!?!? Have to crosscheck whether those two threads also both exist in when I run it. Thanks for the provided infos, let's contineue monday or something; but then, rather evenings (time is 5 hours ago until now). Because, I _am_ committed to fix such issues, but its hard to fix if I cant reproduce them... BR & Have a nice weekend! -Clemens ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 22:52 Message: Ok, I tried it again... made it even bigger: Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C:\Documents and Settings\thr85850>"C:\Documents and Settings\thr85850\Desktop\collossus\run.bat" C:\Documents and Settings\thr85850>cd "C:\Documents and Settings\thr85850\Desktop\collossus\" C:\Documents and Settings\thr85850\Desktop\collossus>java -Djava.util.logging.config.file=logging.properties -Xmx256M -jar Colossus.jar 2011-02-10 14:50:27 Full thread dump Java HotSpot(TM) Client VM (14.3-b01 mixed mode): "Client Gold" prio=6 tid=0x177d9800 nid=0x56c runnable [0x17d2f000] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(Unknown Source) at sun.nio.cs.StreamDecoder.readBytes(Unknown Source) at sun.nio.cs.StreamDecoder.implRead(Unknown Source) at sun.nio.cs.StreamDecoder.read(Unknown Source) - locked <0x041a1880> (a java.io.InputStreamReader) at java.io.InputStreamReader.read(Unknown Source) at java.io.BufferedReader.fill(Unknown Source) at java.io.BufferedReader.readLine(Unknown Source) - locked <0x041a1880> (a java.io.InputStreamReader) at java.io.BufferedReader.readLine(Unknown Source) at net.sf.colossus.client.SocketClientThread.waitForLine(SocketClientThread.java:504) at net.sf.colossus.client.SocketClientThread.readAndParseUntilDone(SocketClientThread.java:419) at net.sf.colossus.client.SocketClientThread.run(SocketClientThread.java:373) "Client kevin" prio=6 tid=0x177e7400 nid=0x1634 runnable [0x17cdf000] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(Unknown Source) at sun.nio.cs.StreamDecoder.readBytes(Unknown Source) at sun.nio.cs.StreamDecoder.implRead(Unknown Source) at sun.nio.cs.StreamDecoder.read(Unknown Source) - locked <0x04189358> (a java.io.InputStreamReader) at java.io.InputStreamReader.read(Unknown Source) at java.io.BufferedReader.fill(Unknown Source) at java.io.BufferedReader.readLine(Unknown Source) - locked <0x04189358> (a java.io.InputStreamReader) at java.io.BufferedReader.readLine(Unknown Source) at net.sf.colossus.client.SocketClientThread.waitForLine(SocketClientThread.java:504) at net.sf.colossus.client.SocketClientThread.readAndParseUntilDone(SocketClientThread.java:419) at net.sf.colossus.client.SocketClientThread.run(SocketClientThread.java:373) "Thread-4" prio=6 tid=0x17701400 nid=0x1248 runnable [0x17c3f000] java.lang.Thread.State: RUNNABLE at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method) at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(Unknown Source) at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(Unknown Source) at sun.nio.ch.WindowsSelectorImpl.doSelect(Unknown Source) at sun.nio.ch.SelectorImpl.lockAndDoSelect(Unknown Source) - locked <0x0417bd60> (a sun.nio.ch.Util$1) - locked <0x0417bd70> (a java.util.Collections$UnmodifiableSet) - locked <0x0417bce8> (a sun.nio.ch.WindowsSelectorImpl) at sun.nio.ch.SelectorImpl.select(Unknown Source) at net.sf.colossus.server.Server.handleOutsideChanges(Server.java:439) at net.sf.colossus.server.Server.waitOnSelector(Server.java:398) at net.sf.colossus.server.Server.run(Server.java:227) "TimerQueue" daemon prio=6 tid=0x176dd000 nid=0x1dd0 in Object.wait() [0x17a9f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x04165ee0> (a javax.swing.TimerQueue) at javax.swing.TimerQueue.run(Unknown Source) - locked <0x04165ee0> (a javax.swing.TimerQueue) at java.lang.Thread.run(Unknown Source) "AWT-EventQueue-0" prio=6 tid=0x1703ac00 nid=0x1a08 waiting for monitor entry [0x1759e000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02aa5580> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruit.<init>(PickRecruit.java:168) at net.sf.colossus.gui.PickRecruit.pickRecruit(PickRecruit.java:186) - locked <0x138642d8> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at net.sf.colossus.gui.ClientGUI.doPickRecruit(ClientGUI.java:2097) at net.sf.colossus.client.Client.doRecruit(Client.java:1763) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch" prio=6 tid=0x17022400 nid=0x1bb8 waiting for monitor entry [0x173bf000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x138642d8> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02aa5580> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x040480d0> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) "AWT-Windows" daemon prio=6 tid=0x17018800 nid=0x1694 runnable [0x1729f000] java.lang.Thread.State: RUNNABLE at sun.awt.windows.WToolkit.eventLoop(Native Method) at sun.awt.windows.WToolkit.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "AWT-Shutdown" prio=6 tid=0x17017800 nid=0x410 in Object.wait() [0x1724f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0402d038> (a java.lang.Object) at java.lang.Object.wait(Object.java:485) at sun.awt.AWTAutoShutdown.run(Unknown Source) - locked <0x0402d038> (a java.lang.Object) at java.lang.Thread.run(Unknown Source) "Java2D Disposer" daemon prio=10 tid=0x17011400 nid=0x1fd8 in Object.wait() [0x171ff000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0402d0c8> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x0402d0c8> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) at sun.java2d.Disposer.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "Low Memory Detector" daemon prio=6 tid=0x16c80400 nid=0x1a3c runnable [0x00000000] java.lang.Thread.State: RUNNABLE "CompilerThread0" daemon prio=10 tid=0x16c7a400 nid=0x11c4 waiting on condition [0x00000000] java.lang.Thread.State: RUNNABLE "Attach Listener" daemon prio=10 tid=0x16c78c00 nid=0x13ac runnable [0x00000000] java.lang.Thread.State: RUNNABLE "Signal Dispatcher" daemon prio=10 tid=0x16c77800 nid=0xdac waiting on condition [0x00000000] java.lang.Thread.State: RUNNABLE "Finalizer" daemon prio=8 tid=0x16c67800 nid=0x1860 in Object.wait() [0x16ddf000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x03ebd718> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x03ebd718> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source) "Reference Handler" daemon prio=10 tid=0x16c62c00 nid=0x1ae0 in Object.wait() [0x16d8f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x03ebd7a0> (a java.lang.ref.Reference$Lock) at java.lang.Object.wait(Object.java:485) at java.lang.ref.Reference$ReferenceHandler.run(Unknown Source) - locked <0x03ebd7a0> (a java.lang.ref.Reference$Lock) "main" prio=6 tid=0x003b6400 nid=0x1540 in Object.wait() [0x009df000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0417d9d0> (a java.lang.Object) at java.lang.Object.wait(Object.java:485) at net.sf.colossus.server.Server.waitUntilGameFinishes(Server.java:780) - locked <0x0417d9d0> (a java.lang.Object) at net.sf.colossus.server.GameServerSide.cleanupWhenGameOver(GameServerSide.java:401) at net.sf.colossus.server.GameServerSide.startNewGameAndWaitUntilOver(GameServerSide.java:454) at net.sf.colossus.appmain.Start.setupAndLoop(Start.java:663) at net.sf.colossus.appmain.Start.main(Start.java:874) "VM Thread" prio=10 tid=0x16c5fc00 nid=0x187c runnable "VM Periodic Task Thread" prio=10 tid=0x16c82c00 nid=0x1a24 waiting on condition JNI global references: 1447 Found one Java-level deadlock: ============================= "AWT-EventQueue-0": waiting to lock monitor 0x177d1804 (object 0x02aa5580, a java.lang.Object), which is held by "EventQueueMonitor-ComponentEvtDispatch" "EventQueueMonitor-ComponentEvtDispatch": waiting to lock monitor 0x176eb214 (object 0x138642d8, a java.lang.Class), which is held by "AWT-EventQueue-0" Java stack information for the threads listed above: =================================================== "AWT-EventQueue-0": at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02aa5580> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruit.<init>(PickRecruit.java:168) at net.sf.colossus.gui.PickRecruit.pickRecruit(PickRecruit.java:186) - locked <0x138642d8> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at net.sf.colossus.gui.ClientGUI.doPickRecruit(ClientGUI.java:2097) at net.sf.colossus.client.Client.doRecruit(Client.java:1763) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch": at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x138642d8> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02aa5580> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x040480d0> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) Found 1 deadlock. Heap def new generation total 960K, used 819K [0x02a90000, 0x02b90000, 0x03e40000) eden space 896K, 84% used [0x02a90000, 0x02b4e030, 0x02b70000) from space 64K, 93% used [0x02b80000, 0x02b8ef48, 0x02b90000) to space 64K, 0% used [0x02b70000, 0x02b70000, 0x02b80000) tenured generation total 10940K, used 9911K [0x03e40000, 0x048ef000, 0x12a90000) the space 10940K, 90% used [0x03e40000, 0x047eddf8, 0x047ede00, 0x048ef000) compacting perm gen total 14336K, used 14166K [0x12a90000, 0x13890000, 0x16a90000) the space 14336K, 98% used [0x12a90000, 0x13865a58, 0x13865c00, 0x13890000) No shared spaces configured. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 22:48 Message: Thanks for walking me through this and all. Just so you know I will not be able to respond to you again until Monday. I stretched it to fit my entire screen.... and I'm running a big screen. lol That was funny about finding an old laptop. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 22:46 Message: did you make window big enough ? Seems begin of it is missing again. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 22:43 Message: Yeah. As I almost expected: > Found 1 deadlock. Analyzing that and thinking how to go further will take some time. But I have to go sleeping now (22:40 here in Finland) and I have to get up early tomorrow. I try to look deeper into it tomorrow. Meanwhile, can you find a 5 year old laptop somewhere? ;-) (namely, any computer with one CPU or core only...) Chances are there it works fine. >btw, I couldn't copy and paste the java console because when the > program locked it wouldn't let me select the console either. Ah, right! And ah, you saw the deadlock reported also. Br, Clemens ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 22:40 Message: btw, I couldn't copy and paste the java console because when the program locked it wouldn't let me select the console either. and looks like your suspicions are right about that dead lock... shows below it found 1. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 22:38 Message: holy moly... its a lot... here goes: at net.sf.colossus.client.SocketClientThread.readAndParseUntilDone(SocketClientThread.java:419) at net.sf.colossus.client.SocketClientThread.run(SocketClientThread.java:373) "Client kevin" prio=6 tid=0x170d5400 nid=0x1eb4 runnable [0x17cdf000] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(Unknown Source) at sun.nio.cs.StreamDecoder.readBytes(Unknown Source) at sun.nio.cs.StreamDecoder.implRead(Unknown Source) at sun.nio.cs.StreamDecoder.read(Unknown Source) - locked <0x041a4f00> (a java.io.InputStreamReader) at java.io.InputStreamReader.read(Unknown Source) at java.io.BufferedReader.fill(Unknown Source) at java.io.BufferedReader.readLine(Unknown Source) - locked <0x041a4f00> (a java.io.InputStreamReader) at java.io.BufferedReader.readLine(Unknown Source) at net.sf.colossus.client.SocketClientThread.waitForLine(SocketClientThread.java:504) at net.sf.colossus.client.SocketClientThread.readAndParseUntilDone(SocketClientThread.java:419) at net.sf.colossus.client.SocketClientThread.run(SocketClientThread.java:373) "Thread-4" prio=6 tid=0x1716a800 nid=0x1428 runnable [0x17c3f000] java.lang.Thread.State: RUNNABLE at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method) at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(Unknown Source) at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(Unknown Source) at sun.nio.ch.WindowsSelectorImpl.doSelect(Unknown Source) at sun.nio.ch.SelectorImpl.lockAndDoSelect(Unknown Source) - locked <0x0418f468> (a sun.nio.ch.Util$1) - locked <0x0418f478> (a java.util.Collections$UnmodifiableSet) - locked <0x0418f3f0> (a sun.nio.ch.WindowsSelectorImpl) at sun.nio.ch.SelectorImpl.select(Unknown Source) at net.sf.colossus.server.Server.handleOutsideChanges(Server.java:439) at net.sf.colossus.server.Server.waitOnSelector(Server.java:398) at net.sf.colossus.server.Server.run(Server.java:227) "TimerQueue" daemon prio=6 tid=0x176e6400 nid=0x1f8c in Object.wait() [0x17a9f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x04168e60> (a javax.swing.TimerQueue) at javax.swing.TimerQueue.run(Unknown Source) - locked <0x04168e60> (a javax.swing.TimerQueue) at java.lang.Thread.run(Unknown Source) "AWT-EventQueue-0" prio=6 tid=0x17042800 nid=0x1eac waiting for monitor entry [0x1759e000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruit.<init>(PickRecruit.java:168) at net.sf.colossus.gui.PickRecruit.pickRecruit(PickRecruit.java:186) - locked <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at net.sf.colossus.gui.ClientGUI.doPickRecruit(ClientGUI.java:2097) at net.sf.colossus.client.Client.doRecruit(Client.java:1763) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch" prio=6 tid=0x1701c000 nid=0x193c waiting for monitor entry [0x173bf000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x04048108> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) "AWT-Windows" daemon prio=6 tid=0x16ff8400 nid=0x1d74 runnable [0x1729f000] java.lang.Thread.State: RUNNABLE at sun.awt.windows.WToolkit.eventLoop(Native Method) at sun.awt.windows.WToolkit.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "AWT-Shutdown" prio=6 tid=0x17001c00 nid=0x1844 in Object.wait() [0x1724f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0402cf70> (a java.lang.Object) at java.lang.Object.wait(Object.java:485) at sun.awt.AWTAutoShutdown.run(Unknown Source) - locked <0x0402cf70> (a java.lang.Object) at java.lang.Thread.run(Unknown Source) "Java2D Disposer" daemon prio=10 tid=0x17018800 nid=0x1cbc in Object.wait() [0x171ff000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0402d000> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x0402d000> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) at sun.java2d.Disposer.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "Low Memory Detector" daemon prio=6 tid=0x16c80400 nid=0x1cac runnable [0x00000000] java.lang.Thread.State: RUNNABLE "CompilerThread0" daemon prio=10 tid=0x16c7a400 nid=0x450 waiting on condition [0x00000000] java.lang.Thread.State: RUNNABLE "Attach Listener" daemon prio=10 tid=0x16c78c00 nid=0x1d44 runnable [0x00000000] java.lang.Thread.State: RUNNABLE "Signal Dispatcher" daemon prio=10 tid=0x16c77800 nid=0x1b30 waiting on condition [0x00000000] java.lang.Thread.State: RUNNABLE "Finalizer" daemon prio=8 tid=0x16c67800 nid=0x19cc in Object.wait() [0x16ddf000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x03ebd718> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x03ebd718> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source) "Reference Handler" daemon prio=10 tid=0x16c62c00 nid=0x1eb0 in Object.wait() [0x16d8f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x03ebd7a0> (a java.lang.ref.Reference$Lock) at java.lang.Object.wait(Object.java:485) at java.lang.ref.Reference$ReferenceHandler.run(Unknown Source) - locked <0x03ebd7a0> (a java.lang.ref.Reference$Lock) "main" prio=6 tid=0x003b6400 nid=0x1e2c in Object.wait() [0x009df000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x041915c8> (a java.lang.Object) at java.lang.Object.wait(Object.java:485) at net.sf.colossus.server.Server.waitUntilGameFinishes(Server.java:780) - locked <0x041915c8> (a java.lang.Object) at net.sf.colossus.server.GameServerSide.cleanupWhenGameOver(GameServerSide.java:401) at net.sf.colossus.server.GameServerSide.startNewGameAndWaitUntilOver(GameServerSide.java:454) at net.sf.colossus.appmain.Start.setupAndLoop(Start.java:663) at net.sf.colossus.appmain.Start.main(Start.java:874) "VM Thread" prio=10 tid=0x16c5fc00 nid=0x10fc runnable "VM Periodic Task Thread" prio=10 tid=0x16c82c00 nid=0x1a00 waiting on condition JNI global references: 1473 Found one Java-level deadlock: ============================= "AWT-EventQueue-0": waiting to lock monitor 0x177e5b1c (object 0x02ba1288, a java.lang.Object), which is held by "EventQueueMonitor-ComponentEvtDispatch" "EventQueueMonitor-ComponentEvtDispatch": waiting to lock monitor 0x176e8c54 (object 0x13872538, a java.lang.Class), which is held by "AWT-EventQueue-0" Java stack information for the threads listed above: =================================================== "AWT-EventQueue-0": at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruit.<init>(PickRecruit.java:168) at net.sf.colossus.gui.PickRecruit.pickRecruit(PickRecruit.java:186) - locked <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at net.sf.colossus.gui.ClientGUI.doPickRecruit(ClientGUI.java:2097) at net.sf.colossus.client.Client.doRecruit(Client.java:1763) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch": at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x04048108> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) Found 1 deadlock. Heap def new generation total 1216K, used 704K [0x02a90000, 0x02be0000, 0x03e40000) eden space 1088K, 57% used [0x02a90000, 0x02b2b388, 0x02ba0000) from space 128K, 65% used [0x02ba0000, 0x02bb4f20, 0x02bc0000) to space 128K, 0% used [0x02bc0000, 0x02bc0000, 0x02be0000) tenured generation total 15784K, used 9845K [0x03e40000, 0x04daa000, 0x12a90000) the space 15784K, 62% used [0x03e40000, 0x047dd428, 0x047dd600, 0x04daa000) compacting perm gen total 14336K, used 14223K [0x12a90000, 0x13890000, 0x16a90000) the space 14336K, 99% used [0x12a90000, 0x13873d10, 0x13873e00, 0x13890000) No shared spaces configured. Terminate batch job (Y/N)? ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 22:27 Message: NOTE, from the Java console log you should be able to copy paste! (mark with mouse and Ctrl-C or right click -> copy.) Only from that Colossus own "About" window you can't copy paste. Not sure whether that affinity helps; Colossus is "multithreaded", so if there is more than one core existing it might still use a 2nd. (affinity to me means merely, it would _preferrably_ run on that core). My suspicion is it is some kind of deadlock, caused by the way how those dialogs are called: "synchronous" , and in the "Event Dispatcher thread". That it happens randomly is much more "reasonable" than that some dialogs lock and some not. Such random misbehaviors we had earlier. They were fixed, but merely "somehow" and "when it happened", not systematically "rewrite everything to be thread-safe by design". Can you try the following: Run it from commandline. If possible, make the commandline window as big as possible, like window size (field 3 +4) width 150 height 50, screen buffer size (1+2 fields) 150 and 3000.) (to do so, on the cmdline window, click the smal C:\ in top LEFT corner, Properties). When it looks, make the cmdline box the active window and press Ctrl-Break (bottom left and top right keys of the keyboard together ;-)) Lot of glibberish would be printed to screen. Same top left icon, Edit => Select all ; copy (ctrl-c or from same menu copy). Send me what's there (or post it here). That's the "which thread is doing what at the moment" summary. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 22:10 Message: yes I was able to limit the program running on one processer. Or at least I told it to set its affinity to Core 0 from the processes. It still locked up. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 22:08 Message: I did some further testing... it will actually lock up randomly still. Doesn't matter if I can recruit one or two. :/ ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 22:06 Message: Ran java -version from command window: java version "1.6.0_17" Java(TM) SE Runtime Environment (build 1.6.0_17-b04) Java HotSpot(TM) Client VM (build 14.3-b01, mixed mode) I figured out how to get into the Java Options. Logging was turned off. So now I have a Java Console window when the program opens. So I tried a game, and it got stuck after 2nd time I tried to add a recruit. Btw, I notice it seems to do it when I can choose more than one recruit. Here is the last few lines of the log: (man... this is a lot of typing and I'm not sure it is really showing any errors. It just shows the last step before it "froze". INFO: Legion Gr09 (Lobster) in Tower hex 600 moves to Jungle hex 135 entering on RIGHT Feb 10, 2011 2:00:47 PM net.sf.colossus.server.GameServerSide$GamePhaseAdvancer advancePhaseInternal INFO:Phase advances to Muster Feb 10, 2011 2:00:49 PM net.sf.colossus.server.LegionServerSide addCreature INFO: Added Ceentaur -now there are 20 left. Feb 10, 2011 2:00:49 PM net.sf.colossus.server.GameServerSide doRecruit INFO: Legion Gr05 in Woods hex 39 recruits Centaur with 1 Centaur ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 21:37 Message: > It is a quad core system. hm. That might be part of the reason. I have some wild guess what it could be... Can you tell me exact java version? Help => About tells it. It tells also Log directory, there would be a file Colossus0.log. (The *0,log is always the newest; if new starts, it renames 1 to 2, 0 to 1nd creates new 0.log file). Sorry you have to type the stuff from Help => About, no copy paste. Or make a screenshot if you know how. If you wish you can also send it to me via mail (my SF username, i.e. the "cleka", then the magic a-like character, then users.sourceforge.net . Can you tune your system to use one CPU only? ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 21:15 Message: We were at a party and someone brought the board game Titan over. It confused the heck out of us (never even made it around once) but it seemed interesting. I did a search and found you making an app for it. So I thought I'd try it out. I am definitely brand new to Titan, so I expect to actually be the only player on here that gets defeated by your "dumb" AI. It is a quad core system. No I can not close the the dialog box with the small "X". In fact I can't do anything except shut it down. I selected Auto Pick Recruiters... and now I think it hangs up on actual recruiting now. It appears random too. Sometimes I can recruit a whole stack (7) without "locking up" and other times it will do it after the first recruit. (btw... sometimes I can't move a stack. That just a rule I'm not aware of?) ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:50 Message: Do you happen to know, do you have more than one CPU or CPU core? ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:43 Message: BTW, are you "well familiar with Titan, just new to use Colossus, or need to learn also "how game works, rules, strategy, etc." first? Once you are familar with the game and the usage, you could even try the public game server (by clicking the "WebClient" button), where you could find other "real people" to play against. (in contrast to the AI ("Artificial Intelligence") i.e. Robot players... However to notice is, people are usually online in afternoon/evening for US time. At other time you might log in there and be alone 30 or 60 mins before any other drop by. However, that's anyway more recommded only a) it does not hang for you any more and b) once you are "fluent" in playing. It's annoying for others when you need, let's say, 1.5 minutes for each individual move, split, recruit etc.... => Practicing to get faster better with AI players.They are all in all rather dump, but for first few weeks ok. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:35 Message: okay (or not okay), but that's something. In worst case I have to make you a special version which prints something to screen for every line of code before and around where it calls that "Pick Recruiter" dialog :)) That's what I meant, you might run into a "block" somewhat later with some other dialog. But the recruit dialog itself worked?? Strange; they are very similarly programmed. Some more "smalltalk" :o) > Made me green in fact. > I guess I can always play green. :p :) You can try: Window => Preferences => "Color" tab. Click on "Select" and choose another color. Next time you START a game it would choose that color for you automatically. (all those "Autoplay" options do certain things for you. So in fact you could enable "Auto Pick Recruiter", since that one is rather unimportant, as long as you can choose an actual Recruit. (so we can circumvent THIS cliff for now). But there might be other dialogs later to block you as well. And/or, in fact that's an interesting thing to try, whether that color chooser dialog would work??? If not, can you close it with the "x" shaped icon in upper right corner? (the initial color pick dialog CAN'T be closed that way, or rather, if one does, it reappears immediately.) So, sure, I'd like to continue troubleshoot this. Let's try that above for now, have to bring kids to bed now. -Cle. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 20:17 Message: So I've been running through this... moving, recruiting, etc... then I came to a point where it won't let me pick again. :/ Says: kevinnew: Pick Recruiter in Brush hex17 There is more than one way you can recruit this. Current content of legion Gr05: There is a Titan, Cyclops, Gargoyle, Gargoyle, Centaur, Centaur Pick the creature type you want to reveal: There is a Cyclops, Gargoyle I can't pick anything. Tried clicking on it numerous times. Nothing will select and it is stuck on this dialog box. Not sure why this happening... but thank you for sticking it out with me. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 20:12 Message: You are correct. I typed the name in, it found it and ran fine. Well.. I can play now. yay! ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 20:08 Message: K so, I opened the default kevin.cfg and added those lines to it: Auto\ pick\ markers=true Auto\ pick\ color=true Favorite\ colors=Green And it worked. The game started. Made me green in fact. So far so good to, I was able to split a stack. Move the unit. Recruit. And watched the computer take it's move as well. So not sure why it wasn't working but it is now. Want to continue to troubleshoot? I guess I can always play green. :p ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:06 Message: No, you cannot "pick" the name kevinnew - it does not offer all "names that may exist". You choose the name on "Players" tab, On left side, Choose HUman, on right side type the name. 2nd Line, choose e.g. "SimpleAI", it fills right side with <byColor> or something, thats ok, Type there in first line the name kevinnew, and when game starts, it goes looking for a file Colossus-kewvinnew.cfg [and if it wouldn't exist, create it, sooner or later, after GUI / preferences changes]. Now we pre-create that file, so that it skips the color picking dialog because it would find a value to say "auto pick" from the file. -Cle. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 19:59 Message: btw, I did try and run the Colossus.jnlp stand alone and brings up the welcome screen, I hit ok, and the Game setup screen appears. I still can't choose newkevin and when I run it, once again I can not pick any of the colors. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 19:57 Message: I'll start from the beginning: • I open a folder I extracted all the files to from the .zip • I double click on run.bat A cmd window pops up with: C:\Documents and Settings\kevin\Desktop\collossus>cd "c:\Documents and Settings\kevin\Desktop\collossus\" C:\Documents and Settings\kevin\Desktop\collossus>java -Djava.util.logging.config.file=logging.properties -XMx256M -jar Colossus.jar Then what looks like the main program appears. It is the game setup screen. I make player one a human player and choose Kevin as the type. I make the 2nd player a SimpleAI and choose <By color> for the type. I leave everything else as is. (btw the top says Running Colossus Version 0.12.0-beta1 (revision 4970) on etc...) • I pick New game. The game appears to start, I can see the grid in the background with all the hills, deserts, etc. A small box with Pick a Color appears. I can move this box around. But I can not pick a color. I've tried clicking on every single one. I've tried pressing G, e, o, etc. I've tried Ctrl/Alt combinations, nothing. I can not close it either. I have to force it to shutdown. In Task Manager it shows that it is still running... so I don't THINK it is locked up. I do NOT see any other windows anywhere that I might need to click. I've even tried Alt+Tab and Ctrl+Tab to check. • I went ahead and did a search for the .colossus folder. I found it. It has 5 files in it. Colossus-netclient.cfg Colossus-red.cfg Colossus-server.cfg Colossus-kevin.cfg Colossus-kevin1.cfg • I went ahead and created a new .cfg file. I named it Colossus-kevinnew.cfg. I added these lines to it: Auto\ pick\ markers=true Auto\ pick\ color=true Favorite\ colors=Green Interestingly here, when I started the program, I could not choose kevinnew. I could only still see kevin. I searched my entire computer to see if the .cfg files might also be somewhere else but I could only find them under \\documents and settings\kevin\desktop\collossus • Ok so I tried your command prompt idea. I even ran the command from within the path and I kept getting this error... Unable to access jarfile Colossus.jar I can't imagine it being a graphical error... the program still seem... [truncated message content] |
|
From: SourceForge.net <no...@so...> - 2011-02-14 13:49:57
|
Bugs item #3177305, was opened at 2011-02-10 12:40 Message generated for change (Comment added) made by nobody You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101939&aid=3177305&group_id=1939 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: GUI Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Nobody/Anonymous (nobody) Assigned to: Clemens Katzer (cleka) Summary: Can not pick color to start game Initial Comment: Recently tried to play this game. I downloaded both the java version and the zip file. Both seem to start up just fine. The board will appear and another small window with choose a color pops up. I can not click on any color. I've tried pressing the letters that correspond to the colors. I've tried alt and ctrl combinations. Nothing works. I have to force the program to quit. Ideas? ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-14 13:49 Message: So this morning, I gave it a try and it actually seemed to be working for quite awhile. I even was able to engage in a couple battles. (I died promptly) After several minutes though it did lock up again when I had to choose between two creatures. At least I made it a lot further! ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 21:05 Message: No problem, see you Monday. You should get some sleep. 2300 is way past my bedtime. lol Btw, I am running multiple monitors as well, don't know if that would cause an issue. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:58 Message: > That was funny about finding an old laptop. Hey, that was a practical piece of advice! :>) (if your toaster has big enough screen and keyboard/mouse perhpaps even that will do ... ;~) ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:56 Message: > not before monday OK, fits me fine, then I dont need to "stress" myself. Very nice that you mention it beforehand! And here we see it: "AWT-EventQueue-0" prio=6 tid=0x17042800 nid=0x1eac waiting for monitor entry [0x1759e000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruit.<init>(PickRecruit.java:168) at net.sf.colossus.gui.PickRecruit.pickRecruit(PickRecruit.java:186) - locked <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at net.sf.colossus.gui.ClientGUI.doPickRecruit(ClientGUI.java:2097) at net.sf.colossus.client.Client.doRecruit(Client.java:1763) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch" prio=6 tid=0x1701c000 nid=0x193c waiting for monitor entry [0x173bf000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x04048108> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) STRANGE: Two EDT / GUI graphics related threads, both related to the PickRecruit!?!? Have to crosscheck whether those two threads also both exist in when I run it. Thanks for the provided infos, let's contineue monday or something; but then, rather evenings (time is 5 hours ago until now). Because, I _am_ committed to fix such issues, but its hard to fix if I cant reproduce them... BR & Have a nice weekend! -Clemens ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 20:52 Message: Ok, I tried it again... made it even bigger: Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C:\Documents and Settings\thr85850>"C:\Documents and Settings\thr85850\Desktop\collossus\run.bat" C:\Documents and Settings\thr85850>cd "C:\Documents and Settings\thr85850\Desktop\collossus\" C:\Documents and Settings\thr85850\Desktop\collossus>java -Djava.util.logging.config.file=logging.properties -Xmx256M -jar Colossus.jar 2011-02-10 14:50:27 Full thread dump Java HotSpot(TM) Client VM (14.3-b01 mixed mode): "Client Gold" prio=6 tid=0x177d9800 nid=0x56c runnable [0x17d2f000] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(Unknown Source) at sun.nio.cs.StreamDecoder.readBytes(Unknown Source) at sun.nio.cs.StreamDecoder.implRead(Unknown Source) at sun.nio.cs.StreamDecoder.read(Unknown Source) - locked <0x041a1880> (a java.io.InputStreamReader) at java.io.InputStreamReader.read(Unknown Source) at java.io.BufferedReader.fill(Unknown Source) at java.io.BufferedReader.readLine(Unknown Source) - locked <0x041a1880> (a java.io.InputStreamReader) at java.io.BufferedReader.readLine(Unknown Source) at net.sf.colossus.client.SocketClientThread.waitForLine(SocketClientThread.java:504) at net.sf.colossus.client.SocketClientThread.readAndParseUntilDone(SocketClientThread.java:419) at net.sf.colossus.client.SocketClientThread.run(SocketClientThread.java:373) "Client kevin" prio=6 tid=0x177e7400 nid=0x1634 runnable [0x17cdf000] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(Unknown Source) at sun.nio.cs.StreamDecoder.readBytes(Unknown Source) at sun.nio.cs.StreamDecoder.implRead(Unknown Source) at sun.nio.cs.StreamDecoder.read(Unknown Source) - locked <0x04189358> (a java.io.InputStreamReader) at java.io.InputStreamReader.read(Unknown Source) at java.io.BufferedReader.fill(Unknown Source) at java.io.BufferedReader.readLine(Unknown Source) - locked <0x04189358> (a java.io.InputStreamReader) at java.io.BufferedReader.readLine(Unknown Source) at net.sf.colossus.client.SocketClientThread.waitForLine(SocketClientThread.java:504) at net.sf.colossus.client.SocketClientThread.readAndParseUntilDone(SocketClientThread.java:419) at net.sf.colossus.client.SocketClientThread.run(SocketClientThread.java:373) "Thread-4" prio=6 tid=0x17701400 nid=0x1248 runnable [0x17c3f000] java.lang.Thread.State: RUNNABLE at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method) at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(Unknown Source) at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(Unknown Source) at sun.nio.ch.WindowsSelectorImpl.doSelect(Unknown Source) at sun.nio.ch.SelectorImpl.lockAndDoSelect(Unknown Source) - locked <0x0417bd60> (a sun.nio.ch.Util$1) - locked <0x0417bd70> (a java.util.Collections$UnmodifiableSet) - locked <0x0417bce8> (a sun.nio.ch.WindowsSelectorImpl) at sun.nio.ch.SelectorImpl.select(Unknown Source) at net.sf.colossus.server.Server.handleOutsideChanges(Server.java:439) at net.sf.colossus.server.Server.waitOnSelector(Server.java:398) at net.sf.colossus.server.Server.run(Server.java:227) "TimerQueue" daemon prio=6 tid=0x176dd000 nid=0x1dd0 in Object.wait() [0x17a9f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x04165ee0> (a javax.swing.TimerQueue) at javax.swing.TimerQueue.run(Unknown Source) - locked <0x04165ee0> (a javax.swing.TimerQueue) at java.lang.Thread.run(Unknown Source) "AWT-EventQueue-0" prio=6 tid=0x1703ac00 nid=0x1a08 waiting for monitor entry [0x1759e000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02aa5580> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruit.<init>(PickRecruit.java:168) at net.sf.colossus.gui.PickRecruit.pickRecruit(PickRecruit.java:186) - locked <0x138642d8> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at net.sf.colossus.gui.ClientGUI.doPickRecruit(ClientGUI.java:2097) at net.sf.colossus.client.Client.doRecruit(Client.java:1763) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch" prio=6 tid=0x17022400 nid=0x1bb8 waiting for monitor entry [0x173bf000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x138642d8> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02aa5580> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x040480d0> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) "AWT-Windows" daemon prio=6 tid=0x17018800 nid=0x1694 runnable [0x1729f000] java.lang.Thread.State: RUNNABLE at sun.awt.windows.WToolkit.eventLoop(Native Method) at sun.awt.windows.WToolkit.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "AWT-Shutdown" prio=6 tid=0x17017800 nid=0x410 in Object.wait() [0x1724f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0402d038> (a java.lang.Object) at java.lang.Object.wait(Object.java:485) at sun.awt.AWTAutoShutdown.run(Unknown Source) - locked <0x0402d038> (a java.lang.Object) at java.lang.Thread.run(Unknown Source) "Java2D Disposer" daemon prio=10 tid=0x17011400 nid=0x1fd8 in Object.wait() [0x171ff000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0402d0c8> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x0402d0c8> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) at sun.java2d.Disposer.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "Low Memory Detector" daemon prio=6 tid=0x16c80400 nid=0x1a3c runnable [0x00000000] java.lang.Thread.State: RUNNABLE "CompilerThread0" daemon prio=10 tid=0x16c7a400 nid=0x11c4 waiting on condition [0x00000000] java.lang.Thread.State: RUNNABLE "Attach Listener" daemon prio=10 tid=0x16c78c00 nid=0x13ac runnable [0x00000000] java.lang.Thread.State: RUNNABLE "Signal Dispatcher" daemon prio=10 tid=0x16c77800 nid=0xdac waiting on condition [0x00000000] java.lang.Thread.State: RUNNABLE "Finalizer" daemon prio=8 tid=0x16c67800 nid=0x1860 in Object.wait() [0x16ddf000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x03ebd718> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x03ebd718> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source) "Reference Handler" daemon prio=10 tid=0x16c62c00 nid=0x1ae0 in Object.wait() [0x16d8f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x03ebd7a0> (a java.lang.ref.Reference$Lock) at java.lang.Object.wait(Object.java:485) at java.lang.ref.Reference$ReferenceHandler.run(Unknown Source) - locked <0x03ebd7a0> (a java.lang.ref.Reference$Lock) "main" prio=6 tid=0x003b6400 nid=0x1540 in Object.wait() [0x009df000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0417d9d0> (a java.lang.Object) at java.lang.Object.wait(Object.java:485) at net.sf.colossus.server.Server.waitUntilGameFinishes(Server.java:780) - locked <0x0417d9d0> (a java.lang.Object) at net.sf.colossus.server.GameServerSide.cleanupWhenGameOver(GameServerSide.java:401) at net.sf.colossus.server.GameServerSide.startNewGameAndWaitUntilOver(GameServerSide.java:454) at net.sf.colossus.appmain.Start.setupAndLoop(Start.java:663) at net.sf.colossus.appmain.Start.main(Start.java:874) "VM Thread" prio=10 tid=0x16c5fc00 nid=0x187c runnable "VM Periodic Task Thread" prio=10 tid=0x16c82c00 nid=0x1a24 waiting on condition JNI global references: 1447 Found one Java-level deadlock: ============================= "AWT-EventQueue-0": waiting to lock monitor 0x177d1804 (object 0x02aa5580, a java.lang.Object), which is held by "EventQueueMonitor-ComponentEvtDispatch" "EventQueueMonitor-ComponentEvtDispatch": waiting to lock monitor 0x176eb214 (object 0x138642d8, a java.lang.Class), which is held by "AWT-EventQueue-0" Java stack information for the threads listed above: =================================================== "AWT-EventQueue-0": at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02aa5580> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruit.<init>(PickRecruit.java:168) at net.sf.colossus.gui.PickRecruit.pickRecruit(PickRecruit.java:186) - locked <0x138642d8> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at net.sf.colossus.gui.ClientGUI.doPickRecruit(ClientGUI.java:2097) at net.sf.colossus.client.Client.doRecruit(Client.java:1763) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch": at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x138642d8> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02aa5580> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x040480d0> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) Found 1 deadlock. Heap def new generation total 960K, used 819K [0x02a90000, 0x02b90000, 0x03e40000) eden space 896K, 84% used [0x02a90000, 0x02b4e030, 0x02b70000) from space 64K, 93% used [0x02b80000, 0x02b8ef48, 0x02b90000) to space 64K, 0% used [0x02b70000, 0x02b70000, 0x02b80000) tenured generation total 10940K, used 9911K [0x03e40000, 0x048ef000, 0x12a90000) the space 10940K, 90% used [0x03e40000, 0x047eddf8, 0x047ede00, 0x048ef000) compacting perm gen total 14336K, used 14166K [0x12a90000, 0x13890000, 0x16a90000) the space 14336K, 98% used [0x12a90000, 0x13865a58, 0x13865c00, 0x13890000) No shared spaces configured. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 20:48 Message: Thanks for walking me through this and all. Just so you know I will not be able to respond to you again until Monday. I stretched it to fit my entire screen.... and I'm running a big screen. lol That was funny about finding an old laptop. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:46 Message: did you make window big enough ? Seems begin of it is missing again. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:43 Message: Yeah. As I almost expected: > Found 1 deadlock. Analyzing that and thinking how to go further will take some time. But I have to go sleeping now (22:40 here in Finland) and I have to get up early tomorrow. I try to look deeper into it tomorrow. Meanwhile, can you find a 5 year old laptop somewhere? ;-) (namely, any computer with one CPU or core only...) Chances are there it works fine. >btw, I couldn't copy and paste the java console because when the > program locked it wouldn't let me select the console either. Ah, right! And ah, you saw the deadlock reported also. Br, Clemens ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 20:40 Message: btw, I couldn't copy and paste the java console because when the program locked it wouldn't let me select the console either. and looks like your suspicions are right about that dead lock... shows below it found 1. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 20:38 Message: holy moly... its a lot... here goes: at net.sf.colossus.client.SocketClientThread.readAndParseUntilDone(SocketClientThread.java:419) at net.sf.colossus.client.SocketClientThread.run(SocketClientThread.java:373) "Client kevin" prio=6 tid=0x170d5400 nid=0x1eb4 runnable [0x17cdf000] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(Unknown Source) at sun.nio.cs.StreamDecoder.readBytes(Unknown Source) at sun.nio.cs.StreamDecoder.implRead(Unknown Source) at sun.nio.cs.StreamDecoder.read(Unknown Source) - locked <0x041a4f00> (a java.io.InputStreamReader) at java.io.InputStreamReader.read(Unknown Source) at java.io.BufferedReader.fill(Unknown Source) at java.io.BufferedReader.readLine(Unknown Source) - locked <0x041a4f00> (a java.io.InputStreamReader) at java.io.BufferedReader.readLine(Unknown Source) at net.sf.colossus.client.SocketClientThread.waitForLine(SocketClientThread.java:504) at net.sf.colossus.client.SocketClientThread.readAndParseUntilDone(SocketClientThread.java:419) at net.sf.colossus.client.SocketClientThread.run(SocketClientThread.java:373) "Thread-4" prio=6 tid=0x1716a800 nid=0x1428 runnable [0x17c3f000] java.lang.Thread.State: RUNNABLE at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method) at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(Unknown Source) at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(Unknown Source) at sun.nio.ch.WindowsSelectorImpl.doSelect(Unknown Source) at sun.nio.ch.SelectorImpl.lockAndDoSelect(Unknown Source) - locked <0x0418f468> (a sun.nio.ch.Util$1) - locked <0x0418f478> (a java.util.Collections$UnmodifiableSet) - locked <0x0418f3f0> (a sun.nio.ch.WindowsSelectorImpl) at sun.nio.ch.SelectorImpl.select(Unknown Source) at net.sf.colossus.server.Server.handleOutsideChanges(Server.java:439) at net.sf.colossus.server.Server.waitOnSelector(Server.java:398) at net.sf.colossus.server.Server.run(Server.java:227) "TimerQueue" daemon prio=6 tid=0x176e6400 nid=0x1f8c in Object.wait() [0x17a9f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x04168e60> (a javax.swing.TimerQueue) at javax.swing.TimerQueue.run(Unknown Source) - locked <0x04168e60> (a javax.swing.TimerQueue) at java.lang.Thread.run(Unknown Source) "AWT-EventQueue-0" prio=6 tid=0x17042800 nid=0x1eac waiting for monitor entry [0x1759e000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruit.<init>(PickRecruit.java:168) at net.sf.colossus.gui.PickRecruit.pickRecruit(PickRecruit.java:186) - locked <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at net.sf.colossus.gui.ClientGUI.doPickRecruit(ClientGUI.java:2097) at net.sf.colossus.client.Client.doRecruit(Client.java:1763) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch" prio=6 tid=0x1701c000 nid=0x193c waiting for monitor entry [0x173bf000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x04048108> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) "AWT-Windows" daemon prio=6 tid=0x16ff8400 nid=0x1d74 runnable [0x1729f000] java.lang.Thread.State: RUNNABLE at sun.awt.windows.WToolkit.eventLoop(Native Method) at sun.awt.windows.WToolkit.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "AWT-Shutdown" prio=6 tid=0x17001c00 nid=0x1844 in Object.wait() [0x1724f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0402cf70> (a java.lang.Object) at java.lang.Object.wait(Object.java:485) at sun.awt.AWTAutoShutdown.run(Unknown Source) - locked <0x0402cf70> (a java.lang.Object) at java.lang.Thread.run(Unknown Source) "Java2D Disposer" daemon prio=10 tid=0x17018800 nid=0x1cbc in Object.wait() [0x171ff000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0402d000> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x0402d000> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) at sun.java2d.Disposer.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "Low Memory Detector" daemon prio=6 tid=0x16c80400 nid=0x1cac runnable [0x00000000] java.lang.Thread.State: RUNNABLE "CompilerThread0" daemon prio=10 tid=0x16c7a400 nid=0x450 waiting on condition [0x00000000] java.lang.Thread.State: RUNNABLE "Attach Listener" daemon prio=10 tid=0x16c78c00 nid=0x1d44 runnable [0x00000000] java.lang.Thread.State: RUNNABLE "Signal Dispatcher" daemon prio=10 tid=0x16c77800 nid=0x1b30 waiting on condition [0x00000000] java.lang.Thread.State: RUNNABLE "Finalizer" daemon prio=8 tid=0x16c67800 nid=0x19cc in Object.wait() [0x16ddf000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x03ebd718> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x03ebd718> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source) "Reference Handler" daemon prio=10 tid=0x16c62c00 nid=0x1eb0 in Object.wait() [0x16d8f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x03ebd7a0> (a java.lang.ref.Reference$Lock) at java.lang.Object.wait(Object.java:485) at java.lang.ref.Reference$ReferenceHandler.run(Unknown Source) - locked <0x03ebd7a0> (a java.lang.ref.Reference$Lock) "main" prio=6 tid=0x003b6400 nid=0x1e2c in Object.wait() [0x009df000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x041915c8> (a java.lang.Object) at java.lang.Object.wait(Object.java:485) at net.sf.colossus.server.Server.waitUntilGameFinishes(Server.java:780) - locked <0x041915c8> (a java.lang.Object) at net.sf.colossus.server.GameServerSide.cleanupWhenGameOver(GameServerSide.java:401) at net.sf.colossus.server.GameServerSide.startNewGameAndWaitUntilOver(GameServerSide.java:454) at net.sf.colossus.appmain.Start.setupAndLoop(Start.java:663) at net.sf.colossus.appmain.Start.main(Start.java:874) "VM Thread" prio=10 tid=0x16c5fc00 nid=0x10fc runnable "VM Periodic Task Thread" prio=10 tid=0x16c82c00 nid=0x1a00 waiting on condition JNI global references: 1473 Found one Java-level deadlock: ============================= "AWT-EventQueue-0": waiting to lock monitor 0x177e5b1c (object 0x02ba1288, a java.lang.Object), which is held by "EventQueueMonitor-ComponentEvtDispatch" "EventQueueMonitor-ComponentEvtDispatch": waiting to lock monitor 0x176e8c54 (object 0x13872538, a java.lang.Class), which is held by "AWT-EventQueue-0" Java stack information for the threads listed above: =================================================== "AWT-EventQueue-0": at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruit.<init>(PickRecruit.java:168) at net.sf.colossus.gui.PickRecruit.pickRecruit(PickRecruit.java:186) - locked <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at net.sf.colossus.gui.ClientGUI.doPickRecruit(ClientGUI.java:2097) at net.sf.colossus.client.Client.doRecruit(Client.java:1763) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch": at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x04048108> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) Found 1 deadlock. Heap def new generation total 1216K, used 704K [0x02a90000, 0x02be0000, 0x03e40000) eden space 1088K, 57% used [0x02a90000, 0x02b2b388, 0x02ba0000) from space 128K, 65% used [0x02ba0000, 0x02bb4f20, 0x02bc0000) to space 128K, 0% used [0x02bc0000, 0x02bc0000, 0x02be0000) tenured generation total 15784K, used 9845K [0x03e40000, 0x04daa000, 0x12a90000) the space 15784K, 62% used [0x03e40000, 0x047dd428, 0x047dd600, 0x04daa000) compacting perm gen total 14336K, used 14223K [0x12a90000, 0x13890000, 0x16a90000) the space 14336K, 99% used [0x12a90000, 0x13873d10, 0x13873e00, 0x13890000) No shared spaces configured. Terminate batch job (Y/N)? ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:27 Message: NOTE, from the Java console log you should be able to copy paste! (mark with mouse and Ctrl-C or right click -> copy.) Only from that Colossus own "About" window you can't copy paste. Not sure whether that affinity helps; Colossus is "multithreaded", so if there is more than one core existing it might still use a 2nd. (affinity to me means merely, it would _preferrably_ run on that core). My suspicion is it is some kind of deadlock, caused by the way how those dialogs are called: "synchronous" , and in the "Event Dispatcher thread". That it happens randomly is much more "reasonable" than that some dialogs lock and some not. Such random misbehaviors we had earlier. They were fixed, but merely "somehow" and "when it happened", not systematically "rewrite everything to be thread-safe by design". Can you try the following: Run it from commandline. If possible, make the commandline window as big as possible, like window size (field 3 +4) width 150 height 50, screen buffer size (1+2 fields) 150 and 3000.) (to do so, on the cmdline window, click the smal C:\ in top LEFT corner, Properties). When it looks, make the cmdline box the active window and press Ctrl-Break (bottom left and top right keys of the keyboard together ;-)) Lot of glibberish would be printed to screen. Same top left icon, Edit => Select all ; copy (ctrl-c or from same menu copy). Send me what's there (or post it here). That's the "which thread is doing what at the moment" summary. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 20:10 Message: yes I was able to limit the program running on one processer. Or at least I told it to set its affinity to Core 0 from the processes. It still locked up. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 20:08 Message: I did some further testing... it will actually lock up randomly still. Doesn't matter if I can recruit one or two. :/ ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 20:06 Message: Ran java -version from command window: java version "1.6.0_17" Java(TM) SE Runtime Environment (build 1.6.0_17-b04) Java HotSpot(TM) Client VM (build 14.3-b01, mixed mode) I figured out how to get into the Java Options. Logging was turned off. So now I have a Java Console window when the program opens. So I tried a game, and it got stuck after 2nd time I tried to add a recruit. Btw, I notice it seems to do it when I can choose more than one recruit. Here is the last few lines of the log: (man... this is a lot of typing and I'm not sure it is really showing any errors. It just shows the last step before it "froze". INFO: Legion Gr09 (Lobster) in Tower hex 600 moves to Jungle hex 135 entering on RIGHT Feb 10, 2011 2:00:47 PM net.sf.colossus.server.GameServerSide$GamePhaseAdvancer advancePhaseInternal INFO:Phase advances to Muster Feb 10, 2011 2:00:49 PM net.sf.colossus.server.LegionServerSide addCreature INFO: Added Ceentaur -now there are 20 left. Feb 10, 2011 2:00:49 PM net.sf.colossus.server.GameServerSide doRecruit INFO: Legion Gr05 in Woods hex 39 recruits Centaur with 1 Centaur ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 19:37 Message: > It is a quad core system. hm. That might be part of the reason. I have some wild guess what it could be... Can you tell me exact java version? Help => About tells it. It tells also Log directory, there would be a file Colossus0.log. (The *0,log is always the newest; if new starts, it renames 1 to 2, 0 to 1nd creates new 0.log file). Sorry you have to type the stuff from Help => About, no copy paste. Or make a screenshot if you know how. If you wish you can also send it to me via mail (my SF username, i.e. the "cleka", then the magic a-like character, then users.sourceforge.net . Can you tune your system to use one CPU only? ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 19:15 Message: We were at a party and someone brought the board game Titan over. It confused the heck out of us (never even made it around once) but it seemed interesting. I did a search and found you making an app for it. So I thought I'd try it out. I am definitely brand new to Titan, so I expect to actually be the only player on here that gets defeated by your "dumb" AI. It is a quad core system. No I can not close the the dialog box with the small "X". In fact I can't do anything except shut it down. I selected Auto Pick Recruiters... and now I think it hangs up on actual recruiting now. It appears random too. Sometimes I can recruit a whole stack (7) without "locking up" and other times it will do it after the first recruit. (btw... sometimes I can't move a stack. That just a rule I'm not aware of?) ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 18:50 Message: Do you happen to know, do you have more than one CPU or CPU core? ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 18:43 Message: BTW, are you "well familiar with Titan, just new to use Colossus, or need to learn also "how game works, rules, strategy, etc." first? Once you are familar with the game and the usage, you could even try the public game server (by clicking the "WebClient" button), where you could find other "real people" to play against. (in contrast to the AI ("Artificial Intelligence") i.e. Robot players... However to notice is, people are usually online in afternoon/evening for US time. At other time you might log in there and be alone 30 or 60 mins before any other drop by. However, that's anyway more recommded only a) it does not hang for you any more and b) once you are "fluent" in playing. It's annoying for others when you need, let's say, 1.5 minutes for each individual move, split, recruit etc.... => Practicing to get faster better with AI players.They are all in all rather dump, but for first few weeks ok. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 18:35 Message: okay (or not okay), but that's something. In worst case I have to make you a special version which prints something to screen for every line of code before and around where it calls that "Pick Recruiter" dialog :)) That's what I meant, you might run into a "block" somewhat later with some other dialog. But the recruit dialog itself worked?? Strange; they are very similarly programmed. Some more "smalltalk" :o) > Made me green in fact. > I guess I can always play green. :p :) You can try: Window => Preferences => "Color" tab. Click on "Select" and choose another color. Next time you START a game it would choose that color for you automatically. (all those "Autoplay" options do certain things for you. So in fact you could enable "Auto Pick Recruiter", since that one is rather unimportant, as long as you can choose an actual Recruit. (so we can circumvent THIS cliff for now). But there might be other dialogs later to block you as well. And/or, in fact that's an interesting thing to try, whether that color chooser dialog would work??? If not, can you close it with the "x" shaped icon in upper right corner? (the initial color pick dialog CAN'T be closed that way, or rather, if one does, it reappears immediately.) So, sure, I'd like to continue troubleshoot this. Let's try that above for now, have to bring kids to bed now. -Cle. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 18:17 Message: So I've been running through this... moving, recruiting, etc... then I came to a point where it won't let me pick again. :/ Says: kevinnew: Pick Recruiter in Brush hex17 There is more than one way you can recruit this. Current content of legion Gr05: There is a Titan, Cyclops, Gargoyle, Gargoyle, Centaur, Centaur Pick the creature type you want to reveal: There is a Cyclops, Gargoyle I can't pick anything. Tried clicking on it numerous times. Nothing will select and it is stuck on this dialog box. Not sure why this happening... but thank you for sticking it out with me. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 18:12 Message: You are correct. I typed the name in, it found it and ran fine. Well.. I can play now. yay! ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 18:08 Message: K so, I opened the default kevin.cfg and added those lines to it: Auto\ pick\ markers=true Auto\ pick\ color=true Favorite\ colors=Green And it worked. The game started. Made me green in fact. So far so good to, I was able to split a stack. Move the unit. Recruit. And watched the computer take it's move as well. So not sure why it wasn't working but it is now. Want to continue to troubleshoot? I guess I can always play green. :p ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 18:06 Message: No, you cannot "pick" the name kevinnew - it does not offer all "names that may exist". You choose the name on "Players" tab, On left side, Choose HUman, on right side type the name. 2nd Line, choose e.g. "SimpleAI", it fills right side with <byColor> or something, thats ok, Type there in first line the name kevinnew, and when game starts, it goes looking for a file Colossus-kewvinnew.cfg [and if it wouldn't exist, create it, sooner or later, after GUI / preferences changes]. Now we pre-create that file, so that it skips the color picking dialog because it would find a value to say "auto pick" from the file. -Cle. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 17:59 Message: btw, I did try and run the Colossus.jnlp stand alone and brings up the welcome screen, I hit ok, and the Game setup screen appears. I still can't choose newkevin and when I run it, once again I can not pick any of the colors. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 17:57 Message: I'll start from the beginning: • I open a folder I extracted all the files to from the .zip • I double click on run.bat A cmd window pops up with: C:\Documents and Settings\kevin\Desktop\collossus>cd "c:\Documents and Settings\kevin\Desktop\collossus\" C:\Documents and Settings\kevin\Desktop\collossus>java -Djava.util.logging.config.file=logging.properties -XMx256M -jar Colossus.jar Then what looks like the main program appears. It is the game setup screen. I make player one a human player and choose Kevin as the type. I make the 2nd player a SimpleAI and choose <By color> for the type. I leave everything else as is. (btw the top says Running Colossus Version 0.12.0-beta1 (revision 4970) on etc...) • I pick New game. The game appears to start, I can see the grid in the background with all the hills, deserts, etc. A small box with Pick a Color appears. I can move this box around. But I can not pick a color. I've tried clicking on every single one. I've tried pressing G, e, o, etc. I've tried Ctrl/Alt combinations, nothing. I can not close it either. I have to force it to shutdown. In Task Manager it shows that it is still running... so I don't THINK it is locked up. I do NOT see any other windows anywhere that I might need to click. I've even tried Alt+Tab and Ctrl+Tab to check. • I went ahead and did a search for the .colossus folder. I found it. It has 5 files in it. Colossus-netclient.cfg Colossus-red.cfg Colossus-server.cfg Colossus-kevin.cfg Colossus-kevin1.cfg • I went ahead and created a new .cfg file. I named it Colossus-kevinnew.cfg. I added these lines to it: Auto\ pick\ markers=true Auto\ pick\ color=true Favorite\ colors=Green Interestingly here, when I started the program, I could not choose kevinnew. I could only still see kevin. I searched my entire computer to see if the .cfg files might also be somewhere else but I could only find them under \\documents and settings\kevin\desktop\collossus • Ok so I tried your command prompt idea. I even ran the command from within the path and I kept getting this error... Unable to access jarfile Colossus.jar I can't imagine it being a graphical error... the program still seems to be running fine, I just can't select any color. In Task Manager it doesn't say "not responding". So I will wait for your reply. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 17:06 Message: ok, XP with SP3 and Sun Java 6 ( 1.6.x ). All right, that should work. ( I may have in... [truncated message content] |
|
From: SourceForge.net <no...@so...> - 2011-02-10 21:05:49
|
Bugs item #3177305, was opened at 2011-02-10 12:40 Message generated for change (Comment added) made by nobody You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101939&aid=3177305&group_id=1939 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: GUI Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Nobody/Anonymous (nobody) Assigned to: Clemens Katzer (cleka) Summary: Can not pick color to start game Initial Comment: Recently tried to play this game. I downloaded both the java version and the zip file. Both seem to start up just fine. The board will appear and another small window with choose a color pops up. I can not click on any color. I've tried pressing the letters that correspond to the colors. I've tried alt and ctrl combinations. Nothing works. I have to force the program to quit. Ideas? ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 21:05 Message: No problem, see you Monday. You should get some sleep. 2300 is way past my bedtime. lol Btw, I am running multiple monitors as well, don't know if that would cause an issue. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:58 Message: > That was funny about finding an old laptop. Hey, that was a practical piece of advice! :>) (if your toaster has big enough screen and keyboard/mouse perhpaps even that will do ... ;~) ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:56 Message: > not before monday OK, fits me fine, then I dont need to "stress" myself. Very nice that you mention it beforehand! And here we see it: "AWT-EventQueue-0" prio=6 tid=0x17042800 nid=0x1eac waiting for monitor entry [0x1759e000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruit.<init>(PickRecruit.java:168) at net.sf.colossus.gui.PickRecruit.pickRecruit(PickRecruit.java:186) - locked <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at net.sf.colossus.gui.ClientGUI.doPickRecruit(ClientGUI.java:2097) at net.sf.colossus.client.Client.doRecruit(Client.java:1763) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch" prio=6 tid=0x1701c000 nid=0x193c waiting for monitor entry [0x173bf000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x04048108> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) STRANGE: Two EDT / GUI graphics related threads, both related to the PickRecruit!?!? Have to crosscheck whether those two threads also both exist in when I run it. Thanks for the provided infos, let's contineue monday or something; but then, rather evenings (time is 5 hours ago until now). Because, I _am_ committed to fix such issues, but its hard to fix if I cant reproduce them... BR & Have a nice weekend! -Clemens ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 20:52 Message: Ok, I tried it again... made it even bigger: Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C:\Documents and Settings\thr85850>"C:\Documents and Settings\thr85850\Desktop\collossus\run.bat" C:\Documents and Settings\thr85850>cd "C:\Documents and Settings\thr85850\Desktop\collossus\" C:\Documents and Settings\thr85850\Desktop\collossus>java -Djava.util.logging.config.file=logging.properties -Xmx256M -jar Colossus.jar 2011-02-10 14:50:27 Full thread dump Java HotSpot(TM) Client VM (14.3-b01 mixed mode): "Client Gold" prio=6 tid=0x177d9800 nid=0x56c runnable [0x17d2f000] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(Unknown Source) at sun.nio.cs.StreamDecoder.readBytes(Unknown Source) at sun.nio.cs.StreamDecoder.implRead(Unknown Source) at sun.nio.cs.StreamDecoder.read(Unknown Source) - locked <0x041a1880> (a java.io.InputStreamReader) at java.io.InputStreamReader.read(Unknown Source) at java.io.BufferedReader.fill(Unknown Source) at java.io.BufferedReader.readLine(Unknown Source) - locked <0x041a1880> (a java.io.InputStreamReader) at java.io.BufferedReader.readLine(Unknown Source) at net.sf.colossus.client.SocketClientThread.waitForLine(SocketClientThread.java:504) at net.sf.colossus.client.SocketClientThread.readAndParseUntilDone(SocketClientThread.java:419) at net.sf.colossus.client.SocketClientThread.run(SocketClientThread.java:373) "Client kevin" prio=6 tid=0x177e7400 nid=0x1634 runnable [0x17cdf000] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(Unknown Source) at sun.nio.cs.StreamDecoder.readBytes(Unknown Source) at sun.nio.cs.StreamDecoder.implRead(Unknown Source) at sun.nio.cs.StreamDecoder.read(Unknown Source) - locked <0x04189358> (a java.io.InputStreamReader) at java.io.InputStreamReader.read(Unknown Source) at java.io.BufferedReader.fill(Unknown Source) at java.io.BufferedReader.readLine(Unknown Source) - locked <0x04189358> (a java.io.InputStreamReader) at java.io.BufferedReader.readLine(Unknown Source) at net.sf.colossus.client.SocketClientThread.waitForLine(SocketClientThread.java:504) at net.sf.colossus.client.SocketClientThread.readAndParseUntilDone(SocketClientThread.java:419) at net.sf.colossus.client.SocketClientThread.run(SocketClientThread.java:373) "Thread-4" prio=6 tid=0x17701400 nid=0x1248 runnable [0x17c3f000] java.lang.Thread.State: RUNNABLE at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method) at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(Unknown Source) at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(Unknown Source) at sun.nio.ch.WindowsSelectorImpl.doSelect(Unknown Source) at sun.nio.ch.SelectorImpl.lockAndDoSelect(Unknown Source) - locked <0x0417bd60> (a sun.nio.ch.Util$1) - locked <0x0417bd70> (a java.util.Collections$UnmodifiableSet) - locked <0x0417bce8> (a sun.nio.ch.WindowsSelectorImpl) at sun.nio.ch.SelectorImpl.select(Unknown Source) at net.sf.colossus.server.Server.handleOutsideChanges(Server.java:439) at net.sf.colossus.server.Server.waitOnSelector(Server.java:398) at net.sf.colossus.server.Server.run(Server.java:227) "TimerQueue" daemon prio=6 tid=0x176dd000 nid=0x1dd0 in Object.wait() [0x17a9f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x04165ee0> (a javax.swing.TimerQueue) at javax.swing.TimerQueue.run(Unknown Source) - locked <0x04165ee0> (a javax.swing.TimerQueue) at java.lang.Thread.run(Unknown Source) "AWT-EventQueue-0" prio=6 tid=0x1703ac00 nid=0x1a08 waiting for monitor entry [0x1759e000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02aa5580> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruit.<init>(PickRecruit.java:168) at net.sf.colossus.gui.PickRecruit.pickRecruit(PickRecruit.java:186) - locked <0x138642d8> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at net.sf.colossus.gui.ClientGUI.doPickRecruit(ClientGUI.java:2097) at net.sf.colossus.client.Client.doRecruit(Client.java:1763) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch" prio=6 tid=0x17022400 nid=0x1bb8 waiting for monitor entry [0x173bf000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x138642d8> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02aa5580> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x040480d0> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) "AWT-Windows" daemon prio=6 tid=0x17018800 nid=0x1694 runnable [0x1729f000] java.lang.Thread.State: RUNNABLE at sun.awt.windows.WToolkit.eventLoop(Native Method) at sun.awt.windows.WToolkit.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "AWT-Shutdown" prio=6 tid=0x17017800 nid=0x410 in Object.wait() [0x1724f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0402d038> (a java.lang.Object) at java.lang.Object.wait(Object.java:485) at sun.awt.AWTAutoShutdown.run(Unknown Source) - locked <0x0402d038> (a java.lang.Object) at java.lang.Thread.run(Unknown Source) "Java2D Disposer" daemon prio=10 tid=0x17011400 nid=0x1fd8 in Object.wait() [0x171ff000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0402d0c8> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x0402d0c8> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) at sun.java2d.Disposer.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "Low Memory Detector" daemon prio=6 tid=0x16c80400 nid=0x1a3c runnable [0x00000000] java.lang.Thread.State: RUNNABLE "CompilerThread0" daemon prio=10 tid=0x16c7a400 nid=0x11c4 waiting on condition [0x00000000] java.lang.Thread.State: RUNNABLE "Attach Listener" daemon prio=10 tid=0x16c78c00 nid=0x13ac runnable [0x00000000] java.lang.Thread.State: RUNNABLE "Signal Dispatcher" daemon prio=10 tid=0x16c77800 nid=0xdac waiting on condition [0x00000000] java.lang.Thread.State: RUNNABLE "Finalizer" daemon prio=8 tid=0x16c67800 nid=0x1860 in Object.wait() [0x16ddf000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x03ebd718> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x03ebd718> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source) "Reference Handler" daemon prio=10 tid=0x16c62c00 nid=0x1ae0 in Object.wait() [0x16d8f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x03ebd7a0> (a java.lang.ref.Reference$Lock) at java.lang.Object.wait(Object.java:485) at java.lang.ref.Reference$ReferenceHandler.run(Unknown Source) - locked <0x03ebd7a0> (a java.lang.ref.Reference$Lock) "main" prio=6 tid=0x003b6400 nid=0x1540 in Object.wait() [0x009df000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0417d9d0> (a java.lang.Object) at java.lang.Object.wait(Object.java:485) at net.sf.colossus.server.Server.waitUntilGameFinishes(Server.java:780) - locked <0x0417d9d0> (a java.lang.Object) at net.sf.colossus.server.GameServerSide.cleanupWhenGameOver(GameServerSide.java:401) at net.sf.colossus.server.GameServerSide.startNewGameAndWaitUntilOver(GameServerSide.java:454) at net.sf.colossus.appmain.Start.setupAndLoop(Start.java:663) at net.sf.colossus.appmain.Start.main(Start.java:874) "VM Thread" prio=10 tid=0x16c5fc00 nid=0x187c runnable "VM Periodic Task Thread" prio=10 tid=0x16c82c00 nid=0x1a24 waiting on condition JNI global references: 1447 Found one Java-level deadlock: ============================= "AWT-EventQueue-0": waiting to lock monitor 0x177d1804 (object 0x02aa5580, a java.lang.Object), which is held by "EventQueueMonitor-ComponentEvtDispatch" "EventQueueMonitor-ComponentEvtDispatch": waiting to lock monitor 0x176eb214 (object 0x138642d8, a java.lang.Class), which is held by "AWT-EventQueue-0" Java stack information for the threads listed above: =================================================== "AWT-EventQueue-0": at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02aa5580> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruit.<init>(PickRecruit.java:168) at net.sf.colossus.gui.PickRecruit.pickRecruit(PickRecruit.java:186) - locked <0x138642d8> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at net.sf.colossus.gui.ClientGUI.doPickRecruit(ClientGUI.java:2097) at net.sf.colossus.client.Client.doRecruit(Client.java:1763) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch": at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x138642d8> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02aa5580> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x040480d0> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) Found 1 deadlock. Heap def new generation total 960K, used 819K [0x02a90000, 0x02b90000, 0x03e40000) eden space 896K, 84% used [0x02a90000, 0x02b4e030, 0x02b70000) from space 64K, 93% used [0x02b80000, 0x02b8ef48, 0x02b90000) to space 64K, 0% used [0x02b70000, 0x02b70000, 0x02b80000) tenured generation total 10940K, used 9911K [0x03e40000, 0x048ef000, 0x12a90000) the space 10940K, 90% used [0x03e40000, 0x047eddf8, 0x047ede00, 0x048ef000) compacting perm gen total 14336K, used 14166K [0x12a90000, 0x13890000, 0x16a90000) the space 14336K, 98% used [0x12a90000, 0x13865a58, 0x13865c00, 0x13890000) No shared spaces configured. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 20:48 Message: Thanks for walking me through this and all. Just so you know I will not be able to respond to you again until Monday. I stretched it to fit my entire screen.... and I'm running a big screen. lol That was funny about finding an old laptop. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:46 Message: did you make window big enough ? Seems begin of it is missing again. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:43 Message: Yeah. As I almost expected: > Found 1 deadlock. Analyzing that and thinking how to go further will take some time. But I have to go sleeping now (22:40 here in Finland) and I have to get up early tomorrow. I try to look deeper into it tomorrow. Meanwhile, can you find a 5 year old laptop somewhere? ;-) (namely, any computer with one CPU or core only...) Chances are there it works fine. >btw, I couldn't copy and paste the java console because when the > program locked it wouldn't let me select the console either. Ah, right! And ah, you saw the deadlock reported also. Br, Clemens ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 20:40 Message: btw, I couldn't copy and paste the java console because when the program locked it wouldn't let me select the console either. and looks like your suspicions are right about that dead lock... shows below it found 1. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 20:38 Message: holy moly... its a lot... here goes: at net.sf.colossus.client.SocketClientThread.readAndParseUntilDone(SocketClientThread.java:419) at net.sf.colossus.client.SocketClientThread.run(SocketClientThread.java:373) "Client kevin" prio=6 tid=0x170d5400 nid=0x1eb4 runnable [0x17cdf000] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(Unknown Source) at sun.nio.cs.StreamDecoder.readBytes(Unknown Source) at sun.nio.cs.StreamDecoder.implRead(Unknown Source) at sun.nio.cs.StreamDecoder.read(Unknown Source) - locked <0x041a4f00> (a java.io.InputStreamReader) at java.io.InputStreamReader.read(Unknown Source) at java.io.BufferedReader.fill(Unknown Source) at java.io.BufferedReader.readLine(Unknown Source) - locked <0x041a4f00> (a java.io.InputStreamReader) at java.io.BufferedReader.readLine(Unknown Source) at net.sf.colossus.client.SocketClientThread.waitForLine(SocketClientThread.java:504) at net.sf.colossus.client.SocketClientThread.readAndParseUntilDone(SocketClientThread.java:419) at net.sf.colossus.client.SocketClientThread.run(SocketClientThread.java:373) "Thread-4" prio=6 tid=0x1716a800 nid=0x1428 runnable [0x17c3f000] java.lang.Thread.State: RUNNABLE at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method) at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(Unknown Source) at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(Unknown Source) at sun.nio.ch.WindowsSelectorImpl.doSelect(Unknown Source) at sun.nio.ch.SelectorImpl.lockAndDoSelect(Unknown Source) - locked <0x0418f468> (a sun.nio.ch.Util$1) - locked <0x0418f478> (a java.util.Collections$UnmodifiableSet) - locked <0x0418f3f0> (a sun.nio.ch.WindowsSelectorImpl) at sun.nio.ch.SelectorImpl.select(Unknown Source) at net.sf.colossus.server.Server.handleOutsideChanges(Server.java:439) at net.sf.colossus.server.Server.waitOnSelector(Server.java:398) at net.sf.colossus.server.Server.run(Server.java:227) "TimerQueue" daemon prio=6 tid=0x176e6400 nid=0x1f8c in Object.wait() [0x17a9f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x04168e60> (a javax.swing.TimerQueue) at javax.swing.TimerQueue.run(Unknown Source) - locked <0x04168e60> (a javax.swing.TimerQueue) at java.lang.Thread.run(Unknown Source) "AWT-EventQueue-0" prio=6 tid=0x17042800 nid=0x1eac waiting for monitor entry [0x1759e000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruit.<init>(PickRecruit.java:168) at net.sf.colossus.gui.PickRecruit.pickRecruit(PickRecruit.java:186) - locked <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at net.sf.colossus.gui.ClientGUI.doPickRecruit(ClientGUI.java:2097) at net.sf.colossus.client.Client.doRecruit(Client.java:1763) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch" prio=6 tid=0x1701c000 nid=0x193c waiting for monitor entry [0x173bf000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x04048108> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) "AWT-Windows" daemon prio=6 tid=0x16ff8400 nid=0x1d74 runnable [0x1729f000] java.lang.Thread.State: RUNNABLE at sun.awt.windows.WToolkit.eventLoop(Native Method) at sun.awt.windows.WToolkit.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "AWT-Shutdown" prio=6 tid=0x17001c00 nid=0x1844 in Object.wait() [0x1724f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0402cf70> (a java.lang.Object) at java.lang.Object.wait(Object.java:485) at sun.awt.AWTAutoShutdown.run(Unknown Source) - locked <0x0402cf70> (a java.lang.Object) at java.lang.Thread.run(Unknown Source) "Java2D Disposer" daemon prio=10 tid=0x17018800 nid=0x1cbc in Object.wait() [0x171ff000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0402d000> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x0402d000> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) at sun.java2d.Disposer.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "Low Memory Detector" daemon prio=6 tid=0x16c80400 nid=0x1cac runnable [0x00000000] java.lang.Thread.State: RUNNABLE "CompilerThread0" daemon prio=10 tid=0x16c7a400 nid=0x450 waiting on condition [0x00000000] java.lang.Thread.State: RUNNABLE "Attach Listener" daemon prio=10 tid=0x16c78c00 nid=0x1d44 runnable [0x00000000] java.lang.Thread.State: RUNNABLE "Signal Dispatcher" daemon prio=10 tid=0x16c77800 nid=0x1b30 waiting on condition [0x00000000] java.lang.Thread.State: RUNNABLE "Finalizer" daemon prio=8 tid=0x16c67800 nid=0x19cc in Object.wait() [0x16ddf000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x03ebd718> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x03ebd718> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source) "Reference Handler" daemon prio=10 tid=0x16c62c00 nid=0x1eb0 in Object.wait() [0x16d8f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x03ebd7a0> (a java.lang.ref.Reference$Lock) at java.lang.Object.wait(Object.java:485) at java.lang.ref.Reference$ReferenceHandler.run(Unknown Source) - locked <0x03ebd7a0> (a java.lang.ref.Reference$Lock) "main" prio=6 tid=0x003b6400 nid=0x1e2c in Object.wait() [0x009df000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x041915c8> (a java.lang.Object) at java.lang.Object.wait(Object.java:485) at net.sf.colossus.server.Server.waitUntilGameFinishes(Server.java:780) - locked <0x041915c8> (a java.lang.Object) at net.sf.colossus.server.GameServerSide.cleanupWhenGameOver(GameServerSide.java:401) at net.sf.colossus.server.GameServerSide.startNewGameAndWaitUntilOver(GameServerSide.java:454) at net.sf.colossus.appmain.Start.setupAndLoop(Start.java:663) at net.sf.colossus.appmain.Start.main(Start.java:874) "VM Thread" prio=10 tid=0x16c5fc00 nid=0x10fc runnable "VM Periodic Task Thread" prio=10 tid=0x16c82c00 nid=0x1a00 waiting on condition JNI global references: 1473 Found one Java-level deadlock: ============================= "AWT-EventQueue-0": waiting to lock monitor 0x177e5b1c (object 0x02ba1288, a java.lang.Object), which is held by "EventQueueMonitor-ComponentEvtDispatch" "EventQueueMonitor-ComponentEvtDispatch": waiting to lock monitor 0x176e8c54 (object 0x13872538, a java.lang.Class), which is held by "AWT-EventQueue-0" Java stack information for the threads listed above: =================================================== "AWT-EventQueue-0": at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruit.<init>(PickRecruit.java:168) at net.sf.colossus.gui.PickRecruit.pickRecruit(PickRecruit.java:186) - locked <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at net.sf.colossus.gui.ClientGUI.doPickRecruit(ClientGUI.java:2097) at net.sf.colossus.client.Client.doRecruit(Client.java:1763) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch": at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x04048108> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) Found 1 deadlock. Heap def new generation total 1216K, used 704K [0x02a90000, 0x02be0000, 0x03e40000) eden space 1088K, 57% used [0x02a90000, 0x02b2b388, 0x02ba0000) from space 128K, 65% used [0x02ba0000, 0x02bb4f20, 0x02bc0000) to space 128K, 0% used [0x02bc0000, 0x02bc0000, 0x02be0000) tenured generation total 15784K, used 9845K [0x03e40000, 0x04daa000, 0x12a90000) the space 15784K, 62% used [0x03e40000, 0x047dd428, 0x047dd600, 0x04daa000) compacting perm gen total 14336K, used 14223K [0x12a90000, 0x13890000, 0x16a90000) the space 14336K, 99% used [0x12a90000, 0x13873d10, 0x13873e00, 0x13890000) No shared spaces configured. Terminate batch job (Y/N)? ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:27 Message: NOTE, from the Java console log you should be able to copy paste! (mark with mouse and Ctrl-C or right click -> copy.) Only from that Colossus own "About" window you can't copy paste. Not sure whether that affinity helps; Colossus is "multithreaded", so if there is more than one core existing it might still use a 2nd. (affinity to me means merely, it would _preferrably_ run on that core). My suspicion is it is some kind of deadlock, caused by the way how those dialogs are called: "synchronous" , and in the "Event Dispatcher thread". That it happens randomly is much more "reasonable" than that some dialogs lock and some not. Such random misbehaviors we had earlier. They were fixed, but merely "somehow" and "when it happened", not systematically "rewrite everything to be thread-safe by design". Can you try the following: Run it from commandline. If possible, make the commandline window as big as possible, like window size (field 3 +4) width 150 height 50, screen buffer size (1+2 fields) 150 and 3000.) (to do so, on the cmdline window, click the smal C:\ in top LEFT corner, Properties). When it looks, make the cmdline box the active window and press Ctrl-Break (bottom left and top right keys of the keyboard together ;-)) Lot of glibberish would be printed to screen. Same top left icon, Edit => Select all ; copy (ctrl-c or from same menu copy). Send me what's there (or post it here). That's the "which thread is doing what at the moment" summary. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 20:10 Message: yes I was able to limit the program running on one processer. Or at least I told it to set its affinity to Core 0 from the processes. It still locked up. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 20:08 Message: I did some further testing... it will actually lock up randomly still. Doesn't matter if I can recruit one or two. :/ ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 20:06 Message: Ran java -version from command window: java version "1.6.0_17" Java(TM) SE Runtime Environment (build 1.6.0_17-b04) Java HotSpot(TM) Client VM (build 14.3-b01, mixed mode) I figured out how to get into the Java Options. Logging was turned off. So now I have a Java Console window when the program opens. So I tried a game, and it got stuck after 2nd time I tried to add a recruit. Btw, I notice it seems to do it when I can choose more than one recruit. Here is the last few lines of the log: (man... this is a lot of typing and I'm not sure it is really showing any errors. It just shows the last step before it "froze". INFO: Legion Gr09 (Lobster) in Tower hex 600 moves to Jungle hex 135 entering on RIGHT Feb 10, 2011 2:00:47 PM net.sf.colossus.server.GameServerSide$GamePhaseAdvancer advancePhaseInternal INFO:Phase advances to Muster Feb 10, 2011 2:00:49 PM net.sf.colossus.server.LegionServerSide addCreature INFO: Added Ceentaur -now there are 20 left. Feb 10, 2011 2:00:49 PM net.sf.colossus.server.GameServerSide doRecruit INFO: Legion Gr05 in Woods hex 39 recruits Centaur with 1 Centaur ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 19:37 Message: > It is a quad core system. hm. That might be part of the reason. I have some wild guess what it could be... Can you tell me exact java version? Help => About tells it. It tells also Log directory, there would be a file Colossus0.log. (The *0,log is always the newest; if new starts, it renames 1 to 2, 0 to 1nd creates new 0.log file). Sorry you have to type the stuff from Help => About, no copy paste. Or make a screenshot if you know how. If you wish you can also send it to me via mail (my SF username, i.e. the "cleka", then the magic a-like character, then users.sourceforge.net . Can you tune your system to use one CPU only? ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 19:15 Message: We were at a party and someone brought the board game Titan over. It confused the heck out of us (never even made it around once) but it seemed interesting. I did a search and found you making an app for it. So I thought I'd try it out. I am definitely brand new to Titan, so I expect to actually be the only player on here that gets defeated by your "dumb" AI. It is a quad core system. No I can not close the the dialog box with the small "X". In fact I can't do anything except shut it down. I selected Auto Pick Recruiters... and now I think it hangs up on actual recruiting now. It appears random too. Sometimes I can recruit a whole stack (7) without "locking up" and other times it will do it after the first recruit. (btw... sometimes I can't move a stack. That just a rule I'm not aware of?) ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 18:50 Message: Do you happen to know, do you have more than one CPU or CPU core? ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 18:43 Message: BTW, are you "well familiar with Titan, just new to use Colossus, or need to learn also "how game works, rules, strategy, etc." first? Once you are familar with the game and the usage, you could even try the public game server (by clicking the "WebClient" button), where you could find other "real people" to play against. (in contrast to the AI ("Artificial Intelligence") i.e. Robot players... However to notice is, people are usually online in afternoon/evening for US time. At other time you might log in there and be alone 30 or 60 mins before any other drop by. However, that's anyway more recommded only a) it does not hang for you any more and b) once you are "fluent" in playing. It's annoying for others when you need, let's say, 1.5 minutes for each individual move, split, recruit etc.... => Practicing to get faster better with AI players.They are all in all rather dump, but for first few weeks ok. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 18:35 Message: okay (or not okay), but that's something. In worst case I have to make you a special version which prints something to screen for every line of code before and around where it calls that "Pick Recruiter" dialog :)) That's what I meant, you might run into a "block" somewhat later with some other dialog. But the recruit dialog itself worked?? Strange; they are very similarly programmed. Some more "smalltalk" :o) > Made me green in fact. > I guess I can always play green. :p :) You can try: Window => Preferences => "Color" tab. Click on "Select" and choose another color. Next time you START a game it would choose that color for you automatically. (all those "Autoplay" options do certain things for you. So in fact you could enable "Auto Pick Recruiter", since that one is rather unimportant, as long as you can choose an actual Recruit. (so we can circumvent THIS cliff for now). But there might be other dialogs later to block you as well. And/or, in fact that's an interesting thing to try, whether that color chooser dialog would work??? If not, can you close it with the "x" shaped icon in upper right corner? (the initial color pick dialog CAN'T be closed that way, or rather, if one does, it reappears immediately.) So, sure, I'd like to continue troubleshoot this. Let's try that above for now, have to bring kids to bed now. -Cle. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 18:17 Message: So I've been running through this... moving, recruiting, etc... then I came to a point where it won't let me pick again. :/ Says: kevinnew: Pick Recruiter in Brush hex17 There is more than one way you can recruit this. Current content of legion Gr05: There is a Titan, Cyclops, Gargoyle, Gargoyle, Centaur, Centaur Pick the creature type you want to reveal: There is a Cyclops, Gargoyle I can't pick anything. Tried clicking on it numerous times. Nothing will select and it is stuck on this dialog box. Not sure why this happening... but thank you for sticking it out with me. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 18:12 Message: You are correct. I typed the name in, it found it and ran fine. Well.. I can play now. yay! ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 18:08 Message: K so, I opened the default kevin.cfg and added those lines to it: Auto\ pick\ markers=true Auto\ pick\ color=true Favorite\ colors=Green And it worked. The game started. Made me green in fact. So far so good to, I was able to split a stack. Move the unit. Recruit. And watched the computer take it's move as well. So not sure why it wasn't working but it is now. Want to continue to troubleshoot? I guess I can always play green. :p ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 18:06 Message: No, you cannot "pick" the name kevinnew - it does not offer all "names that may exist". You choose the name on "Players" tab, On left side, Choose HUman, on right side type the name. 2nd Line, choose e.g. "SimpleAI", it fills right side with <byColor> or something, thats ok, Type there in first line the name kevinnew, and when game starts, it goes looking for a file Colossus-kewvinnew.cfg [and if it wouldn't exist, create it, sooner or later, after GUI / preferences changes]. Now we pre-create that file, so that it skips the color picking dialog because it would find a value to say "auto pick" from the file. -Cle. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 17:59 Message: btw, I did try and run the Colossus.jnlp stand alone and brings up the welcome screen, I hit ok, and the Game setup screen appears. I still can't choose newkevin and when I run it, once again I can not pick any of the colors. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 17:57 Message: I'll start from the beginning: • I open a folder I extracted all the files to from the .zip • I double click on run.bat A cmd window pops up with: C:\Documents and Settings\kevin\Desktop\collossus>cd "c:\Documents and Settings\kevin\Desktop\collossus\" C:\Documents and Settings\kevin\Desktop\collossus>java -Djava.util.logging.config.file=logging.properties -XMx256M -jar Colossus.jar Then what looks like the main program appears. It is the game setup screen. I make player one a human player and choose Kevin as the type. I make the 2nd player a SimpleAI and choose <By color> for the type. I leave everything else as is. (btw the top says Running Colossus Version 0.12.0-beta1 (revision 4970) on etc...) • I pick New game. The game appears to start, I can see the grid in the background with all the hills, deserts, etc. A small box with Pick a Color appears. I can move this box around. But I can not pick a color. I've tried clicking on every single one. I've tried pressing G, e, o, etc. I've tried Ctrl/Alt combinations, nothing. I can not close it either. I have to force it to shutdown. In Task Manager it shows that it is still running... so I don't THINK it is locked up. I do NOT see any other windows anywhere that I might need to click. I've even tried Alt+Tab and Ctrl+Tab to check. • I went ahead and did a search for the .colossus folder. I found it. It has 5 files in it. Colossus-netclient.cfg Colossus-red.cfg Colossus-server.cfg Colossus-kevin.cfg Colossus-kevin1.cfg • I went ahead and created a new .cfg file. I named it Colossus-kevinnew.cfg. I added these lines to it: Auto\ pick\ markers=true Auto\ pick\ color=true Favorite\ colors=Green Interestingly here, when I started the program, I could not choose kevinnew. I could only still see kevin. I searched my entire computer to see if the .cfg files might also be somewhere else but I could only find them under \\documents and settings\kevin\desktop\collossus • Ok so I tried your command prompt idea. I even ran the command from within the path and I kept getting this error... Unable to access jarfile Colossus.jar I can't imagine it being a graphical error... the program still seems to be running fine, I just can't select any color. In Task Manager it doesn't say "not responding". So I will wait for your reply. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 17:06 Message: ok, XP with SP3 and Sun Java 6 ( 1.6.x ). All right, that should work. ( I may have in use SP2 but still). E.g. "Windows Vista" or "Windows 7" are more "exotic" for me. Sun Java is good also. Did you get the "Welcome to Release 0.12.0" dialog and click it away? (if not, it might have lurked around in the background hidden behind some other window and block the mouse/keyboard input or whatever ("modal dialog"). Should technically not happen/be possible, but one has seen stranger things happen.... The Hist... [truncated message content] |
|
From: SourceForge.net <no...@so...> - 2011-02-10 20:58:42
|
Bugs item #3177305, was opened at 2011-02-10 14:40 Message generated for change (Comment added) made by cleka You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101939&aid=3177305&group_id=1939 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: GUI Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Nobody/Anonymous (nobody) Assigned to: Clemens Katzer (cleka) Summary: Can not pick color to start game Initial Comment: Recently tried to play this game. I downloaded both the java version and the zip file. Both seem to start up just fine. The board will appear and another small window with choose a color pops up. I can not click on any color. I've tried pressing the letters that correspond to the colors. I've tried alt and ctrl combinations. Nothing works. I have to force the program to quit. Ideas? ---------------------------------------------------------------------- >Comment By: Clemens Katzer (cleka) Date: 2011-02-10 22:58 Message: > That was funny about finding an old laptop. Hey, that was a practical piece of advice! :>) (if your toaster has big enough screen and keyboard/mouse perhpaps even that will do ... ;~) ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 22:56 Message: > not before monday OK, fits me fine, then I dont need to "stress" myself. Very nice that you mention it beforehand! And here we see it: "AWT-EventQueue-0" prio=6 tid=0x17042800 nid=0x1eac waiting for monitor entry [0x1759e000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruit.<init>(PickRecruit.java:168) at net.sf.colossus.gui.PickRecruit.pickRecruit(PickRecruit.java:186) - locked <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at net.sf.colossus.gui.ClientGUI.doPickRecruit(ClientGUI.java:2097) at net.sf.colossus.client.Client.doRecruit(Client.java:1763) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch" prio=6 tid=0x1701c000 nid=0x193c waiting for monitor entry [0x173bf000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x04048108> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) STRANGE: Two EDT / GUI graphics related threads, both related to the PickRecruit!?!? Have to crosscheck whether those two threads also both exist in when I run it. Thanks for the provided infos, let's contineue monday or something; but then, rather evenings (time is 5 hours ago until now). Because, I _am_ committed to fix such issues, but its hard to fix if I cant reproduce them... BR & Have a nice weekend! -Clemens ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 22:52 Message: Ok, I tried it again... made it even bigger: Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C:\Documents and Settings\thr85850>"C:\Documents and Settings\thr85850\Desktop\collossus\run.bat" C:\Documents and Settings\thr85850>cd "C:\Documents and Settings\thr85850\Desktop\collossus\" C:\Documents and Settings\thr85850\Desktop\collossus>java -Djava.util.logging.config.file=logging.properties -Xmx256M -jar Colossus.jar 2011-02-10 14:50:27 Full thread dump Java HotSpot(TM) Client VM (14.3-b01 mixed mode): "Client Gold" prio=6 tid=0x177d9800 nid=0x56c runnable [0x17d2f000] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(Unknown Source) at sun.nio.cs.StreamDecoder.readBytes(Unknown Source) at sun.nio.cs.StreamDecoder.implRead(Unknown Source) at sun.nio.cs.StreamDecoder.read(Unknown Source) - locked <0x041a1880> (a java.io.InputStreamReader) at java.io.InputStreamReader.read(Unknown Source) at java.io.BufferedReader.fill(Unknown Source) at java.io.BufferedReader.readLine(Unknown Source) - locked <0x041a1880> (a java.io.InputStreamReader) at java.io.BufferedReader.readLine(Unknown Source) at net.sf.colossus.client.SocketClientThread.waitForLine(SocketClientThread.java:504) at net.sf.colossus.client.SocketClientThread.readAndParseUntilDone(SocketClientThread.java:419) at net.sf.colossus.client.SocketClientThread.run(SocketClientThread.java:373) "Client kevin" prio=6 tid=0x177e7400 nid=0x1634 runnable [0x17cdf000] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(Unknown Source) at sun.nio.cs.StreamDecoder.readBytes(Unknown Source) at sun.nio.cs.StreamDecoder.implRead(Unknown Source) at sun.nio.cs.StreamDecoder.read(Unknown Source) - locked <0x04189358> (a java.io.InputStreamReader) at java.io.InputStreamReader.read(Unknown Source) at java.io.BufferedReader.fill(Unknown Source) at java.io.BufferedReader.readLine(Unknown Source) - locked <0x04189358> (a java.io.InputStreamReader) at java.io.BufferedReader.readLine(Unknown Source) at net.sf.colossus.client.SocketClientThread.waitForLine(SocketClientThread.java:504) at net.sf.colossus.client.SocketClientThread.readAndParseUntilDone(SocketClientThread.java:419) at net.sf.colossus.client.SocketClientThread.run(SocketClientThread.java:373) "Thread-4" prio=6 tid=0x17701400 nid=0x1248 runnable [0x17c3f000] java.lang.Thread.State: RUNNABLE at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method) at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(Unknown Source) at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(Unknown Source) at sun.nio.ch.WindowsSelectorImpl.doSelect(Unknown Source) at sun.nio.ch.SelectorImpl.lockAndDoSelect(Unknown Source) - locked <0x0417bd60> (a sun.nio.ch.Util$1) - locked <0x0417bd70> (a java.util.Collections$UnmodifiableSet) - locked <0x0417bce8> (a sun.nio.ch.WindowsSelectorImpl) at sun.nio.ch.SelectorImpl.select(Unknown Source) at net.sf.colossus.server.Server.handleOutsideChanges(Server.java:439) at net.sf.colossus.server.Server.waitOnSelector(Server.java:398) at net.sf.colossus.server.Server.run(Server.java:227) "TimerQueue" daemon prio=6 tid=0x176dd000 nid=0x1dd0 in Object.wait() [0x17a9f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x04165ee0> (a javax.swing.TimerQueue) at javax.swing.TimerQueue.run(Unknown Source) - locked <0x04165ee0> (a javax.swing.TimerQueue) at java.lang.Thread.run(Unknown Source) "AWT-EventQueue-0" prio=6 tid=0x1703ac00 nid=0x1a08 waiting for monitor entry [0x1759e000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02aa5580> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruit.<init>(PickRecruit.java:168) at net.sf.colossus.gui.PickRecruit.pickRecruit(PickRecruit.java:186) - locked <0x138642d8> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at net.sf.colossus.gui.ClientGUI.doPickRecruit(ClientGUI.java:2097) at net.sf.colossus.client.Client.doRecruit(Client.java:1763) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch" prio=6 tid=0x17022400 nid=0x1bb8 waiting for monitor entry [0x173bf000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x138642d8> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02aa5580> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x040480d0> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) "AWT-Windows" daemon prio=6 tid=0x17018800 nid=0x1694 runnable [0x1729f000] java.lang.Thread.State: RUNNABLE at sun.awt.windows.WToolkit.eventLoop(Native Method) at sun.awt.windows.WToolkit.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "AWT-Shutdown" prio=6 tid=0x17017800 nid=0x410 in Object.wait() [0x1724f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0402d038> (a java.lang.Object) at java.lang.Object.wait(Object.java:485) at sun.awt.AWTAutoShutdown.run(Unknown Source) - locked <0x0402d038> (a java.lang.Object) at java.lang.Thread.run(Unknown Source) "Java2D Disposer" daemon prio=10 tid=0x17011400 nid=0x1fd8 in Object.wait() [0x171ff000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0402d0c8> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x0402d0c8> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) at sun.java2d.Disposer.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "Low Memory Detector" daemon prio=6 tid=0x16c80400 nid=0x1a3c runnable [0x00000000] java.lang.Thread.State: RUNNABLE "CompilerThread0" daemon prio=10 tid=0x16c7a400 nid=0x11c4 waiting on condition [0x00000000] java.lang.Thread.State: RUNNABLE "Attach Listener" daemon prio=10 tid=0x16c78c00 nid=0x13ac runnable [0x00000000] java.lang.Thread.State: RUNNABLE "Signal Dispatcher" daemon prio=10 tid=0x16c77800 nid=0xdac waiting on condition [0x00000000] java.lang.Thread.State: RUNNABLE "Finalizer" daemon prio=8 tid=0x16c67800 nid=0x1860 in Object.wait() [0x16ddf000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x03ebd718> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x03ebd718> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source) "Reference Handler" daemon prio=10 tid=0x16c62c00 nid=0x1ae0 in Object.wait() [0x16d8f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x03ebd7a0> (a java.lang.ref.Reference$Lock) at java.lang.Object.wait(Object.java:485) at java.lang.ref.Reference$ReferenceHandler.run(Unknown Source) - locked <0x03ebd7a0> (a java.lang.ref.Reference$Lock) "main" prio=6 tid=0x003b6400 nid=0x1540 in Object.wait() [0x009df000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0417d9d0> (a java.lang.Object) at java.lang.Object.wait(Object.java:485) at net.sf.colossus.server.Server.waitUntilGameFinishes(Server.java:780) - locked <0x0417d9d0> (a java.lang.Object) at net.sf.colossus.server.GameServerSide.cleanupWhenGameOver(GameServerSide.java:401) at net.sf.colossus.server.GameServerSide.startNewGameAndWaitUntilOver(GameServerSide.java:454) at net.sf.colossus.appmain.Start.setupAndLoop(Start.java:663) at net.sf.colossus.appmain.Start.main(Start.java:874) "VM Thread" prio=10 tid=0x16c5fc00 nid=0x187c runnable "VM Periodic Task Thread" prio=10 tid=0x16c82c00 nid=0x1a24 waiting on condition JNI global references: 1447 Found one Java-level deadlock: ============================= "AWT-EventQueue-0": waiting to lock monitor 0x177d1804 (object 0x02aa5580, a java.lang.Object), which is held by "EventQueueMonitor-ComponentEvtDispatch" "EventQueueMonitor-ComponentEvtDispatch": waiting to lock monitor 0x176eb214 (object 0x138642d8, a java.lang.Class), which is held by "AWT-EventQueue-0" Java stack information for the threads listed above: =================================================== "AWT-EventQueue-0": at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02aa5580> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruit.<init>(PickRecruit.java:168) at net.sf.colossus.gui.PickRecruit.pickRecruit(PickRecruit.java:186) - locked <0x138642d8> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at net.sf.colossus.gui.ClientGUI.doPickRecruit(ClientGUI.java:2097) at net.sf.colossus.client.Client.doRecruit(Client.java:1763) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch": at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x138642d8> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02aa5580> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x040480d0> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) Found 1 deadlock. Heap def new generation total 960K, used 819K [0x02a90000, 0x02b90000, 0x03e40000) eden space 896K, 84% used [0x02a90000, 0x02b4e030, 0x02b70000) from space 64K, 93% used [0x02b80000, 0x02b8ef48, 0x02b90000) to space 64K, 0% used [0x02b70000, 0x02b70000, 0x02b80000) tenured generation total 10940K, used 9911K [0x03e40000, 0x048ef000, 0x12a90000) the space 10940K, 90% used [0x03e40000, 0x047eddf8, 0x047ede00, 0x048ef000) compacting perm gen total 14336K, used 14166K [0x12a90000, 0x13890000, 0x16a90000) the space 14336K, 98% used [0x12a90000, 0x13865a58, 0x13865c00, 0x13890000) No shared spaces configured. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 22:48 Message: Thanks for walking me through this and all. Just so you know I will not be able to respond to you again until Monday. I stretched it to fit my entire screen.... and I'm running a big screen. lol That was funny about finding an old laptop. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 22:46 Message: did you make window big enough ? Seems begin of it is missing again. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 22:43 Message: Yeah. As I almost expected: > Found 1 deadlock. Analyzing that and thinking how to go further will take some time. But I have to go sleeping now (22:40 here in Finland) and I have to get up early tomorrow. I try to look deeper into it tomorrow. Meanwhile, can you find a 5 year old laptop somewhere? ;-) (namely, any computer with one CPU or core only...) Chances are there it works fine. >btw, I couldn't copy and paste the java console because when the > program locked it wouldn't let me select the console either. Ah, right! And ah, you saw the deadlock reported also. Br, Clemens ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 22:40 Message: btw, I couldn't copy and paste the java console because when the program locked it wouldn't let me select the console either. and looks like your suspicions are right about that dead lock... shows below it found 1. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 22:38 Message: holy moly... its a lot... here goes: at net.sf.colossus.client.SocketClientThread.readAndParseUntilDone(SocketClientThread.java:419) at net.sf.colossus.client.SocketClientThread.run(SocketClientThread.java:373) "Client kevin" prio=6 tid=0x170d5400 nid=0x1eb4 runnable [0x17cdf000] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(Unknown Source) at sun.nio.cs.StreamDecoder.readBytes(Unknown Source) at sun.nio.cs.StreamDecoder.implRead(Unknown Source) at sun.nio.cs.StreamDecoder.read(Unknown Source) - locked <0x041a4f00> (a java.io.InputStreamReader) at java.io.InputStreamReader.read(Unknown Source) at java.io.BufferedReader.fill(Unknown Source) at java.io.BufferedReader.readLine(Unknown Source) - locked <0x041a4f00> (a java.io.InputStreamReader) at java.io.BufferedReader.readLine(Unknown Source) at net.sf.colossus.client.SocketClientThread.waitForLine(SocketClientThread.java:504) at net.sf.colossus.client.SocketClientThread.readAndParseUntilDone(SocketClientThread.java:419) at net.sf.colossus.client.SocketClientThread.run(SocketClientThread.java:373) "Thread-4" prio=6 tid=0x1716a800 nid=0x1428 runnable [0x17c3f000] java.lang.Thread.State: RUNNABLE at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method) at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(Unknown Source) at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(Unknown Source) at sun.nio.ch.WindowsSelectorImpl.doSelect(Unknown Source) at sun.nio.ch.SelectorImpl.lockAndDoSelect(Unknown Source) - locked <0x0418f468> (a sun.nio.ch.Util$1) - locked <0x0418f478> (a java.util.Collections$UnmodifiableSet) - locked <0x0418f3f0> (a sun.nio.ch.WindowsSelectorImpl) at sun.nio.ch.SelectorImpl.select(Unknown Source) at net.sf.colossus.server.Server.handleOutsideChanges(Server.java:439) at net.sf.colossus.server.Server.waitOnSelector(Server.java:398) at net.sf.colossus.server.Server.run(Server.java:227) "TimerQueue" daemon prio=6 tid=0x176e6400 nid=0x1f8c in Object.wait() [0x17a9f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x04168e60> (a javax.swing.TimerQueue) at javax.swing.TimerQueue.run(Unknown Source) - locked <0x04168e60> (a javax.swing.TimerQueue) at java.lang.Thread.run(Unknown Source) "AWT-EventQueue-0" prio=6 tid=0x17042800 nid=0x1eac waiting for monitor entry [0x1759e000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruit.<init>(PickRecruit.java:168) at net.sf.colossus.gui.PickRecruit.pickRecruit(PickRecruit.java:186) - locked <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at net.sf.colossus.gui.ClientGUI.doPickRecruit(ClientGUI.java:2097) at net.sf.colossus.client.Client.doRecruit(Client.java:1763) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch" prio=6 tid=0x1701c000 nid=0x193c waiting for monitor entry [0x173bf000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x04048108> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) "AWT-Windows" daemon prio=6 tid=0x16ff8400 nid=0x1d74 runnable [0x1729f000] java.lang.Thread.State: RUNNABLE at sun.awt.windows.WToolkit.eventLoop(Native Method) at sun.awt.windows.WToolkit.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "AWT-Shutdown" prio=6 tid=0x17001c00 nid=0x1844 in Object.wait() [0x1724f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0402cf70> (a java.lang.Object) at java.lang.Object.wait(Object.java:485) at sun.awt.AWTAutoShutdown.run(Unknown Source) - locked <0x0402cf70> (a java.lang.Object) at java.lang.Thread.run(Unknown Source) "Java2D Disposer" daemon prio=10 tid=0x17018800 nid=0x1cbc in Object.wait() [0x171ff000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0402d000> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x0402d000> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) at sun.java2d.Disposer.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "Low Memory Detector" daemon prio=6 tid=0x16c80400 nid=0x1cac runnable [0x00000000] java.lang.Thread.State: RUNNABLE "CompilerThread0" daemon prio=10 tid=0x16c7a400 nid=0x450 waiting on condition [0x00000000] java.lang.Thread.State: RUNNABLE "Attach Listener" daemon prio=10 tid=0x16c78c00 nid=0x1d44 runnable [0x00000000] java.lang.Thread.State: RUNNABLE "Signal Dispatcher" daemon prio=10 tid=0x16c77800 nid=0x1b30 waiting on condition [0x00000000] java.lang.Thread.State: RUNNABLE "Finalizer" daemon prio=8 tid=0x16c67800 nid=0x19cc in Object.wait() [0x16ddf000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x03ebd718> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x03ebd718> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source) "Reference Handler" daemon prio=10 tid=0x16c62c00 nid=0x1eb0 in Object.wait() [0x16d8f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x03ebd7a0> (a java.lang.ref.Reference$Lock) at java.lang.Object.wait(Object.java:485) at java.lang.ref.Reference$ReferenceHandler.run(Unknown Source) - locked <0x03ebd7a0> (a java.lang.ref.Reference$Lock) "main" prio=6 tid=0x003b6400 nid=0x1e2c in Object.wait() [0x009df000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x041915c8> (a java.lang.Object) at java.lang.Object.wait(Object.java:485) at net.sf.colossus.server.Server.waitUntilGameFinishes(Server.java:780) - locked <0x041915c8> (a java.lang.Object) at net.sf.colossus.server.GameServerSide.cleanupWhenGameOver(GameServerSide.java:401) at net.sf.colossus.server.GameServerSide.startNewGameAndWaitUntilOver(GameServerSide.java:454) at net.sf.colossus.appmain.Start.setupAndLoop(Start.java:663) at net.sf.colossus.appmain.Start.main(Start.java:874) "VM Thread" prio=10 tid=0x16c5fc00 nid=0x10fc runnable "VM Periodic Task Thread" prio=10 tid=0x16c82c00 nid=0x1a00 waiting on condition JNI global references: 1473 Found one Java-level deadlock: ============================= "AWT-EventQueue-0": waiting to lock monitor 0x177e5b1c (object 0x02ba1288, a java.lang.Object), which is held by "EventQueueMonitor-ComponentEvtDispatch" "EventQueueMonitor-ComponentEvtDispatch": waiting to lock monitor 0x176e8c54 (object 0x13872538, a java.lang.Class), which is held by "AWT-EventQueue-0" Java stack information for the threads listed above: =================================================== "AWT-EventQueue-0": at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruit.<init>(PickRecruit.java:168) at net.sf.colossus.gui.PickRecruit.pickRecruit(PickRecruit.java:186) - locked <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at net.sf.colossus.gui.ClientGUI.doPickRecruit(ClientGUI.java:2097) at net.sf.colossus.client.Client.doRecruit(Client.java:1763) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch": at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x04048108> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) Found 1 deadlock. Heap def new generation total 1216K, used 704K [0x02a90000, 0x02be0000, 0x03e40000) eden space 1088K, 57% used [0x02a90000, 0x02b2b388, 0x02ba0000) from space 128K, 65% used [0x02ba0000, 0x02bb4f20, 0x02bc0000) to space 128K, 0% used [0x02bc0000, 0x02bc0000, 0x02be0000) tenured generation total 15784K, used 9845K [0x03e40000, 0x04daa000, 0x12a90000) the space 15784K, 62% used [0x03e40000, 0x047dd428, 0x047dd600, 0x04daa000) compacting perm gen total 14336K, used 14223K [0x12a90000, 0x13890000, 0x16a90000) the space 14336K, 99% used [0x12a90000, 0x13873d10, 0x13873e00, 0x13890000) No shared spaces configured. Terminate batch job (Y/N)? ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 22:27 Message: NOTE, from the Java console log you should be able to copy paste! (mark with mouse and Ctrl-C or right click -> copy.) Only from that Colossus own "About" window you can't copy paste. Not sure whether that affinity helps; Colossus is "multithreaded", so if there is more than one core existing it might still use a 2nd. (affinity to me means merely, it would _preferrably_ run on that core). My suspicion is it is some kind of deadlock, caused by the way how those dialogs are called: "synchronous" , and in the "Event Dispatcher thread". That it happens randomly is much more "reasonable" than that some dialogs lock and some not. Such random misbehaviors we had earlier. They were fixed, but merely "somehow" and "when it happened", not systematically "rewrite everything to be thread-safe by design". Can you try the following: Run it from commandline. If possible, make the commandline window as big as possible, like window size (field 3 +4) width 150 height 50, screen buffer size (1+2 fields) 150 and 3000.) (to do so, on the cmdline window, click the smal C:\ in top LEFT corner, Properties). When it looks, make the cmdline box the active window and press Ctrl-Break (bottom left and top right keys of the keyboard together ;-)) Lot of glibberish would be printed to screen. Same top left icon, Edit => Select all ; copy (ctrl-c or from same menu copy). Send me what's there (or post it here). That's the "which thread is doing what at the moment" summary. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 22:10 Message: yes I was able to limit the program running on one processer. Or at least I told it to set its affinity to Core 0 from the processes. It still locked up. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 22:08 Message: I did some further testing... it will actually lock up randomly still. Doesn't matter if I can recruit one or two. :/ ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 22:06 Message: Ran java -version from command window: java version "1.6.0_17" Java(TM) SE Runtime Environment (build 1.6.0_17-b04) Java HotSpot(TM) Client VM (build 14.3-b01, mixed mode) I figured out how to get into the Java Options. Logging was turned off. So now I have a Java Console window when the program opens. So I tried a game, and it got stuck after 2nd time I tried to add a recruit. Btw, I notice it seems to do it when I can choose more than one recruit. Here is the last few lines of the log: (man... this is a lot of typing and I'm not sure it is really showing any errors. It just shows the last step before it "froze". INFO: Legion Gr09 (Lobster) in Tower hex 600 moves to Jungle hex 135 entering on RIGHT Feb 10, 2011 2:00:47 PM net.sf.colossus.server.GameServerSide$GamePhaseAdvancer advancePhaseInternal INFO:Phase advances to Muster Feb 10, 2011 2:00:49 PM net.sf.colossus.server.LegionServerSide addCreature INFO: Added Ceentaur -now there are 20 left. Feb 10, 2011 2:00:49 PM net.sf.colossus.server.GameServerSide doRecruit INFO: Legion Gr05 in Woods hex 39 recruits Centaur with 1 Centaur ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 21:37 Message: > It is a quad core system. hm. That might be part of the reason. I have some wild guess what it could be... Can you tell me exact java version? Help => About tells it. It tells also Log directory, there would be a file Colossus0.log. (The *0,log is always the newest; if new starts, it renames 1 to 2, 0 to 1nd creates new 0.log file). Sorry you have to type the stuff from Help => About, no copy paste. Or make a screenshot if you know how. If you wish you can also send it to me via mail (my SF username, i.e. the "cleka", then the magic a-like character, then users.sourceforge.net . Can you tune your system to use one CPU only? ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 21:15 Message: We were at a party and someone brought the board game Titan over. It confused the heck out of us (never even made it around once) but it seemed interesting. I did a search and found you making an app for it. So I thought I'd try it out. I am definitely brand new to Titan, so I expect to actually be the only player on here that gets defeated by your "dumb" AI. It is a quad core system. No I can not close the the dialog box with the small "X". In fact I can't do anything except shut it down. I selected Auto Pick Recruiters... and now I think it hangs up on actual recruiting now. It appears random too. Sometimes I can recruit a whole stack (7) without "locking up" and other times it will do it after the first recruit. (btw... sometimes I can't move a stack. That just a rule I'm not aware of?) ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:50 Message: Do you happen to know, do you have more than one CPU or CPU core? ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:43 Message: BTW, are you "well familiar with Titan, just new to use Colossus, or need to learn also "how game works, rules, strategy, etc." first? Once you are familar with the game and the usage, you could even try the public game server (by clicking the "WebClient" button), where you could find other "real people" to play against. (in contrast to the AI ("Artificial Intelligence") i.e. Robot players... However to notice is, people are usually online in afternoon/evening for US time. At other time you might log in there and be alone 30 or 60 mins before any other drop by. However, that's anyway more recommded only a) it does not hang for you any more and b) once you are "fluent" in playing. It's annoying for others when you need, let's say, 1.5 minutes for each individual move, split, recruit etc.... => Practicing to get faster better with AI players.They are all in all rather dump, but for first few weeks ok. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:35 Message: okay (or not okay), but that's something. In worst case I have to make you a special version which prints something to screen for every line of code before and around where it calls that "Pick Recruiter" dialog :)) That's what I meant, you might run into a "block" somewhat later with some other dialog. But the recruit dialog itself worked?? Strange; they are very similarly programmed. Some more "smalltalk" :o) > Made me green in fact. > I guess I can always play green. :p :) You can try: Window => Preferences => "Color" tab. Click on "Select" and choose another color. Next time you START a game it would choose that color for you automatically. (all those "Autoplay" options do certain things for you. So in fact you could enable "Auto Pick Recruiter", since that one is rather unimportant, as long as you can choose an actual Recruit. (so we can circumvent THIS cliff for now). But there might be other dialogs later to block you as well. And/or, in fact that's an interesting thing to try, whether that color chooser dialog would work??? If not, can you close it with the "x" shaped icon in upper right corner? (the initial color pick dialog CAN'T be closed that way, or rather, if one does, it reappears immediately.) So, sure, I'd like to continue troubleshoot this. Let's try that above for now, have to bring kids to bed now. -Cle. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 20:17 Message: So I've been running through this... moving, recruiting, etc... then I came to a point where it won't let me pick again. :/ Says: kevinnew: Pick Recruiter in Brush hex17 There is more than one way you can recruit this. Current content of legion Gr05: There is a Titan, Cyclops, Gargoyle, Gargoyle, Centaur, Centaur Pick the creature type you want to reveal: There is a Cyclops, Gargoyle I can't pick anything. Tried clicking on it numerous times. Nothing will select and it is stuck on this dialog box. Not sure why this happening... but thank you for sticking it out with me. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 20:12 Message: You are correct. I typed the name in, it found it and ran fine. Well.. I can play now. yay! ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 20:08 Message: K so, I opened the default kevin.cfg and added those lines to it: Auto\ pick\ markers=true Auto\ pick\ color=true Favorite\ colors=Green And it worked. The game started. Made me green in fact. So far so good to, I was able to split a stack. Move the unit. Recruit. And watched the computer take it's move as well. So not sure why it wasn't working but it is now. Want to continue to troubleshoot? I guess I can always play green. :p ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:06 Message: No, you cannot "pick" the name kevinnew - it does not offer all "names that may exist". You choose the name on "Players" tab, On left side, Choose HUman, on right side type the name. 2nd Line, choose e.g. "SimpleAI", it fills right side with <byColor> or something, thats ok, Type there in first line the name kevinnew, and when game starts, it goes looking for a file Colossus-kewvinnew.cfg [and if it wouldn't exist, create it, sooner or later, after GUI / preferences changes]. Now we pre-create that file, so that it skips the color picking dialog because it would find a value to say "auto pick" from the file. -Cle. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 19:59 Message: btw, I did try and run the Colossus.jnlp stand alone and brings up the welcome screen, I hit ok, and the Game setup screen appears. I still can't choose newkevin and when I run it, once again I can not pick any of the colors. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 19:57 Message: I'll start from the beginning: • I open a folder I extracted all the files to from the .zip • I double click on run.bat A cmd window pops up with: C:\Documents and Settings\kevin\Desktop\collossus>cd "c:\Documents and Settings\kevin\Desktop\collossus\" C:\Documents and Settings\kevin\Desktop\collossus>java -Djava.util.logging.config.file=logging.properties -XMx256M -jar Colossus.jar Then what looks like the main program appears. It is the game setup screen. I make player one a human player and choose Kevin as the type. I make the 2nd player a SimpleAI and choose <By color> for the type. I leave everything else as is. (btw the top says Running Colossus Version 0.12.0-beta1 (revision 4970) on etc...) • I pick New game. The game appears to start, I can see the grid in the background with all the hills, deserts, etc. A small box with Pick a Color appears. I can move this box around. But I can not pick a color. I've tried clicking on every single one. I've tried pressing G, e, o, etc. I've tried Ctrl/Alt combinations, nothing. I can not close it either. I have to force it to shutdown. In Task Manager it shows that it is still running... so I don't THINK it is locked up. I do NOT see any other windows anywhere that I might need to click. I've even tried Alt+Tab and Ctrl+Tab to check. • I went ahead and did a search for the .colossus folder. I found it. It has 5 files in it. Colossus-netclient.cfg Colossus-red.cfg Colossus-server.cfg Colossus-kevin.cfg Colossus-kevin1.cfg • I went ahead and created a new .cfg file. I named it Colossus-kevinnew.cfg. I added these lines to it: Auto\ pick\ markers=true Auto\ pick\ color=true Favorite\ colors=Green Interestingly here, when I started the program, I could not choose kevinnew. I could only still see kevin. I searched my entire computer to see if the .cfg files might also be somewhere else but I could only find them under \\documents and settings\kevin\desktop\collossus • Ok so I tried your command prompt idea. I even ran the command from within the path and I kept getting this error... Unable to access jarfile Colossus.jar I can't imagine it being a graphical error... the program still seems to be running fine, I just can't select any color. In Task Manager it doesn't say "not responding". So I will wait for your reply. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 19:06 Message: ok, XP with SP3 and Sun Java 6 ( 1.6.x ). All right, that should work. ( I may have in use SP2 but still). E.g. "Windows Vista" or "Windows 7" are more "exotic" for me. Sun Java is good also. Did you get the "Welcome to Release 0.12.0" dialog and click it away? (if not, it might have lurked around in the background hidden behind some other window and block the mouse/keyboard input or whatever ("modal dialog"). Should technically not happen/be possible, but one has seen stranger things happen.... The History.java is one of the source files, not relevant. > The only .cf files I could find are WebServer.cf, WebServer_unix.cf, > and WebServer_win.cf. Do you want me to add a line into one of these? No. They are part of the "sources" as well, in some sense. Once started, Colossus will create a directory ".colossus" (and 2 ... [truncated message content] |
|
From: SourceForge.net <no...@so...> - 2011-02-10 20:56:45
|
Bugs item #3177305, was opened at 2011-02-10 14:40 Message generated for change (Comment added) made by cleka You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101939&aid=3177305&group_id=1939 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: GUI Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Nobody/Anonymous (nobody) Assigned to: Clemens Katzer (cleka) Summary: Can not pick color to start game Initial Comment: Recently tried to play this game. I downloaded both the java version and the zip file. Both seem to start up just fine. The board will appear and another small window with choose a color pops up. I can not click on any color. I've tried pressing the letters that correspond to the colors. I've tried alt and ctrl combinations. Nothing works. I have to force the program to quit. Ideas? ---------------------------------------------------------------------- >Comment By: Clemens Katzer (cleka) Date: 2011-02-10 22:56 Message: > not before monday OK, fits me fine, then I dont need to "stress" myself. Very nice that you mention it beforehand! And here we see it: "AWT-EventQueue-0" prio=6 tid=0x17042800 nid=0x1eac waiting for monitor entry [0x1759e000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruit.<init>(PickRecruit.java:168) at net.sf.colossus.gui.PickRecruit.pickRecruit(PickRecruit.java:186) - locked <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at net.sf.colossus.gui.ClientGUI.doPickRecruit(ClientGUI.java:2097) at net.sf.colossus.client.Client.doRecruit(Client.java:1763) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch" prio=6 tid=0x1701c000 nid=0x193c waiting for monitor entry [0x173bf000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x04048108> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) STRANGE: Two EDT / GUI graphics related threads, both related to the PickRecruit!?!? Have to crosscheck whether those two threads also both exist in when I run it. Thanks for the provided infos, let's contineue monday or something; but then, rather evenings (time is 5 hours ago until now). Because, I _am_ committed to fix such issues, but its hard to fix if I cant reproduce them... BR & Have a nice weekend! -Clemens ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 22:52 Message: Ok, I tried it again... made it even bigger: Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C:\Documents and Settings\thr85850>"C:\Documents and Settings\thr85850\Desktop\collossus\run.bat" C:\Documents and Settings\thr85850>cd "C:\Documents and Settings\thr85850\Desktop\collossus\" C:\Documents and Settings\thr85850\Desktop\collossus>java -Djava.util.logging.config.file=logging.properties -Xmx256M -jar Colossus.jar 2011-02-10 14:50:27 Full thread dump Java HotSpot(TM) Client VM (14.3-b01 mixed mode): "Client Gold" prio=6 tid=0x177d9800 nid=0x56c runnable [0x17d2f000] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(Unknown Source) at sun.nio.cs.StreamDecoder.readBytes(Unknown Source) at sun.nio.cs.StreamDecoder.implRead(Unknown Source) at sun.nio.cs.StreamDecoder.read(Unknown Source) - locked <0x041a1880> (a java.io.InputStreamReader) at java.io.InputStreamReader.read(Unknown Source) at java.io.BufferedReader.fill(Unknown Source) at java.io.BufferedReader.readLine(Unknown Source) - locked <0x041a1880> (a java.io.InputStreamReader) at java.io.BufferedReader.readLine(Unknown Source) at net.sf.colossus.client.SocketClientThread.waitForLine(SocketClientThread.java:504) at net.sf.colossus.client.SocketClientThread.readAndParseUntilDone(SocketClientThread.java:419) at net.sf.colossus.client.SocketClientThread.run(SocketClientThread.java:373) "Client kevin" prio=6 tid=0x177e7400 nid=0x1634 runnable [0x17cdf000] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(Unknown Source) at sun.nio.cs.StreamDecoder.readBytes(Unknown Source) at sun.nio.cs.StreamDecoder.implRead(Unknown Source) at sun.nio.cs.StreamDecoder.read(Unknown Source) - locked <0x04189358> (a java.io.InputStreamReader) at java.io.InputStreamReader.read(Unknown Source) at java.io.BufferedReader.fill(Unknown Source) at java.io.BufferedReader.readLine(Unknown Source) - locked <0x04189358> (a java.io.InputStreamReader) at java.io.BufferedReader.readLine(Unknown Source) at net.sf.colossus.client.SocketClientThread.waitForLine(SocketClientThread.java:504) at net.sf.colossus.client.SocketClientThread.readAndParseUntilDone(SocketClientThread.java:419) at net.sf.colossus.client.SocketClientThread.run(SocketClientThread.java:373) "Thread-4" prio=6 tid=0x17701400 nid=0x1248 runnable [0x17c3f000] java.lang.Thread.State: RUNNABLE at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method) at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(Unknown Source) at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(Unknown Source) at sun.nio.ch.WindowsSelectorImpl.doSelect(Unknown Source) at sun.nio.ch.SelectorImpl.lockAndDoSelect(Unknown Source) - locked <0x0417bd60> (a sun.nio.ch.Util$1) - locked <0x0417bd70> (a java.util.Collections$UnmodifiableSet) - locked <0x0417bce8> (a sun.nio.ch.WindowsSelectorImpl) at sun.nio.ch.SelectorImpl.select(Unknown Source) at net.sf.colossus.server.Server.handleOutsideChanges(Server.java:439) at net.sf.colossus.server.Server.waitOnSelector(Server.java:398) at net.sf.colossus.server.Server.run(Server.java:227) "TimerQueue" daemon prio=6 tid=0x176dd000 nid=0x1dd0 in Object.wait() [0x17a9f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x04165ee0> (a javax.swing.TimerQueue) at javax.swing.TimerQueue.run(Unknown Source) - locked <0x04165ee0> (a javax.swing.TimerQueue) at java.lang.Thread.run(Unknown Source) "AWT-EventQueue-0" prio=6 tid=0x1703ac00 nid=0x1a08 waiting for monitor entry [0x1759e000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02aa5580> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruit.<init>(PickRecruit.java:168) at net.sf.colossus.gui.PickRecruit.pickRecruit(PickRecruit.java:186) - locked <0x138642d8> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at net.sf.colossus.gui.ClientGUI.doPickRecruit(ClientGUI.java:2097) at net.sf.colossus.client.Client.doRecruit(Client.java:1763) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch" prio=6 tid=0x17022400 nid=0x1bb8 waiting for monitor entry [0x173bf000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x138642d8> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02aa5580> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x040480d0> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) "AWT-Windows" daemon prio=6 tid=0x17018800 nid=0x1694 runnable [0x1729f000] java.lang.Thread.State: RUNNABLE at sun.awt.windows.WToolkit.eventLoop(Native Method) at sun.awt.windows.WToolkit.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "AWT-Shutdown" prio=6 tid=0x17017800 nid=0x410 in Object.wait() [0x1724f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0402d038> (a java.lang.Object) at java.lang.Object.wait(Object.java:485) at sun.awt.AWTAutoShutdown.run(Unknown Source) - locked <0x0402d038> (a java.lang.Object) at java.lang.Thread.run(Unknown Source) "Java2D Disposer" daemon prio=10 tid=0x17011400 nid=0x1fd8 in Object.wait() [0x171ff000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0402d0c8> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x0402d0c8> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) at sun.java2d.Disposer.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "Low Memory Detector" daemon prio=6 tid=0x16c80400 nid=0x1a3c runnable [0x00000000] java.lang.Thread.State: RUNNABLE "CompilerThread0" daemon prio=10 tid=0x16c7a400 nid=0x11c4 waiting on condition [0x00000000] java.lang.Thread.State: RUNNABLE "Attach Listener" daemon prio=10 tid=0x16c78c00 nid=0x13ac runnable [0x00000000] java.lang.Thread.State: RUNNABLE "Signal Dispatcher" daemon prio=10 tid=0x16c77800 nid=0xdac waiting on condition [0x00000000] java.lang.Thread.State: RUNNABLE "Finalizer" daemon prio=8 tid=0x16c67800 nid=0x1860 in Object.wait() [0x16ddf000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x03ebd718> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x03ebd718> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source) "Reference Handler" daemon prio=10 tid=0x16c62c00 nid=0x1ae0 in Object.wait() [0x16d8f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x03ebd7a0> (a java.lang.ref.Reference$Lock) at java.lang.Object.wait(Object.java:485) at java.lang.ref.Reference$ReferenceHandler.run(Unknown Source) - locked <0x03ebd7a0> (a java.lang.ref.Reference$Lock) "main" prio=6 tid=0x003b6400 nid=0x1540 in Object.wait() [0x009df000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0417d9d0> (a java.lang.Object) at java.lang.Object.wait(Object.java:485) at net.sf.colossus.server.Server.waitUntilGameFinishes(Server.java:780) - locked <0x0417d9d0> (a java.lang.Object) at net.sf.colossus.server.GameServerSide.cleanupWhenGameOver(GameServerSide.java:401) at net.sf.colossus.server.GameServerSide.startNewGameAndWaitUntilOver(GameServerSide.java:454) at net.sf.colossus.appmain.Start.setupAndLoop(Start.java:663) at net.sf.colossus.appmain.Start.main(Start.java:874) "VM Thread" prio=10 tid=0x16c5fc00 nid=0x187c runnable "VM Periodic Task Thread" prio=10 tid=0x16c82c00 nid=0x1a24 waiting on condition JNI global references: 1447 Found one Java-level deadlock: ============================= "AWT-EventQueue-0": waiting to lock monitor 0x177d1804 (object 0x02aa5580, a java.lang.Object), which is held by "EventQueueMonitor-ComponentEvtDispatch" "EventQueueMonitor-ComponentEvtDispatch": waiting to lock monitor 0x176eb214 (object 0x138642d8, a java.lang.Class), which is held by "AWT-EventQueue-0" Java stack information for the threads listed above: =================================================== "AWT-EventQueue-0": at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02aa5580> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruit.<init>(PickRecruit.java:168) at net.sf.colossus.gui.PickRecruit.pickRecruit(PickRecruit.java:186) - locked <0x138642d8> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at net.sf.colossus.gui.ClientGUI.doPickRecruit(ClientGUI.java:2097) at net.sf.colossus.client.Client.doRecruit(Client.java:1763) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch": at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x138642d8> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02aa5580> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x040480d0> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) Found 1 deadlock. Heap def new generation total 960K, used 819K [0x02a90000, 0x02b90000, 0x03e40000) eden space 896K, 84% used [0x02a90000, 0x02b4e030, 0x02b70000) from space 64K, 93% used [0x02b80000, 0x02b8ef48, 0x02b90000) to space 64K, 0% used [0x02b70000, 0x02b70000, 0x02b80000) tenured generation total 10940K, used 9911K [0x03e40000, 0x048ef000, 0x12a90000) the space 10940K, 90% used [0x03e40000, 0x047eddf8, 0x047ede00, 0x048ef000) compacting perm gen total 14336K, used 14166K [0x12a90000, 0x13890000, 0x16a90000) the space 14336K, 98% used [0x12a90000, 0x13865a58, 0x13865c00, 0x13890000) No shared spaces configured. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 22:48 Message: Thanks for walking me through this and all. Just so you know I will not be able to respond to you again until Monday. I stretched it to fit my entire screen.... and I'm running a big screen. lol That was funny about finding an old laptop. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 22:46 Message: did you make window big enough ? Seems begin of it is missing again. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 22:43 Message: Yeah. As I almost expected: > Found 1 deadlock. Analyzing that and thinking how to go further will take some time. But I have to go sleeping now (22:40 here in Finland) and I have to get up early tomorrow. I try to look deeper into it tomorrow. Meanwhile, can you find a 5 year old laptop somewhere? ;-) (namely, any computer with one CPU or core only...) Chances are there it works fine. >btw, I couldn't copy and paste the java console because when the > program locked it wouldn't let me select the console either. Ah, right! And ah, you saw the deadlock reported also. Br, Clemens ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 22:40 Message: btw, I couldn't copy and paste the java console because when the program locked it wouldn't let me select the console either. and looks like your suspicions are right about that dead lock... shows below it found 1. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 22:38 Message: holy moly... its a lot... here goes: at net.sf.colossus.client.SocketClientThread.readAndParseUntilDone(SocketClientThread.java:419) at net.sf.colossus.client.SocketClientThread.run(SocketClientThread.java:373) "Client kevin" prio=6 tid=0x170d5400 nid=0x1eb4 runnable [0x17cdf000] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(Unknown Source) at sun.nio.cs.StreamDecoder.readBytes(Unknown Source) at sun.nio.cs.StreamDecoder.implRead(Unknown Source) at sun.nio.cs.StreamDecoder.read(Unknown Source) - locked <0x041a4f00> (a java.io.InputStreamReader) at java.io.InputStreamReader.read(Unknown Source) at java.io.BufferedReader.fill(Unknown Source) at java.io.BufferedReader.readLine(Unknown Source) - locked <0x041a4f00> (a java.io.InputStreamReader) at java.io.BufferedReader.readLine(Unknown Source) at net.sf.colossus.client.SocketClientThread.waitForLine(SocketClientThread.java:504) at net.sf.colossus.client.SocketClientThread.readAndParseUntilDone(SocketClientThread.java:419) at net.sf.colossus.client.SocketClientThread.run(SocketClientThread.java:373) "Thread-4" prio=6 tid=0x1716a800 nid=0x1428 runnable [0x17c3f000] java.lang.Thread.State: RUNNABLE at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method) at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(Unknown Source) at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(Unknown Source) at sun.nio.ch.WindowsSelectorImpl.doSelect(Unknown Source) at sun.nio.ch.SelectorImpl.lockAndDoSelect(Unknown Source) - locked <0x0418f468> (a sun.nio.ch.Util$1) - locked <0x0418f478> (a java.util.Collections$UnmodifiableSet) - locked <0x0418f3f0> (a sun.nio.ch.WindowsSelectorImpl) at sun.nio.ch.SelectorImpl.select(Unknown Source) at net.sf.colossus.server.Server.handleOutsideChanges(Server.java:439) at net.sf.colossus.server.Server.waitOnSelector(Server.java:398) at net.sf.colossus.server.Server.run(Server.java:227) "TimerQueue" daemon prio=6 tid=0x176e6400 nid=0x1f8c in Object.wait() [0x17a9f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x04168e60> (a javax.swing.TimerQueue) at javax.swing.TimerQueue.run(Unknown Source) - locked <0x04168e60> (a javax.swing.TimerQueue) at java.lang.Thread.run(Unknown Source) "AWT-EventQueue-0" prio=6 tid=0x17042800 nid=0x1eac waiting for monitor entry [0x1759e000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruit.<init>(PickRecruit.java:168) at net.sf.colossus.gui.PickRecruit.pickRecruit(PickRecruit.java:186) - locked <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at net.sf.colossus.gui.ClientGUI.doPickRecruit(ClientGUI.java:2097) at net.sf.colossus.client.Client.doRecruit(Client.java:1763) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch" prio=6 tid=0x1701c000 nid=0x193c waiting for monitor entry [0x173bf000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x04048108> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) "AWT-Windows" daemon prio=6 tid=0x16ff8400 nid=0x1d74 runnable [0x1729f000] java.lang.Thread.State: RUNNABLE at sun.awt.windows.WToolkit.eventLoop(Native Method) at sun.awt.windows.WToolkit.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "AWT-Shutdown" prio=6 tid=0x17001c00 nid=0x1844 in Object.wait() [0x1724f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0402cf70> (a java.lang.Object) at java.lang.Object.wait(Object.java:485) at sun.awt.AWTAutoShutdown.run(Unknown Source) - locked <0x0402cf70> (a java.lang.Object) at java.lang.Thread.run(Unknown Source) "Java2D Disposer" daemon prio=10 tid=0x17018800 nid=0x1cbc in Object.wait() [0x171ff000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0402d000> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x0402d000> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) at sun.java2d.Disposer.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "Low Memory Detector" daemon prio=6 tid=0x16c80400 nid=0x1cac runnable [0x00000000] java.lang.Thread.State: RUNNABLE "CompilerThread0" daemon prio=10 tid=0x16c7a400 nid=0x450 waiting on condition [0x00000000] java.lang.Thread.State: RUNNABLE "Attach Listener" daemon prio=10 tid=0x16c78c00 nid=0x1d44 runnable [0x00000000] java.lang.Thread.State: RUNNABLE "Signal Dispatcher" daemon prio=10 tid=0x16c77800 nid=0x1b30 waiting on condition [0x00000000] java.lang.Thread.State: RUNNABLE "Finalizer" daemon prio=8 tid=0x16c67800 nid=0x19cc in Object.wait() [0x16ddf000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x03ebd718> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x03ebd718> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source) "Reference Handler" daemon prio=10 tid=0x16c62c00 nid=0x1eb0 in Object.wait() [0x16d8f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x03ebd7a0> (a java.lang.ref.Reference$Lock) at java.lang.Object.wait(Object.java:485) at java.lang.ref.Reference$ReferenceHandler.run(Unknown Source) - locked <0x03ebd7a0> (a java.lang.ref.Reference$Lock) "main" prio=6 tid=0x003b6400 nid=0x1e2c in Object.wait() [0x009df000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x041915c8> (a java.lang.Object) at java.lang.Object.wait(Object.java:485) at net.sf.colossus.server.Server.waitUntilGameFinishes(Server.java:780) - locked <0x041915c8> (a java.lang.Object) at net.sf.colossus.server.GameServerSide.cleanupWhenGameOver(GameServerSide.java:401) at net.sf.colossus.server.GameServerSide.startNewGameAndWaitUntilOver(GameServerSide.java:454) at net.sf.colossus.appmain.Start.setupAndLoop(Start.java:663) at net.sf.colossus.appmain.Start.main(Start.java:874) "VM Thread" prio=10 tid=0x16c5fc00 nid=0x10fc runnable "VM Periodic Task Thread" prio=10 tid=0x16c82c00 nid=0x1a00 waiting on condition JNI global references: 1473 Found one Java-level deadlock: ============================= "AWT-EventQueue-0": waiting to lock monitor 0x177e5b1c (object 0x02ba1288, a java.lang.Object), which is held by "EventQueueMonitor-ComponentEvtDispatch" "EventQueueMonitor-ComponentEvtDispatch": waiting to lock monitor 0x176e8c54 (object 0x13872538, a java.lang.Class), which is held by "AWT-EventQueue-0" Java stack information for the threads listed above: =================================================== "AWT-EventQueue-0": at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruit.<init>(PickRecruit.java:168) at net.sf.colossus.gui.PickRecruit.pickRecruit(PickRecruit.java:186) - locked <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at net.sf.colossus.gui.ClientGUI.doPickRecruit(ClientGUI.java:2097) at net.sf.colossus.client.Client.doRecruit(Client.java:1763) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch": at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x04048108> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) Found 1 deadlock. Heap def new generation total 1216K, used 704K [0x02a90000, 0x02be0000, 0x03e40000) eden space 1088K, 57% used [0x02a90000, 0x02b2b388, 0x02ba0000) from space 128K, 65% used [0x02ba0000, 0x02bb4f20, 0x02bc0000) to space 128K, 0% used [0x02bc0000, 0x02bc0000, 0x02be0000) tenured generation total 15784K, used 9845K [0x03e40000, 0x04daa000, 0x12a90000) the space 15784K, 62% used [0x03e40000, 0x047dd428, 0x047dd600, 0x04daa000) compacting perm gen total 14336K, used 14223K [0x12a90000, 0x13890000, 0x16a90000) the space 14336K, 99% used [0x12a90000, 0x13873d10, 0x13873e00, 0x13890000) No shared spaces configured. Terminate batch job (Y/N)? ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 22:27 Message: NOTE, from the Java console log you should be able to copy paste! (mark with mouse and Ctrl-C or right click -> copy.) Only from that Colossus own "About" window you can't copy paste. Not sure whether that affinity helps; Colossus is "multithreaded", so if there is more than one core existing it might still use a 2nd. (affinity to me means merely, it would _preferrably_ run on that core). My suspicion is it is some kind of deadlock, caused by the way how those dialogs are called: "synchronous" , and in the "Event Dispatcher thread". That it happens randomly is much more "reasonable" than that some dialogs lock and some not. Such random misbehaviors we had earlier. They were fixed, but merely "somehow" and "when it happened", not systematically "rewrite everything to be thread-safe by design". Can you try the following: Run it from commandline. If possible, make the commandline window as big as possible, like window size (field 3 +4) width 150 height 50, screen buffer size (1+2 fields) 150 and 3000.) (to do so, on the cmdline window, click the smal C:\ in top LEFT corner, Properties). When it looks, make the cmdline box the active window and press Ctrl-Break (bottom left and top right keys of the keyboard together ;-)) Lot of glibberish would be printed to screen. Same top left icon, Edit => Select all ; copy (ctrl-c or from same menu copy). Send me what's there (or post it here). That's the "which thread is doing what at the moment" summary. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 22:10 Message: yes I was able to limit the program running on one processer. Or at least I told it to set its affinity to Core 0 from the processes. It still locked up. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 22:08 Message: I did some further testing... it will actually lock up randomly still. Doesn't matter if I can recruit one or two. :/ ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 22:06 Message: Ran java -version from command window: java version "1.6.0_17" Java(TM) SE Runtime Environment (build 1.6.0_17-b04) Java HotSpot(TM) Client VM (build 14.3-b01, mixed mode) I figured out how to get into the Java Options. Logging was turned off. So now I have a Java Console window when the program opens. So I tried a game, and it got stuck after 2nd time I tried to add a recruit. Btw, I notice it seems to do it when I can choose more than one recruit. Here is the last few lines of the log: (man... this is a lot of typing and I'm not sure it is really showing any errors. It just shows the last step before it "froze". INFO: Legion Gr09 (Lobster) in Tower hex 600 moves to Jungle hex 135 entering on RIGHT Feb 10, 2011 2:00:47 PM net.sf.colossus.server.GameServerSide$GamePhaseAdvancer advancePhaseInternal INFO:Phase advances to Muster Feb 10, 2011 2:00:49 PM net.sf.colossus.server.LegionServerSide addCreature INFO: Added Ceentaur -now there are 20 left. Feb 10, 2011 2:00:49 PM net.sf.colossus.server.GameServerSide doRecruit INFO: Legion Gr05 in Woods hex 39 recruits Centaur with 1 Centaur ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 21:37 Message: > It is a quad core system. hm. That might be part of the reason. I have some wild guess what it could be... Can you tell me exact java version? Help => About tells it. It tells also Log directory, there would be a file Colossus0.log. (The *0,log is always the newest; if new starts, it renames 1 to 2, 0 to 1nd creates new 0.log file). Sorry you have to type the stuff from Help => About, no copy paste. Or make a screenshot if you know how. If you wish you can also send it to me via mail (my SF username, i.e. the "cleka", then the magic a-like character, then users.sourceforge.net . Can you tune your system to use one CPU only? ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 21:15 Message: We were at a party and someone brought the board game Titan over. It confused the heck out of us (never even made it around once) but it seemed interesting. I did a search and found you making an app for it. So I thought I'd try it out. I am definitely brand new to Titan, so I expect to actually be the only player on here that gets defeated by your "dumb" AI. It is a quad core system. No I can not close the the dialog box with the small "X". In fact I can't do anything except shut it down. I selected Auto Pick Recruiters... and now I think it hangs up on actual recruiting now. It appears random too. Sometimes I can recruit a whole stack (7) without "locking up" and other times it will do it after the first recruit. (btw... sometimes I can't move a stack. That just a rule I'm not aware of?) ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:50 Message: Do you happen to know, do you have more than one CPU or CPU core? ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:43 Message: BTW, are you "well familiar with Titan, just new to use Colossus, or need to learn also "how game works, rules, strategy, etc." first? Once you are familar with the game and the usage, you could even try the public game server (by clicking the "WebClient" button), where you could find other "real people" to play against. (in contrast to the AI ("Artificial Intelligence") i.e. Robot players... However to notice is, people are usually online in afternoon/evening for US time. At other time you might log in there and be alone 30 or 60 mins before any other drop by. However, that's anyway more recommded only a) it does not hang for you any more and b) once you are "fluent" in playing. It's annoying for others when you need, let's say, 1.5 minutes for each individual move, split, recruit etc.... => Practicing to get faster better with AI players.They are all in all rather dump, but for first few weeks ok. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:35 Message: okay (or not okay), but that's something. In worst case I have to make you a special version which prints something to screen for every line of code before and around where it calls that "Pick Recruiter" dialog :)) That's what I meant, you might run into a "block" somewhat later with some other dialog. But the recruit dialog itself worked?? Strange; they are very similarly programmed. Some more "smalltalk" :o) > Made me green in fact. > I guess I can always play green. :p :) You can try: Window => Preferences => "Color" tab. Click on "Select" and choose another color. Next time you START a game it would choose that color for you automatically. (all those "Autoplay" options do certain things for you. So in fact you could enable "Auto Pick Recruiter", since that one is rather unimportant, as long as you can choose an actual Recruit. (so we can circumvent THIS cliff for now). But there might be other dialogs later to block you as well. And/or, in fact that's an interesting thing to try, whether that color chooser dialog would work??? If not, can you close it with the "x" shaped icon in upper right corner? (the initial color pick dialog CAN'T be closed that way, or rather, if one does, it reappears immediately.) So, sure, I'd like to continue troubleshoot this. Let's try that above for now, have to bring kids to bed now. -Cle. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 20:17 Message: So I've been running through this... moving, recruiting, etc... then I came to a point where it won't let me pick again. :/ Says: kevinnew: Pick Recruiter in Brush hex17 There is more than one way you can recruit this. Current content of legion Gr05: There is a Titan, Cyclops, Gargoyle, Gargoyle, Centaur, Centaur Pick the creature type you want to reveal: There is a Cyclops, Gargoyle I can't pick anything. Tried clicking on it numerous times. Nothing will select and it is stuck on this dialog box. Not sure why this happening... but thank you for sticking it out with me. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 20:12 Message: You are correct. I typed the name in, it found it and ran fine. Well.. I can play now. yay! ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 20:08 Message: K so, I opened the default kevin.cfg and added those lines to it: Auto\ pick\ markers=true Auto\ pick\ color=true Favorite\ colors=Green And it worked. The game started. Made me green in fact. So far so good to, I was able to split a stack. Move the unit. Recruit. And watched the computer take it's move as well. So not sure why it wasn't working but it is now. Want to continue to troubleshoot? I guess I can always play green. :p ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:06 Message: No, you cannot "pick" the name kevinnew - it does not offer all "names that may exist". You choose the name on "Players" tab, On left side, Choose HUman, on right side type the name. 2nd Line, choose e.g. "SimpleAI", it fills right side with <byColor> or something, thats ok, Type there in first line the name kevinnew, and when game starts, it goes looking for a file Colossus-kewvinnew.cfg [and if it wouldn't exist, create it, sooner or later, after GUI / preferences changes]. Now we pre-create that file, so that it skips the color picking dialog because it would find a value to say "auto pick" from the file. -Cle. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 19:59 Message: btw, I did try and run the Colossus.jnlp stand alone and brings up the welcome screen, I hit ok, and the Game setup screen appears. I still can't choose newkevin and when I run it, once again I can not pick any of the colors. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 19:57 Message: I'll start from the beginning: • I open a folder I extracted all the files to from the .zip • I double click on run.bat A cmd window pops up with: C:\Documents and Settings\kevin\Desktop\collossus>cd "c:\Documents and Settings\kevin\Desktop\collossus\" C:\Documents and Settings\kevin\Desktop\collossus>java -Djava.util.logging.config.file=logging.properties -XMx256M -jar Colossus.jar Then what looks like the main program appears. It is the game setup screen. I make player one a human player and choose Kevin as the type. I make the 2nd player a SimpleAI and choose <By color> for the type. I leave everything else as is. (btw the top says Running Colossus Version 0.12.0-beta1 (revision 4970) on etc...) • I pick New game. The game appears to start, I can see the grid in the background with all the hills, deserts, etc. A small box with Pick a Color appears. I can move this box around. But I can not pick a color. I've tried clicking on every single one. I've tried pressing G, e, o, etc. I've tried Ctrl/Alt combinations, nothing. I can not close it either. I have to force it to shutdown. In Task Manager it shows that it is still running... so I don't THINK it is locked up. I do NOT see any other windows anywhere that I might need to click. I've even tried Alt+Tab and Ctrl+Tab to check. • I went ahead and did a search for the .colossus folder. I found it. It has 5 files in it. Colossus-netclient.cfg Colossus-red.cfg Colossus-server.cfg Colossus-kevin.cfg Colossus-kevin1.cfg • I went ahead and created a new .cfg file. I named it Colossus-kevinnew.cfg. I added these lines to it: Auto\ pick\ markers=true Auto\ pick\ color=true Favorite\ colors=Green Interestingly here, when I started the program, I could not choose kevinnew. I could only still see kevin. I searched my entire computer to see if the .cfg files might also be somewhere else but I could only find them under \\documents and settings\kevin\desktop\collossus • Ok so I tried your command prompt idea. I even ran the command from within the path and I kept getting this error... Unable to access jarfile Colossus.jar I can't imagine it being a graphical error... the program still seems to be running fine, I just can't select any color. In Task Manager it doesn't say "not responding". So I will wait for your reply. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 19:06 Message: ok, XP with SP3 and Sun Java 6 ( 1.6.x ). All right, that should work. ( I may have in use SP2 but still). E.g. "Windows Vista" or "Windows 7" are more "exotic" for me. Sun Java is good also. Did you get the "Welcome to Release 0.12.0" dialog and click it away? (if not, it might have lurked around in the background hidden behind some other window and block the mouse/keyboard input or whatever ("modal dialog"). Should technically not happen/be possible, but one has seen stranger things happen.... The History.java is one of the source files, not relevant. > The only .cf files I could find are WebServer.cf, WebServer_unix.cf, > and WebServer_win.cf. Do you want me to add a line into one of these? No. They are part of the "sources" as well, in some sense. Once started, Colossus will create a directory ".colossus" (and 2 files in it) "somewhere on your computer" - in what it considers to be "your home directory". What that exactly is, might vary... The home directory is under Windows _often_ something like: C:\Documents and Settings\Mike if you logged in to the computer with username Mike. Often you get there with right-click on Start button =>... [truncated message content] |
|
From: SourceForge.net <no...@so...> - 2011-02-10 20:52:21
|
Bugs item #3177305, was opened at 2011-02-10 12:40 Message generated for change (Comment added) made by nobody You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101939&aid=3177305&group_id=1939 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: GUI Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Nobody/Anonymous (nobody) Assigned to: Clemens Katzer (cleka) Summary: Can not pick color to start game Initial Comment: Recently tried to play this game. I downloaded both the java version and the zip file. Both seem to start up just fine. The board will appear and another small window with choose a color pops up. I can not click on any color. I've tried pressing the letters that correspond to the colors. I've tried alt and ctrl combinations. Nothing works. I have to force the program to quit. Ideas? ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 20:52 Message: Ok, I tried it again... made it even bigger: Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C:\Documents and Settings\thr85850>"C:\Documents and Settings\thr85850\Desktop\collossus\run.bat" C:\Documents and Settings\thr85850>cd "C:\Documents and Settings\thr85850\Desktop\collossus\" C:\Documents and Settings\thr85850\Desktop\collossus>java -Djava.util.logging.config.file=logging.properties -Xmx256M -jar Colossus.jar 2011-02-10 14:50:27 Full thread dump Java HotSpot(TM) Client VM (14.3-b01 mixed mode): "Client Gold" prio=6 tid=0x177d9800 nid=0x56c runnable [0x17d2f000] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(Unknown Source) at sun.nio.cs.StreamDecoder.readBytes(Unknown Source) at sun.nio.cs.StreamDecoder.implRead(Unknown Source) at sun.nio.cs.StreamDecoder.read(Unknown Source) - locked <0x041a1880> (a java.io.InputStreamReader) at java.io.InputStreamReader.read(Unknown Source) at java.io.BufferedReader.fill(Unknown Source) at java.io.BufferedReader.readLine(Unknown Source) - locked <0x041a1880> (a java.io.InputStreamReader) at java.io.BufferedReader.readLine(Unknown Source) at net.sf.colossus.client.SocketClientThread.waitForLine(SocketClientThread.java:504) at net.sf.colossus.client.SocketClientThread.readAndParseUntilDone(SocketClientThread.java:419) at net.sf.colossus.client.SocketClientThread.run(SocketClientThread.java:373) "Client kevin" prio=6 tid=0x177e7400 nid=0x1634 runnable [0x17cdf000] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(Unknown Source) at sun.nio.cs.StreamDecoder.readBytes(Unknown Source) at sun.nio.cs.StreamDecoder.implRead(Unknown Source) at sun.nio.cs.StreamDecoder.read(Unknown Source) - locked <0x04189358> (a java.io.InputStreamReader) at java.io.InputStreamReader.read(Unknown Source) at java.io.BufferedReader.fill(Unknown Source) at java.io.BufferedReader.readLine(Unknown Source) - locked <0x04189358> (a java.io.InputStreamReader) at java.io.BufferedReader.readLine(Unknown Source) at net.sf.colossus.client.SocketClientThread.waitForLine(SocketClientThread.java:504) at net.sf.colossus.client.SocketClientThread.readAndParseUntilDone(SocketClientThread.java:419) at net.sf.colossus.client.SocketClientThread.run(SocketClientThread.java:373) "Thread-4" prio=6 tid=0x17701400 nid=0x1248 runnable [0x17c3f000] java.lang.Thread.State: RUNNABLE at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method) at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(Unknown Source) at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(Unknown Source) at sun.nio.ch.WindowsSelectorImpl.doSelect(Unknown Source) at sun.nio.ch.SelectorImpl.lockAndDoSelect(Unknown Source) - locked <0x0417bd60> (a sun.nio.ch.Util$1) - locked <0x0417bd70> (a java.util.Collections$UnmodifiableSet) - locked <0x0417bce8> (a sun.nio.ch.WindowsSelectorImpl) at sun.nio.ch.SelectorImpl.select(Unknown Source) at net.sf.colossus.server.Server.handleOutsideChanges(Server.java:439) at net.sf.colossus.server.Server.waitOnSelector(Server.java:398) at net.sf.colossus.server.Server.run(Server.java:227) "TimerQueue" daemon prio=6 tid=0x176dd000 nid=0x1dd0 in Object.wait() [0x17a9f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x04165ee0> (a javax.swing.TimerQueue) at javax.swing.TimerQueue.run(Unknown Source) - locked <0x04165ee0> (a javax.swing.TimerQueue) at java.lang.Thread.run(Unknown Source) "AWT-EventQueue-0" prio=6 tid=0x1703ac00 nid=0x1a08 waiting for monitor entry [0x1759e000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02aa5580> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruit.<init>(PickRecruit.java:168) at net.sf.colossus.gui.PickRecruit.pickRecruit(PickRecruit.java:186) - locked <0x138642d8> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at net.sf.colossus.gui.ClientGUI.doPickRecruit(ClientGUI.java:2097) at net.sf.colossus.client.Client.doRecruit(Client.java:1763) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch" prio=6 tid=0x17022400 nid=0x1bb8 waiting for monitor entry [0x173bf000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x138642d8> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02aa5580> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x040480d0> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) "AWT-Windows" daemon prio=6 tid=0x17018800 nid=0x1694 runnable [0x1729f000] java.lang.Thread.State: RUNNABLE at sun.awt.windows.WToolkit.eventLoop(Native Method) at sun.awt.windows.WToolkit.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "AWT-Shutdown" prio=6 tid=0x17017800 nid=0x410 in Object.wait() [0x1724f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0402d038> (a java.lang.Object) at java.lang.Object.wait(Object.java:485) at sun.awt.AWTAutoShutdown.run(Unknown Source) - locked <0x0402d038> (a java.lang.Object) at java.lang.Thread.run(Unknown Source) "Java2D Disposer" daemon prio=10 tid=0x17011400 nid=0x1fd8 in Object.wait() [0x171ff000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0402d0c8> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x0402d0c8> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) at sun.java2d.Disposer.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "Low Memory Detector" daemon prio=6 tid=0x16c80400 nid=0x1a3c runnable [0x00000000] java.lang.Thread.State: RUNNABLE "CompilerThread0" daemon prio=10 tid=0x16c7a400 nid=0x11c4 waiting on condition [0x00000000] java.lang.Thread.State: RUNNABLE "Attach Listener" daemon prio=10 tid=0x16c78c00 nid=0x13ac runnable [0x00000000] java.lang.Thread.State: RUNNABLE "Signal Dispatcher" daemon prio=10 tid=0x16c77800 nid=0xdac waiting on condition [0x00000000] java.lang.Thread.State: RUNNABLE "Finalizer" daemon prio=8 tid=0x16c67800 nid=0x1860 in Object.wait() [0x16ddf000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x03ebd718> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x03ebd718> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source) "Reference Handler" daemon prio=10 tid=0x16c62c00 nid=0x1ae0 in Object.wait() [0x16d8f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x03ebd7a0> (a java.lang.ref.Reference$Lock) at java.lang.Object.wait(Object.java:485) at java.lang.ref.Reference$ReferenceHandler.run(Unknown Source) - locked <0x03ebd7a0> (a java.lang.ref.Reference$Lock) "main" prio=6 tid=0x003b6400 nid=0x1540 in Object.wait() [0x009df000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0417d9d0> (a java.lang.Object) at java.lang.Object.wait(Object.java:485) at net.sf.colossus.server.Server.waitUntilGameFinishes(Server.java:780) - locked <0x0417d9d0> (a java.lang.Object) at net.sf.colossus.server.GameServerSide.cleanupWhenGameOver(GameServerSide.java:401) at net.sf.colossus.server.GameServerSide.startNewGameAndWaitUntilOver(GameServerSide.java:454) at net.sf.colossus.appmain.Start.setupAndLoop(Start.java:663) at net.sf.colossus.appmain.Start.main(Start.java:874) "VM Thread" prio=10 tid=0x16c5fc00 nid=0x187c runnable "VM Periodic Task Thread" prio=10 tid=0x16c82c00 nid=0x1a24 waiting on condition JNI global references: 1447 Found one Java-level deadlock: ============================= "AWT-EventQueue-0": waiting to lock monitor 0x177d1804 (object 0x02aa5580, a java.lang.Object), which is held by "EventQueueMonitor-ComponentEvtDispatch" "EventQueueMonitor-ComponentEvtDispatch": waiting to lock monitor 0x176eb214 (object 0x138642d8, a java.lang.Class), which is held by "AWT-EventQueue-0" Java stack information for the threads listed above: =================================================== "AWT-EventQueue-0": at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02aa5580> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruit.<init>(PickRecruit.java:168) at net.sf.colossus.gui.PickRecruit.pickRecruit(PickRecruit.java:186) - locked <0x138642d8> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at net.sf.colossus.gui.ClientGUI.doPickRecruit(ClientGUI.java:2097) at net.sf.colossus.client.Client.doRecruit(Client.java:1763) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch": at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x138642d8> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02aa5580> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x040480d0> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) Found 1 deadlock. Heap def new generation total 960K, used 819K [0x02a90000, 0x02b90000, 0x03e40000) eden space 896K, 84% used [0x02a90000, 0x02b4e030, 0x02b70000) from space 64K, 93% used [0x02b80000, 0x02b8ef48, 0x02b90000) to space 64K, 0% used [0x02b70000, 0x02b70000, 0x02b80000) tenured generation total 10940K, used 9911K [0x03e40000, 0x048ef000, 0x12a90000) the space 10940K, 90% used [0x03e40000, 0x047eddf8, 0x047ede00, 0x048ef000) compacting perm gen total 14336K, used 14166K [0x12a90000, 0x13890000, 0x16a90000) the space 14336K, 98% used [0x12a90000, 0x13865a58, 0x13865c00, 0x13890000) No shared spaces configured. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 20:48 Message: Thanks for walking me through this and all. Just so you know I will not be able to respond to you again until Monday. I stretched it to fit my entire screen.... and I'm running a big screen. lol That was funny about finding an old laptop. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:46 Message: did you make window big enough ? Seems begin of it is missing again. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:43 Message: Yeah. As I almost expected: > Found 1 deadlock. Analyzing that and thinking how to go further will take some time. But I have to go sleeping now (22:40 here in Finland) and I have to get up early tomorrow. I try to look deeper into it tomorrow. Meanwhile, can you find a 5 year old laptop somewhere? ;-) (namely, any computer with one CPU or core only...) Chances are there it works fine. >btw, I couldn't copy and paste the java console because when the > program locked it wouldn't let me select the console either. Ah, right! And ah, you saw the deadlock reported also. Br, Clemens ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 20:40 Message: btw, I couldn't copy and paste the java console because when the program locked it wouldn't let me select the console either. and looks like your suspicions are right about that dead lock... shows below it found 1. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 20:38 Message: holy moly... its a lot... here goes: at net.sf.colossus.client.SocketClientThread.readAndParseUntilDone(SocketClientThread.java:419) at net.sf.colossus.client.SocketClientThread.run(SocketClientThread.java:373) "Client kevin" prio=6 tid=0x170d5400 nid=0x1eb4 runnable [0x17cdf000] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(Unknown Source) at sun.nio.cs.StreamDecoder.readBytes(Unknown Source) at sun.nio.cs.StreamDecoder.implRead(Unknown Source) at sun.nio.cs.StreamDecoder.read(Unknown Source) - locked <0x041a4f00> (a java.io.InputStreamReader) at java.io.InputStreamReader.read(Unknown Source) at java.io.BufferedReader.fill(Unknown Source) at java.io.BufferedReader.readLine(Unknown Source) - locked <0x041a4f00> (a java.io.InputStreamReader) at java.io.BufferedReader.readLine(Unknown Source) at net.sf.colossus.client.SocketClientThread.waitForLine(SocketClientThread.java:504) at net.sf.colossus.client.SocketClientThread.readAndParseUntilDone(SocketClientThread.java:419) at net.sf.colossus.client.SocketClientThread.run(SocketClientThread.java:373) "Thread-4" prio=6 tid=0x1716a800 nid=0x1428 runnable [0x17c3f000] java.lang.Thread.State: RUNNABLE at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method) at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(Unknown Source) at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(Unknown Source) at sun.nio.ch.WindowsSelectorImpl.doSelect(Unknown Source) at sun.nio.ch.SelectorImpl.lockAndDoSelect(Unknown Source) - locked <0x0418f468> (a sun.nio.ch.Util$1) - locked <0x0418f478> (a java.util.Collections$UnmodifiableSet) - locked <0x0418f3f0> (a sun.nio.ch.WindowsSelectorImpl) at sun.nio.ch.SelectorImpl.select(Unknown Source) at net.sf.colossus.server.Server.handleOutsideChanges(Server.java:439) at net.sf.colossus.server.Server.waitOnSelector(Server.java:398) at net.sf.colossus.server.Server.run(Server.java:227) "TimerQueue" daemon prio=6 tid=0x176e6400 nid=0x1f8c in Object.wait() [0x17a9f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x04168e60> (a javax.swing.TimerQueue) at javax.swing.TimerQueue.run(Unknown Source) - locked <0x04168e60> (a javax.swing.TimerQueue) at java.lang.Thread.run(Unknown Source) "AWT-EventQueue-0" prio=6 tid=0x17042800 nid=0x1eac waiting for monitor entry [0x1759e000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruit.<init>(PickRecruit.java:168) at net.sf.colossus.gui.PickRecruit.pickRecruit(PickRecruit.java:186) - locked <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at net.sf.colossus.gui.ClientGUI.doPickRecruit(ClientGUI.java:2097) at net.sf.colossus.client.Client.doRecruit(Client.java:1763) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch" prio=6 tid=0x1701c000 nid=0x193c waiting for monitor entry [0x173bf000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x04048108> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) "AWT-Windows" daemon prio=6 tid=0x16ff8400 nid=0x1d74 runnable [0x1729f000] java.lang.Thread.State: RUNNABLE at sun.awt.windows.WToolkit.eventLoop(Native Method) at sun.awt.windows.WToolkit.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "AWT-Shutdown" prio=6 tid=0x17001c00 nid=0x1844 in Object.wait() [0x1724f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0402cf70> (a java.lang.Object) at java.lang.Object.wait(Object.java:485) at sun.awt.AWTAutoShutdown.run(Unknown Source) - locked <0x0402cf70> (a java.lang.Object) at java.lang.Thread.run(Unknown Source) "Java2D Disposer" daemon prio=10 tid=0x17018800 nid=0x1cbc in Object.wait() [0x171ff000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0402d000> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x0402d000> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) at sun.java2d.Disposer.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "Low Memory Detector" daemon prio=6 tid=0x16c80400 nid=0x1cac runnable [0x00000000] java.lang.Thread.State: RUNNABLE "CompilerThread0" daemon prio=10 tid=0x16c7a400 nid=0x450 waiting on condition [0x00000000] java.lang.Thread.State: RUNNABLE "Attach Listener" daemon prio=10 tid=0x16c78c00 nid=0x1d44 runnable [0x00000000] java.lang.Thread.State: RUNNABLE "Signal Dispatcher" daemon prio=10 tid=0x16c77800 nid=0x1b30 waiting on condition [0x00000000] java.lang.Thread.State: RUNNABLE "Finalizer" daemon prio=8 tid=0x16c67800 nid=0x19cc in Object.wait() [0x16ddf000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x03ebd718> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x03ebd718> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source) "Reference Handler" daemon prio=10 tid=0x16c62c00 nid=0x1eb0 in Object.wait() [0x16d8f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x03ebd7a0> (a java.lang.ref.Reference$Lock) at java.lang.Object.wait(Object.java:485) at java.lang.ref.Reference$ReferenceHandler.run(Unknown Source) - locked <0x03ebd7a0> (a java.lang.ref.Reference$Lock) "main" prio=6 tid=0x003b6400 nid=0x1e2c in Object.wait() [0x009df000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x041915c8> (a java.lang.Object) at java.lang.Object.wait(Object.java:485) at net.sf.colossus.server.Server.waitUntilGameFinishes(Server.java:780) - locked <0x041915c8> (a java.lang.Object) at net.sf.colossus.server.GameServerSide.cleanupWhenGameOver(GameServerSide.java:401) at net.sf.colossus.server.GameServerSide.startNewGameAndWaitUntilOver(GameServerSide.java:454) at net.sf.colossus.appmain.Start.setupAndLoop(Start.java:663) at net.sf.colossus.appmain.Start.main(Start.java:874) "VM Thread" prio=10 tid=0x16c5fc00 nid=0x10fc runnable "VM Periodic Task Thread" prio=10 tid=0x16c82c00 nid=0x1a00 waiting on condition JNI global references: 1473 Found one Java-level deadlock: ============================= "AWT-EventQueue-0": waiting to lock monitor 0x177e5b1c (object 0x02ba1288, a java.lang.Object), which is held by "EventQueueMonitor-ComponentEvtDispatch" "EventQueueMonitor-ComponentEvtDispatch": waiting to lock monitor 0x176e8c54 (object 0x13872538, a java.lang.Class), which is held by "AWT-EventQueue-0" Java stack information for the threads listed above: =================================================== "AWT-EventQueue-0": at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruit.<init>(PickRecruit.java:168) at net.sf.colossus.gui.PickRecruit.pickRecruit(PickRecruit.java:186) - locked <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at net.sf.colossus.gui.ClientGUI.doPickRecruit(ClientGUI.java:2097) at net.sf.colossus.client.Client.doRecruit(Client.java:1763) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch": at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x04048108> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) Found 1 deadlock. Heap def new generation total 1216K, used 704K [0x02a90000, 0x02be0000, 0x03e40000) eden space 1088K, 57% used [0x02a90000, 0x02b2b388, 0x02ba0000) from space 128K, 65% used [0x02ba0000, 0x02bb4f20, 0x02bc0000) to space 128K, 0% used [0x02bc0000, 0x02bc0000, 0x02be0000) tenured generation total 15784K, used 9845K [0x03e40000, 0x04daa000, 0x12a90000) the space 15784K, 62% used [0x03e40000, 0x047dd428, 0x047dd600, 0x04daa000) compacting perm gen total 14336K, used 14223K [0x12a90000, 0x13890000, 0x16a90000) the space 14336K, 99% used [0x12a90000, 0x13873d10, 0x13873e00, 0x13890000) No shared spaces configured. Terminate batch job (Y/N)? ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:27 Message: NOTE, from the Java console log you should be able to copy paste! (mark with mouse and Ctrl-C or right click -> copy.) Only from that Colossus own "About" window you can't copy paste. Not sure whether that affinity helps; Colossus is "multithreaded", so if there is more than one core existing it might still use a 2nd. (affinity to me means merely, it would _preferrably_ run on that core). My suspicion is it is some kind of deadlock, caused by the way how those dialogs are called: "synchronous" , and in the "Event Dispatcher thread". That it happens randomly is much more "reasonable" than that some dialogs lock and some not. Such random misbehaviors we had earlier. They were fixed, but merely "somehow" and "when it happened", not systematically "rewrite everything to be thread-safe by design". Can you try the following: Run it from commandline. If possible, make the commandline window as big as possible, like window size (field 3 +4) width 150 height 50, screen buffer size (1+2 fields) 150 and 3000.) (to do so, on the cmdline window, click the smal C:\ in top LEFT corner, Properties). When it looks, make the cmdline box the active window and press Ctrl-Break (bottom left and top right keys of the keyboard together ;-)) Lot of glibberish would be printed to screen. Same top left icon, Edit => Select all ; copy (ctrl-c or from same menu copy). Send me what's there (or post it here). That's the "which thread is doing what at the moment" summary. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 20:10 Message: yes I was able to limit the program running on one processer. Or at least I told it to set its affinity to Core 0 from the processes. It still locked up. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 20:08 Message: I did some further testing... it will actually lock up randomly still. Doesn't matter if I can recruit one or two. :/ ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 20:06 Message: Ran java -version from command window: java version "1.6.0_17" Java(TM) SE Runtime Environment (build 1.6.0_17-b04) Java HotSpot(TM) Client VM (build 14.3-b01, mixed mode) I figured out how to get into the Java Options. Logging was turned off. So now I have a Java Console window when the program opens. So I tried a game, and it got stuck after 2nd time I tried to add a recruit. Btw, I notice it seems to do it when I can choose more than one recruit. Here is the last few lines of the log: (man... this is a lot of typing and I'm not sure it is really showing any errors. It just shows the last step before it "froze". INFO: Legion Gr09 (Lobster) in Tower hex 600 moves to Jungle hex 135 entering on RIGHT Feb 10, 2011 2:00:47 PM net.sf.colossus.server.GameServerSide$GamePhaseAdvancer advancePhaseInternal INFO:Phase advances to Muster Feb 10, 2011 2:00:49 PM net.sf.colossus.server.LegionServerSide addCreature INFO: Added Ceentaur -now there are 20 left. Feb 10, 2011 2:00:49 PM net.sf.colossus.server.GameServerSide doRecruit INFO: Legion Gr05 in Woods hex 39 recruits Centaur with 1 Centaur ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 19:37 Message: > It is a quad core system. hm. That might be part of the reason. I have some wild guess what it could be... Can you tell me exact java version? Help => About tells it. It tells also Log directory, there would be a file Colossus0.log. (The *0,log is always the newest; if new starts, it renames 1 to 2, 0 to 1nd creates new 0.log file). Sorry you have to type the stuff from Help => About, no copy paste. Or make a screenshot if you know how. If you wish you can also send it to me via mail (my SF username, i.e. the "cleka", then the magic a-like character, then users.sourceforge.net . Can you tune your system to use one CPU only? ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 19:15 Message: We were at a party and someone brought the board game Titan over. It confused the heck out of us (never even made it around once) but it seemed interesting. I did a search and found you making an app for it. So I thought I'd try it out. I am definitely brand new to Titan, so I expect to actually be the only player on here that gets defeated by your "dumb" AI. It is a quad core system. No I can not close the the dialog box with the small "X". In fact I can't do anything except shut it down. I selected Auto Pick Recruiters... and now I think it hangs up on actual recruiting now. It appears random too. Sometimes I can recruit a whole stack (7) without "locking up" and other times it will do it after the first recruit. (btw... sometimes I can't move a stack. That just a rule I'm not aware of?) ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 18:50 Message: Do you happen to know, do you have more than one CPU or CPU core? ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 18:43 Message: BTW, are you "well familiar with Titan, just new to use Colossus, or need to learn also "how game works, rules, strategy, etc." first? Once you are familar with the game and the usage, you could even try the public game server (by clicking the "WebClient" button), where you could find other "real people" to play against. (in contrast to the AI ("Artificial Intelligence") i.e. Robot players... However to notice is, people are usually online in afternoon/evening for US time. At other time you might log in there and be alone 30 or 60 mins before any other drop by. However, that's anyway more recommded only a) it does not hang for you any more and b) once you are "fluent" in playing. It's annoying for others when you need, let's say, 1.5 minutes for each individual move, split, recruit etc.... => Practicing to get faster better with AI players.They are all in all rather dump, but for first few weeks ok. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 18:35 Message: okay (or not okay), but that's something. In worst case I have to make you a special version which prints something to screen for every line of code before and around where it calls that "Pick Recruiter" dialog :)) That's what I meant, you might run into a "block" somewhat later with some other dialog. But the recruit dialog itself worked?? Strange; they are very similarly programmed. Some more "smalltalk" :o) > Made me green in fact. > I guess I can always play green. :p :) You can try: Window => Preferences => "Color" tab. Click on "Select" and choose another color. Next time you START a game it would choose that color for you automatically. (all those "Autoplay" options do certain things for you. So in fact you could enable "Auto Pick Recruiter", since that one is rather unimportant, as long as you can choose an actual Recruit. (so we can circumvent THIS cliff for now). But there might be other dialogs later to block you as well. And/or, in fact that's an interesting thing to try, whether that color chooser dialog would work??? If not, can you close it with the "x" shaped icon in upper right corner? (the initial color pick dialog CAN'T be closed that way, or rather, if one does, it reappears immediately.) So, sure, I'd like to continue troubleshoot this. Let's try that above for now, have to bring kids to bed now. -Cle. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 18:17 Message: So I've been running through this... moving, recruiting, etc... then I came to a point where it won't let me pick again. :/ Says: kevinnew: Pick Recruiter in Brush hex17 There is more than one way you can recruit this. Current content of legion Gr05: There is a Titan, Cyclops, Gargoyle, Gargoyle, Centaur, Centaur Pick the creature type you want to reveal: There is a Cyclops, Gargoyle I can't pick anything. Tried clicking on it numerous times. Nothing will select and it is stuck on this dialog box. Not sure why this happening... but thank you for sticking it out with me. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 18:12 Message: You are correct. I typed the name in, it found it and ran fine. Well.. I can play now. yay! ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 18:08 Message: K so, I opened the default kevin.cfg and added those lines to it: Auto\ pick\ markers=true Auto\ pick\ color=true Favorite\ colors=Green And it worked. The game started. Made me green in fact. So far so good to, I was able to split a stack. Move the unit. Recruit. And watched the computer take it's move as well. So not sure why it wasn't working but it is now. Want to continue to troubleshoot? I guess I can always play green. :p ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 18:06 Message: No, you cannot "pick" the name kevinnew - it does not offer all "names that may exist". You choose the name on "Players" tab, On left side, Choose HUman, on right side type the name. 2nd Line, choose e.g. "SimpleAI", it fills right side with <byColor> or something, thats ok, Type there in first line the name kevinnew, and when game starts, it goes looking for a file Colossus-kewvinnew.cfg [and if it wouldn't exist, create it, sooner or later, after GUI / preferences changes]. Now we pre-create that file, so that it skips the color picking dialog because it would find a value to say "auto pick" from the file. -Cle. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 17:59 Message: btw, I did try and run the Colossus.jnlp stand alone and brings up the welcome screen, I hit ok, and the Game setup screen appears. I still can't choose newkevin and when I run it, once again I can not pick any of the colors. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 17:57 Message: I'll start from the beginning: • I open a folder I extracted all the files to from the .zip • I double click on run.bat A cmd window pops up with: C:\Documents and Settings\kevin\Desktop\collossus>cd "c:\Documents and Settings\kevin\Desktop\collossus\" C:\Documents and Settings\kevin\Desktop\collossus>java -Djava.util.logging.config.file=logging.properties -XMx256M -jar Colossus.jar Then what looks like the main program appears. It is the game setup screen. I make player one a human player and choose Kevin as the type. I make the 2nd player a SimpleAI and choose <By color> for the type. I leave everything else as is. (btw the top says Running Colossus Version 0.12.0-beta1 (revision 4970) on etc...) • I pick New game. The game appears to start, I can see the grid in the background with all the hills, deserts, etc. A small box with Pick a Color appears. I can move this box around. But I can not pick a color. I've tried clicking on every single one. I've tried pressing G, e, o, etc. I've tried Ctrl/Alt combinations, nothing. I can not close it either. I have to force it to shutdown. In Task Manager it shows that it is still running... so I don't THINK it is locked up. I do NOT see any other windows anywhere that I might need to click. I've even tried Alt+Tab and Ctrl+Tab to check. • I went ahead and did a search for the .colossus folder. I found it. It has 5 files in it. Colossus-netclient.cfg Colossus-red.cfg Colossus-server.cfg Colossus-kevin.cfg Colossus-kevin1.cfg • I went ahead and created a new .cfg file. I named it Colossus-kevinnew.cfg. I added these lines to it: Auto\ pick\ markers=true Auto\ pick\ color=true Favorite\ colors=Green Interestingly here, when I started the program, I could not choose kevinnew. I could only still see kevin. I searched my entire computer to see if the .cfg files might also be somewhere else but I could only find them under \\documents and settings\kevin\desktop\collossus • Ok so I tried your command prompt idea. I even ran the command from within the path and I kept getting this error... Unable to access jarfile Colossus.jar I can't imagine it being a graphical error... the program still seems to be running fine, I just can't select any color. In Task Manager it doesn't say "not responding". So I will wait for your reply. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 17:06 Message: ok, XP with SP3 and Sun Java 6 ( 1.6.x ). All right, that should work. ( I may have in use SP2 but still). E.g. "Windows Vista" or "Windows 7" are more "exotic" for me. Sun Java is good also. Did you get the "Welcome to Release 0.12.0" dialog and click it away? (if not, it might have lurked around in the background hidden behind some other window and block the mouse/keyboard input or whatever ("modal dialog"). Should technically not happen/be possible, but one has seen stranger things happen.... The History.java is one of the source files, not relevant. > The only .cf files I could find are WebServer.cf, WebServer_unix.cf, > and WebServer_win.cf. Do you want me to add a line into one of these? No. They are part of the "sources" as well, in some sense. Once started, Colossus will create a directory ".colossus" (and 2 files in it) "somewhere on your computer" - in what it considers to be "your home directory". What that exactly is, might vary... The home directory is under Windows _often_ something like: C:\Documents and Settings\Mike if you logged in to the computer with username Mike. Often you get there with right-click on Start button => Explore => opens an explorer e.g. to C:\Documents and Settings\katzer\Start Menu for me as user katzer. So katzer would be my home dir. However on my computer it's configured differently, so my home directory is D:\katzer You can take an explorer (the Start => right-click => Explore thing) and type in the "path"/adress line in the top "%HOME%" and press return. (you may need to make it visible first with View => Toolbars => Address bar ). Inside there should be .colossus. Once you found that we are much further :) (normally, once masterboardboard is open, Help => About would tell the location but you don't even get there yet :-/ ) Inside there will be eventually several .cfg files (and perhaps a "saves" directory). Directory of D:\katzer\.colossus 07.02.2011 10:06 <DIR> . 07.02.2011 10:06 <DIR> .. 07.02.2011 15:12 1 997 Colossus-clemens.cfg 08.02.2011 19:49 4 425 Colossus-katzer.cfg 08.02.2011 19:49 2 069 Colossus-katzer1.cfg 28.07.2010 17:18 276 Colossus-netclient.cfg 08.02.2011 19:49 900 Colossus-server.cfg 07.02.2011 15:12 2 059 Colossus-test1.cfg 07.02.2011 22:00 586 Colossus-webclient.cfg 07.02.2011 10:56 <DIR> saves 7 File(s) 12 312 bytes 3 Dir(s) 21 313 040 384 bytes free D:\katzer\.colossus> You can ignore the "-server", -webclient and -netclient files for now - they are "internal". -katzer and -clemens etc. are "client preferences" files. Like, I played once a game as clemens, and when changed preferences such as the various auto-<do something>, position and size of windows etc., Colossus would save those to a file with that name. (some other, like Variant, type and names of players, Options in Startup dialog, are stored to the Colossus-server.cfg file). Usually when you get the Game Setup dialog (where you choose variant, count and type of players etc), first of them you make "Human" and name is initialized with the name you are logged on to the computer. Thus created with some text editor (notepad, if necessary), a textfile named Colossus-Mike.cfg (replace your name, of course). (if necessaary, right click in the right side of explorer, where the files are shown => New => Text Document => then there exists a file "New File.txt" (or similar). Click it, or F2 on it, change name to above. Put into that file the following three lines: Auto\ pick\ markers=true Auto\ pick\ color=true Favorite\ colors=Green Note the "backslash" ( \ ) in front of the space. Now if you start a game with your player name set to "Mike" the Pick... dialogs should not appear. So question is, what will get stuck then :) The other interesting thing to try is, if you can run from commandline (by typing that command, which will make the java command shown): java -Djava.util.logging.config.file=file=logging.properties -Xmx256M -jar Colossus.jar While Colossus runs, eventually happening warnings etc. would be printed to that Command window. But if it's a total "Graphics stuff somehow freezes" (like it sounds, that it does not accept click or key on any of the colors) ... hm. Tricky. Might be no warning/exception, just the graphics thread (EDT, Event Dispatcher Thread, techno babble... ;-) hangs. Let's see so far, how far we get with above. If we get that, I've already some ideas how to proceed. BR, Clemens ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 15:15 Message: Not sure if this will help... I found a file called History.java under my recent documents. It's pretty lengthy but it is listed below: package net.sf.colossus.server; import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import net.sf.colossus.common.Constants; import net.sf.colossus.game.Creature; import net.sf.colossus.game.EntrySide; import net.sf.colossus.game.Legion; import net.sf.colossus.game.Player; import net.sf.colossus.game.actions.AddCreatureAction; import net.sf.colossus.game.actions.Recruitment; import net.sf.colossus.util.Glob; import net.sf.colossus.variant.CreatureType; import net.sf.colossus.variant.MasterHex; import org.jdom.Element; /** * Stores game history as XML. * * @author David Ripton */ public class History { private static final Logger LOGGER = Logger.getLogger(History.class .getName()); /** * History: events that happened before last commit point */ private final Element root; /** * History elements/events that happened since the last commit/"snapshot". */ private final List<Element> recentEvents = new LinkedList<Element>(); /** * Set to true during the processing of {@link #fireEventsFromXML(Server)} * to avoid triggering events we just restored again. */ private boolean loading = false; /** * */ private final Element loadedRedoLog; private boolean isRedo = false; /** * Stores the surviving legions (this variable is not needed any more) * * While the history should contain all information to reproduce the game * state, the last set of legions is currently still loaded upfront since * they contain the battle-specific information. This collides with * replaying the game from history... * Now, since 08/2008, they are not stored as "survivorlegio... [truncated message content] |
|
From: SourceForge.net <no...@so...> - 2011-02-10 20:48:04
|
Bugs item #3177305, was opened at 2011-02-10 12:40 Message generated for change (Comment added) made by nobody You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101939&aid=3177305&group_id=1939 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: GUI Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Nobody/Anonymous (nobody) Assigned to: Clemens Katzer (cleka) Summary: Can not pick color to start game Initial Comment: Recently tried to play this game. I downloaded both the java version and the zip file. Both seem to start up just fine. The board will appear and another small window with choose a color pops up. I can not click on any color. I've tried pressing the letters that correspond to the colors. I've tried alt and ctrl combinations. Nothing works. I have to force the program to quit. Ideas? ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 20:48 Message: Thanks for walking me through this and all. Just so you know I will not be able to respond to you again until Monday. I stretched it to fit my entire screen.... and I'm running a big screen. lol That was funny about finding an old laptop. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:46 Message: did you make window big enough ? Seems begin of it is missing again. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:43 Message: Yeah. As I almost expected: > Found 1 deadlock. Analyzing that and thinking how to go further will take some time. But I have to go sleeping now (22:40 here in Finland) and I have to get up early tomorrow. I try to look deeper into it tomorrow. Meanwhile, can you find a 5 year old laptop somewhere? ;-) (namely, any computer with one CPU or core only...) Chances are there it works fine. >btw, I couldn't copy and paste the java console because when the > program locked it wouldn't let me select the console either. Ah, right! And ah, you saw the deadlock reported also. Br, Clemens ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 20:40 Message: btw, I couldn't copy and paste the java console because when the program locked it wouldn't let me select the console either. and looks like your suspicions are right about that dead lock... shows below it found 1. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 20:38 Message: holy moly... its a lot... here goes: at net.sf.colossus.client.SocketClientThread.readAndParseUntilDone(SocketClientThread.java:419) at net.sf.colossus.client.SocketClientThread.run(SocketClientThread.java:373) "Client kevin" prio=6 tid=0x170d5400 nid=0x1eb4 runnable [0x17cdf000] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(Unknown Source) at sun.nio.cs.StreamDecoder.readBytes(Unknown Source) at sun.nio.cs.StreamDecoder.implRead(Unknown Source) at sun.nio.cs.StreamDecoder.read(Unknown Source) - locked <0x041a4f00> (a java.io.InputStreamReader) at java.io.InputStreamReader.read(Unknown Source) at java.io.BufferedReader.fill(Unknown Source) at java.io.BufferedReader.readLine(Unknown Source) - locked <0x041a4f00> (a java.io.InputStreamReader) at java.io.BufferedReader.readLine(Unknown Source) at net.sf.colossus.client.SocketClientThread.waitForLine(SocketClientThread.java:504) at net.sf.colossus.client.SocketClientThread.readAndParseUntilDone(SocketClientThread.java:419) at net.sf.colossus.client.SocketClientThread.run(SocketClientThread.java:373) "Thread-4" prio=6 tid=0x1716a800 nid=0x1428 runnable [0x17c3f000] java.lang.Thread.State: RUNNABLE at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method) at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(Unknown Source) at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(Unknown Source) at sun.nio.ch.WindowsSelectorImpl.doSelect(Unknown Source) at sun.nio.ch.SelectorImpl.lockAndDoSelect(Unknown Source) - locked <0x0418f468> (a sun.nio.ch.Util$1) - locked <0x0418f478> (a java.util.Collections$UnmodifiableSet) - locked <0x0418f3f0> (a sun.nio.ch.WindowsSelectorImpl) at sun.nio.ch.SelectorImpl.select(Unknown Source) at net.sf.colossus.server.Server.handleOutsideChanges(Server.java:439) at net.sf.colossus.server.Server.waitOnSelector(Server.java:398) at net.sf.colossus.server.Server.run(Server.java:227) "TimerQueue" daemon prio=6 tid=0x176e6400 nid=0x1f8c in Object.wait() [0x17a9f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x04168e60> (a javax.swing.TimerQueue) at javax.swing.TimerQueue.run(Unknown Source) - locked <0x04168e60> (a javax.swing.TimerQueue) at java.lang.Thread.run(Unknown Source) "AWT-EventQueue-0" prio=6 tid=0x17042800 nid=0x1eac waiting for monitor entry [0x1759e000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruit.<init>(PickRecruit.java:168) at net.sf.colossus.gui.PickRecruit.pickRecruit(PickRecruit.java:186) - locked <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at net.sf.colossus.gui.ClientGUI.doPickRecruit(ClientGUI.java:2097) at net.sf.colossus.client.Client.doRecruit(Client.java:1763) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch" prio=6 tid=0x1701c000 nid=0x193c waiting for monitor entry [0x173bf000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x04048108> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) "AWT-Windows" daemon prio=6 tid=0x16ff8400 nid=0x1d74 runnable [0x1729f000] java.lang.Thread.State: RUNNABLE at sun.awt.windows.WToolkit.eventLoop(Native Method) at sun.awt.windows.WToolkit.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "AWT-Shutdown" prio=6 tid=0x17001c00 nid=0x1844 in Object.wait() [0x1724f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0402cf70> (a java.lang.Object) at java.lang.Object.wait(Object.java:485) at sun.awt.AWTAutoShutdown.run(Unknown Source) - locked <0x0402cf70> (a java.lang.Object) at java.lang.Thread.run(Unknown Source) "Java2D Disposer" daemon prio=10 tid=0x17018800 nid=0x1cbc in Object.wait() [0x171ff000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0402d000> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x0402d000> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) at sun.java2d.Disposer.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "Low Memory Detector" daemon prio=6 tid=0x16c80400 nid=0x1cac runnable [0x00000000] java.lang.Thread.State: RUNNABLE "CompilerThread0" daemon prio=10 tid=0x16c7a400 nid=0x450 waiting on condition [0x00000000] java.lang.Thread.State: RUNNABLE "Attach Listener" daemon prio=10 tid=0x16c78c00 nid=0x1d44 runnable [0x00000000] java.lang.Thread.State: RUNNABLE "Signal Dispatcher" daemon prio=10 tid=0x16c77800 nid=0x1b30 waiting on condition [0x00000000] java.lang.Thread.State: RUNNABLE "Finalizer" daemon prio=8 tid=0x16c67800 nid=0x19cc in Object.wait() [0x16ddf000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x03ebd718> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x03ebd718> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source) "Reference Handler" daemon prio=10 tid=0x16c62c00 nid=0x1eb0 in Object.wait() [0x16d8f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x03ebd7a0> (a java.lang.ref.Reference$Lock) at java.lang.Object.wait(Object.java:485) at java.lang.ref.Reference$ReferenceHandler.run(Unknown Source) - locked <0x03ebd7a0> (a java.lang.ref.Reference$Lock) "main" prio=6 tid=0x003b6400 nid=0x1e2c in Object.wait() [0x009df000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x041915c8> (a java.lang.Object) at java.lang.Object.wait(Object.java:485) at net.sf.colossus.server.Server.waitUntilGameFinishes(Server.java:780) - locked <0x041915c8> (a java.lang.Object) at net.sf.colossus.server.GameServerSide.cleanupWhenGameOver(GameServerSide.java:401) at net.sf.colossus.server.GameServerSide.startNewGameAndWaitUntilOver(GameServerSide.java:454) at net.sf.colossus.appmain.Start.setupAndLoop(Start.java:663) at net.sf.colossus.appmain.Start.main(Start.java:874) "VM Thread" prio=10 tid=0x16c5fc00 nid=0x10fc runnable "VM Periodic Task Thread" prio=10 tid=0x16c82c00 nid=0x1a00 waiting on condition JNI global references: 1473 Found one Java-level deadlock: ============================= "AWT-EventQueue-0": waiting to lock monitor 0x177e5b1c (object 0x02ba1288, a java.lang.Object), which is held by "EventQueueMonitor-ComponentEvtDispatch" "EventQueueMonitor-ComponentEvtDispatch": waiting to lock monitor 0x176e8c54 (object 0x13872538, a java.lang.Class), which is held by "AWT-EventQueue-0" Java stack information for the threads listed above: =================================================== "AWT-EventQueue-0": at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruit.<init>(PickRecruit.java:168) at net.sf.colossus.gui.PickRecruit.pickRecruit(PickRecruit.java:186) - locked <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at net.sf.colossus.gui.ClientGUI.doPickRecruit(ClientGUI.java:2097) at net.sf.colossus.client.Client.doRecruit(Client.java:1763) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch": at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x04048108> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) Found 1 deadlock. Heap def new generation total 1216K, used 704K [0x02a90000, 0x02be0000, 0x03e40000) eden space 1088K, 57% used [0x02a90000, 0x02b2b388, 0x02ba0000) from space 128K, 65% used [0x02ba0000, 0x02bb4f20, 0x02bc0000) to space 128K, 0% used [0x02bc0000, 0x02bc0000, 0x02be0000) tenured generation total 15784K, used 9845K [0x03e40000, 0x04daa000, 0x12a90000) the space 15784K, 62% used [0x03e40000, 0x047dd428, 0x047dd600, 0x04daa000) compacting perm gen total 14336K, used 14223K [0x12a90000, 0x13890000, 0x16a90000) the space 14336K, 99% used [0x12a90000, 0x13873d10, 0x13873e00, 0x13890000) No shared spaces configured. Terminate batch job (Y/N)? ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:27 Message: NOTE, from the Java console log you should be able to copy paste! (mark with mouse and Ctrl-C or right click -> copy.) Only from that Colossus own "About" window you can't copy paste. Not sure whether that affinity helps; Colossus is "multithreaded", so if there is more than one core existing it might still use a 2nd. (affinity to me means merely, it would _preferrably_ run on that core). My suspicion is it is some kind of deadlock, caused by the way how those dialogs are called: "synchronous" , and in the "Event Dispatcher thread". That it happens randomly is much more "reasonable" than that some dialogs lock and some not. Such random misbehaviors we had earlier. They were fixed, but merely "somehow" and "when it happened", not systematically "rewrite everything to be thread-safe by design". Can you try the following: Run it from commandline. If possible, make the commandline window as big as possible, like window size (field 3 +4) width 150 height 50, screen buffer size (1+2 fields) 150 and 3000.) (to do so, on the cmdline window, click the smal C:\ in top LEFT corner, Properties). When it looks, make the cmdline box the active window and press Ctrl-Break (bottom left and top right keys of the keyboard together ;-)) Lot of glibberish would be printed to screen. Same top left icon, Edit => Select all ; copy (ctrl-c or from same menu copy). Send me what's there (or post it here). That's the "which thread is doing what at the moment" summary. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 20:10 Message: yes I was able to limit the program running on one processer. Or at least I told it to set its affinity to Core 0 from the processes. It still locked up. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 20:08 Message: I did some further testing... it will actually lock up randomly still. Doesn't matter if I can recruit one or two. :/ ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 20:06 Message: Ran java -version from command window: java version "1.6.0_17" Java(TM) SE Runtime Environment (build 1.6.0_17-b04) Java HotSpot(TM) Client VM (build 14.3-b01, mixed mode) I figured out how to get into the Java Options. Logging was turned off. So now I have a Java Console window when the program opens. So I tried a game, and it got stuck after 2nd time I tried to add a recruit. Btw, I notice it seems to do it when I can choose more than one recruit. Here is the last few lines of the log: (man... this is a lot of typing and I'm not sure it is really showing any errors. It just shows the last step before it "froze". INFO: Legion Gr09 (Lobster) in Tower hex 600 moves to Jungle hex 135 entering on RIGHT Feb 10, 2011 2:00:47 PM net.sf.colossus.server.GameServerSide$GamePhaseAdvancer advancePhaseInternal INFO:Phase advances to Muster Feb 10, 2011 2:00:49 PM net.sf.colossus.server.LegionServerSide addCreature INFO: Added Ceentaur -now there are 20 left. Feb 10, 2011 2:00:49 PM net.sf.colossus.server.GameServerSide doRecruit INFO: Legion Gr05 in Woods hex 39 recruits Centaur with 1 Centaur ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 19:37 Message: > It is a quad core system. hm. That might be part of the reason. I have some wild guess what it could be... Can you tell me exact java version? Help => About tells it. It tells also Log directory, there would be a file Colossus0.log. (The *0,log is always the newest; if new starts, it renames 1 to 2, 0 to 1nd creates new 0.log file). Sorry you have to type the stuff from Help => About, no copy paste. Or make a screenshot if you know how. If you wish you can also send it to me via mail (my SF username, i.e. the "cleka", then the magic a-like character, then users.sourceforge.net . Can you tune your system to use one CPU only? ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 19:15 Message: We were at a party and someone brought the board game Titan over. It confused the heck out of us (never even made it around once) but it seemed interesting. I did a search and found you making an app for it. So I thought I'd try it out. I am definitely brand new to Titan, so I expect to actually be the only player on here that gets defeated by your "dumb" AI. It is a quad core system. No I can not close the the dialog box with the small "X". In fact I can't do anything except shut it down. I selected Auto Pick Recruiters... and now I think it hangs up on actual recruiting now. It appears random too. Sometimes I can recruit a whole stack (7) without "locking up" and other times it will do it after the first recruit. (btw... sometimes I can't move a stack. That just a rule I'm not aware of?) ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 18:50 Message: Do you happen to know, do you have more than one CPU or CPU core? ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 18:43 Message: BTW, are you "well familiar with Titan, just new to use Colossus, or need to learn also "how game works, rules, strategy, etc." first? Once you are familar with the game and the usage, you could even try the public game server (by clicking the "WebClient" button), where you could find other "real people" to play against. (in contrast to the AI ("Artificial Intelligence") i.e. Robot players... However to notice is, people are usually online in afternoon/evening for US time. At other time you might log in there and be alone 30 or 60 mins before any other drop by. However, that's anyway more recommded only a) it does not hang for you any more and b) once you are "fluent" in playing. It's annoying for others when you need, let's say, 1.5 minutes for each individual move, split, recruit etc.... => Practicing to get faster better with AI players.They are all in all rather dump, but for first few weeks ok. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 18:35 Message: okay (or not okay), but that's something. In worst case I have to make you a special version which prints something to screen for every line of code before and around where it calls that "Pick Recruiter" dialog :)) That's what I meant, you might run into a "block" somewhat later with some other dialog. But the recruit dialog itself worked?? Strange; they are very similarly programmed. Some more "smalltalk" :o) > Made me green in fact. > I guess I can always play green. :p :) You can try: Window => Preferences => "Color" tab. Click on "Select" and choose another color. Next time you START a game it would choose that color for you automatically. (all those "Autoplay" options do certain things for you. So in fact you could enable "Auto Pick Recruiter", since that one is rather unimportant, as long as you can choose an actual Recruit. (so we can circumvent THIS cliff for now). But there might be other dialogs later to block you as well. And/or, in fact that's an interesting thing to try, whether that color chooser dialog would work??? If not, can you close it with the "x" shaped icon in upper right corner? (the initial color pick dialog CAN'T be closed that way, or rather, if one does, it reappears immediately.) So, sure, I'd like to continue troubleshoot this. Let's try that above for now, have to bring kids to bed now. -Cle. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 18:17 Message: So I've been running through this... moving, recruiting, etc... then I came to a point where it won't let me pick again. :/ Says: kevinnew: Pick Recruiter in Brush hex17 There is more than one way you can recruit this. Current content of legion Gr05: There is a Titan, Cyclops, Gargoyle, Gargoyle, Centaur, Centaur Pick the creature type you want to reveal: There is a Cyclops, Gargoyle I can't pick anything. Tried clicking on it numerous times. Nothing will select and it is stuck on this dialog box. Not sure why this happening... but thank you for sticking it out with me. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 18:12 Message: You are correct. I typed the name in, it found it and ran fine. Well.. I can play now. yay! ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 18:08 Message: K so, I opened the default kevin.cfg and added those lines to it: Auto\ pick\ markers=true Auto\ pick\ color=true Favorite\ colors=Green And it worked. The game started. Made me green in fact. So far so good to, I was able to split a stack. Move the unit. Recruit. And watched the computer take it's move as well. So not sure why it wasn't working but it is now. Want to continue to troubleshoot? I guess I can always play green. :p ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 18:06 Message: No, you cannot "pick" the name kevinnew - it does not offer all "names that may exist". You choose the name on "Players" tab, On left side, Choose HUman, on right side type the name. 2nd Line, choose e.g. "SimpleAI", it fills right side with <byColor> or something, thats ok, Type there in first line the name kevinnew, and when game starts, it goes looking for a file Colossus-kewvinnew.cfg [and if it wouldn't exist, create it, sooner or later, after GUI / preferences changes]. Now we pre-create that file, so that it skips the color picking dialog because it would find a value to say "auto pick" from the file. -Cle. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 17:59 Message: btw, I did try and run the Colossus.jnlp stand alone and brings up the welcome screen, I hit ok, and the Game setup screen appears. I still can't choose newkevin and when I run it, once again I can not pick any of the colors. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 17:57 Message: I'll start from the beginning: • I open a folder I extracted all the files to from the .zip • I double click on run.bat A cmd window pops up with: C:\Documents and Settings\kevin\Desktop\collossus>cd "c:\Documents and Settings\kevin\Desktop\collossus\" C:\Documents and Settings\kevin\Desktop\collossus>java -Djava.util.logging.config.file=logging.properties -XMx256M -jar Colossus.jar Then what looks like the main program appears. It is the game setup screen. I make player one a human player and choose Kevin as the type. I make the 2nd player a SimpleAI and choose <By color> for the type. I leave everything else as is. (btw the top says Running Colossus Version 0.12.0-beta1 (revision 4970) on etc...) • I pick New game. The game appears to start, I can see the grid in the background with all the hills, deserts, etc. A small box with Pick a Color appears. I can move this box around. But I can not pick a color. I've tried clicking on every single one. I've tried pressing G, e, o, etc. I've tried Ctrl/Alt combinations, nothing. I can not close it either. I have to force it to shutdown. In Task Manager it shows that it is still running... so I don't THINK it is locked up. I do NOT see any other windows anywhere that I might need to click. I've even tried Alt+Tab and Ctrl+Tab to check. • I went ahead and did a search for the .colossus folder. I found it. It has 5 files in it. Colossus-netclient.cfg Colossus-red.cfg Colossus-server.cfg Colossus-kevin.cfg Colossus-kevin1.cfg • I went ahead and created a new .cfg file. I named it Colossus-kevinnew.cfg. I added these lines to it: Auto\ pick\ markers=true Auto\ pick\ color=true Favorite\ colors=Green Interestingly here, when I started the program, I could not choose kevinnew. I could only still see kevin. I searched my entire computer to see if the .cfg files might also be somewhere else but I could only find them under \\documents and settings\kevin\desktop\collossus • Ok so I tried your command prompt idea. I even ran the command from within the path and I kept getting this error... Unable to access jarfile Colossus.jar I can't imagine it being a graphical error... the program still seems to be running fine, I just can't select any color. In Task Manager it doesn't say "not responding". So I will wait for your reply. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 17:06 Message: ok, XP with SP3 and Sun Java 6 ( 1.6.x ). All right, that should work. ( I may have in use SP2 but still). E.g. "Windows Vista" or "Windows 7" are more "exotic" for me. Sun Java is good also. Did you get the "Welcome to Release 0.12.0" dialog and click it away? (if not, it might have lurked around in the background hidden behind some other window and block the mouse/keyboard input or whatever ("modal dialog"). Should technically not happen/be possible, but one has seen stranger things happen.... The History.java is one of the source files, not relevant. > The only .cf files I could find are WebServer.cf, WebServer_unix.cf, > and WebServer_win.cf. Do you want me to add a line into one of these? No. They are part of the "sources" as well, in some sense. Once started, Colossus will create a directory ".colossus" (and 2 files in it) "somewhere on your computer" - in what it considers to be "your home directory". What that exactly is, might vary... The home directory is under Windows _often_ something like: C:\Documents and Settings\Mike if you logged in to the computer with username Mike. Often you get there with right-click on Start button => Explore => opens an explorer e.g. to C:\Documents and Settings\katzer\Start Menu for me as user katzer. So katzer would be my home dir. However on my computer it's configured differently, so my home directory is D:\katzer You can take an explorer (the Start => right-click => Explore thing) and type in the "path"/adress line in the top "%HOME%" and press return. (you may need to make it visible first with View => Toolbars => Address bar ). Inside there should be .colossus. Once you found that we are much further :) (normally, once masterboardboard is open, Help => About would tell the location but you don't even get there yet :-/ ) Inside there will be eventually several .cfg files (and perhaps a "saves" directory). Directory of D:\katzer\.colossus 07.02.2011 10:06 <DIR> . 07.02.2011 10:06 <DIR> .. 07.02.2011 15:12 1 997 Colossus-clemens.cfg 08.02.2011 19:49 4 425 Colossus-katzer.cfg 08.02.2011 19:49 2 069 Colossus-katzer1.cfg 28.07.2010 17:18 276 Colossus-netclient.cfg 08.02.2011 19:49 900 Colossus-server.cfg 07.02.2011 15:12 2 059 Colossus-test1.cfg 07.02.2011 22:00 586 Colossus-webclient.cfg 07.02.2011 10:56 <DIR> saves 7 File(s) 12 312 bytes 3 Dir(s) 21 313 040 384 bytes free D:\katzer\.colossus> You can ignore the "-server", -webclient and -netclient files for now - they are "internal". -katzer and -clemens etc. are "client preferences" files. Like, I played once a game as clemens, and when changed preferences such as the various auto-<do something>, position and size of windows etc., Colossus would save those to a file with that name. (some other, like Variant, type and names of players, Options in Startup dialog, are stored to the Colossus-server.cfg file). Usually when you get the Game Setup dialog (where you choose variant, count and type of players etc), first of them you make "Human" and name is initialized with the name you are logged on to the computer. Thus created with some text editor (notepad, if necessary), a textfile named Colossus-Mike.cfg (replace your name, of course). (if necessaary, right click in the right side of explorer, where the files are shown => New => Text Document => then there exists a file "New File.txt" (or similar). Click it, or F2 on it, change name to above. Put into that file the following three lines: Auto\ pick\ markers=true Auto\ pick\ color=true Favorite\ colors=Green Note the "backslash" ( \ ) in front of the space. Now if you start a game with your player name set to "Mike" the Pick... dialogs should not appear. So question is, what will get stuck then :) The other interesting thing to try is, if you can run from commandline (by typing that command, which will make the java command shown): java -Djava.util.logging.config.file=file=logging.properties -Xmx256M -jar Colossus.jar While Colossus runs, eventually happening warnings etc. would be printed to that Command window. But if it's a total "Graphics stuff somehow freezes" (like it sounds, that it does not accept click or key on any of the colors) ... hm. Tricky. Might be no warning/exception, just the graphics thread (EDT, Event Dispatcher Thread, techno babble... ;-) hangs. Let's see so far, how far we get with above. If we get that, I've already some ideas how to proceed. BR, Clemens ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 15:15 Message: Not sure if this will help... I found a file called History.java under my recent documents. It's pretty lengthy but it is listed below: package net.sf.colossus.server; import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import net.sf.colossus.common.Constants; import net.sf.colossus.game.Creature; import net.sf.colossus.game.EntrySide; import net.sf.colossus.game.Legion; import net.sf.colossus.game.Player; import net.sf.colossus.game.actions.AddCreatureAction; import net.sf.colossus.game.actions.Recruitment; import net.sf.colossus.util.Glob; import net.sf.colossus.variant.CreatureType; import net.sf.colossus.variant.MasterHex; import org.jdom.Element; /** * Stores game history as XML. * * @author David Ripton */ public class History { private static final Logger LOGGER = Logger.getLogger(History.class .getName()); /** * History: events that happened before last commit point */ private final Element root; /** * History elements/events that happened since the last commit/"snapshot". */ private final List<Element> recentEvents = new LinkedList<Element>(); /** * Set to true during the processing of {@link #fireEventsFromXML(Server)} * to avoid triggering events we just restored again. */ private boolean loading = false; /** * */ private final Element loadedRedoLog; private boolean isRedo = false; /** * Stores the surviving legions (this variable is not needed any more) * * While the history should contain all information to reproduce the game * state, the last set of legions is currently still loaded upfront since * they contain the battle-specific information. This collides with * replaying the game from history... * Now, since 08/2008, they are not stored as "survivorlegions" any more. * Instead, they are backed up internally (done inside PlayerServerSide), * all the history is replayed. This creates proper split prediction data * in all clients. After that, backup data is compared with result of * replay. * E.g. Legion count, their content, players eliminated must be in sync. * Then the replayed ones are discarded and the backedup ones restored * - which have the right legion state (moved, donor, summoned, ...) * * TODO align the history replay more with the original gameplay so we * don't need this anymore; * 08/2008:==> this is now to some part done. Still replay * events could be closer to original events (split, summon, * acquire, teleport, ...) , not just the "result" of that * event (reveal,add,remove effects). * * TODO instead: model the actual events instead of just result, * or at least add relevant info to history elements, so that all * replayed events carry all needed data so that they could also be * processed by event viewer (currently EV does not process anything * during replay). */ public History() { root = new Element("History"); // Dummy: loadedRedoLog = new Element("LoadedRedoLog"); } /** * Constructor used by "LoadGame" */ public History(Element loadGameRoot) { // Get the history elements and store them to "root" root = (Element)loadGameRoot.getChild("History").clone(); // Get the redo log content loadedRedoLog = (Element)loadGameRoot.getChild("Redo").clone(); } /** * All events before last commit */ Element getCopy() { return (Element)root.clone(); } /** * Reached a commit point: append all recent events to the history, * clear list of recent events; caller should do this together with creating * the next snapshot. */ void flushRecentToRoot() { for (Element el : recentEvents) { el.detach(); String name = el.getName(); // TODO later, when this are proper events (not XML elements), // ask rather from the Event whether it belongs copied to // history or not. // TODO At some point in future, put also those Move events // that reveal something to history, and make either the history // replay only send the relevant reveal messages, or make the // Clients during replay (but not redo part) ignore the "move" // and just process the revealing part. // Preferrably the latter, so that proper events show up in the // EventViewer. if (name.equals("Move") || name.equals("UndoMove")) { LOGGER.finest("Flush Redo to History: skipping " + name); } else if (name.equals("Recruit") || name.equals("UndoRecruit")) { // Skipping for now, because there are also the addCreature, // removeCreature and reveal Events still in history. // TODO make the Recruit/UndoRecruit history events during // replay properly, get rid of the "side effect" type of // entries in save game. LOGGER.finest("Flush Redo to History: skipping " + name); } else { root.addContent(el); } } recentEvents.clear(); } /** * @return A Redo Element, containing all events since last commit * i.e. which need to be REDOne on top of last commit point/snapshot */ Element getNewRedoLogElement() { Element redoLogElement = new Element("Redo"); for (Element el : recentEvents) { el.detach(); redoLogElement.addContent(el); } return redoLogElement; } /** * TODO reconsider name * TODO decide if we should move it all into one big handleEvent(GameEvent) method */ void addCreatureEvent(AddCreatureAction event, int turn, String reason) { if (loading) { return; } Element element = new Element("AddCreature"); element.setAttribute("markerId", event.getLegion().getMarkerId()); element.setAttribute("creatureName", event.getAddedCreatureType() .getName()); element.setAttribute("turn", "" + turn); element.setAttribute("reason", reason); recentEvents.add(element); } void removeCreatureEvent(Legion legion, CreatureType creature, int turn, String reason) { if (loading) { return; } Element event = new Element("RemoveCreature"); event.setAttribute("markerId", legion.getMarkerId()); event.setAttribute("creatureName", creature.getName()); event.setAttribute("turn", "" + turn); event.setAttribute("reason", reason); recentEvents.add(event); } void splitEvent(Legion parent, Legion child, List<CreatureType> splitoffs, int turn) { if (loading) { return; } Element event = new Element("Split"); event.setAttribute("parentId", parent.getMarkerId()); event.setAttribute("childId", child.getMarkerId()); event.setAttribute("turn", "" + turn); Element creatures = new Element("splitoffs"); event.addContent(creatures); for (CreatureType creatureType : splitoffs) { Element cr = new Element("creature"); cr.addContent(creatureType.getName()); creatures.addContent(cr); } recentEvents.add(event); } void mergeEvent(String splitoffId, String survivorId, int turn) { if (loading) { return; } Element event = new Element("Merge"); event.setAttribute("splitoffId", splitoffId); event.setAttribute("survivorId", survivorId); event.setAttribute("turn", "" + turn); recentEvents.add(event); } void revealEvent(boolean allPlayers, List<Player> players, Legion legion, List<CreatureType> creatures, int turn, String reason) { if (loading) { return; } if (creatures.isEmpty()) { // this happens e.g. when in final battle (titan vs. titan) // angel was called out of legion which was then empty, // and in the final updateAllLegionContents there is then // this empty legion... // TODO if this case can happen in a regular game no warning // should be logged LOGGER.log(Level.WARNING, "Called revealEvent(" + allPlayers + ", " + (players != null ? players.toString() : "-null-") + ", " + legion + ", " + creatures.toString() + ", " + turn + ") with empty creatureNames"); return; } Element event = new Element("Reveal"); event.setAttribute("markerId", legion.getMarkerId()); event.setAttribute("allPlayers", "" + allPlayers); event.setAttribute("turn", "" + turn); event.setAttribute("reason", reason); if (!allPlayers) { Element viewers = new Element("viewers"); event.addContent(viewers); Iterator<Player> it = players.iterator(); while (it.hasNext()) { String playerName = it.next().getName(); Element viewer = new Element("viewer"); viewer.addContent(playerName); viewers.addContent(viewer); } } Element creaturesElem = new Element("creatures"); event.addContent(creaturesElem); for (CreatureType creatureType : creatures) { Element creatureElem = new Element("creature"); creatureElem.addContent(creatureType.getName()); creaturesElem.addContent(creatureElem); } recentEvents.add(event); } void playerElimEvent(Player player, Player slayer, int turn) { if (loading) { return; } Element event = new Element("PlayerElim"); event.setAttribute("name", player.getName()); if (slayer != null) { event.setAttribute("slayer", slayer.getName()); } event.setAttribute("turn", "" + turn); recentEvents.add(event); } void movementRollEvent(Player player, int roll) { if (loading) { return; } Element event = new Element("MovementRoll"); event.setAttribute("playerName", player.getName()); event.setAttribute("roll", "" + roll); recentEvents.add(event); } void legionMoveEvent(Legion legion, MasterHex newHex, EntrySide entrySide, boolean teleport, CreatureType lord) { if (loading) { return; } Element event = new Element("Move"); event.setAttribute("markerId", legion.getMarkerId()); event.setAttribute("newHex", newHex.getLabel()); event.setAttribute("entrySide", entrySide.getLabel()); event.setAttribute("teleport", "" + teleport); String creNameOrTextNull = lord == null ? "null" : lord.getName(); event.setAttribute("revealedLord", creNameOrTextNull); recentEvents.add(event); } void legionUndoMoveEvent(Legion legion) { if (loading) { return; } Element event = new Element("UndoMove"); event.setAttribute("markerId", legion.getMarkerId()); recentEvents.add(event); } void recruitEvent(Legion legion, CreatureType recruit, CreatureType recruiter) { if (loading) { return; } Element event = new Element("Recruit"); event.setAttribute("markerId", legion.getMarkerId()); event.setAttribute("recruit", recruit.getName()); event.setAttribute("recruiter", recruiter == null ? "null" : recruiter .getName()); recentEvents.add(event); } void undoRecruitEvent(Legion legion) { if (loading) { return; } Element event = new Element("UndoRecruit"); event.setAttribute("markerId", legion.getMarkerId()); recentEvents.add(event); } /** * Fire all events from redoLog. * Elements from RedoLog are processed one by one and the corresponding * method is called on the Server object, pretty much as if a * ClientHandler would call it when receiving such a request from Client. * Note that in some cases overriding the processingCH is necessary * (because technically, this all currently happens while still the * connecting of last joining player is processed, so processingCH is * set to his ClientHandler). * * Note that "loading" is not set to true, so they DO GET ADDED to the * recentEvents list again. * * @param server The server on which to call all the actions to be redone */ void processRedoLog(Server server) { assert loadedRedoLog != null : "Loaded RedoLog should always " + "have a JDOM root element as backing store"; LOGGER.info("History: Start processing redo log"); isRedo = true; for (Object obj : loadedRedoLog.getChildren()) { Element el = (Element)obj; LOGGER.info("processing redo event " + el.getName()); fireEventFromElement(server, el); } isRedo = false; // TODO clear loadedRedoLog? LOGGER.info("Completed processing redo log"); } // unchecked conversions from JDOM @SuppressWarnings("unchecked") void fireEventsFromXML(Server server) { this.loading = true; assert root != null : "History should always have a " + " JDOM root element as backing store"; List<Element> kids = root.getChildren(); Iterator<Element> it = kids.iterator(); while (it.hasNext()) { Element el = it.next(); fireEventFromElement(server, el); } this.loading = false; } // unchecked conversions from JDOM @SuppressWarnings("unchecked") void fireEventFromElement(Server server, Element el) { GameServerSide game = server.getGame(); String eventName = el.getName(); String reasonPerhaps = el.getAttributeValue("reason"); String reason = (reasonPerhaps != null && !reasonPerhaps .equals("null")) ? reasonPerhaps : "<undefinedReason>"; if (eventName.equals("Reveal") && isRedo && reason.equals(Constants.reasonRecruiter)) { // Skip this because we redo the full recruit event // TODO LOGGER.finest("Skipping Reveal event (reason " + reason + ") during redo."); } else if (eventName.equals("AddCreature") && isRedo && reason.equals(Constants.reasonRecruited)) { // Skip this because we redo the full recruit event LOGGER.finest("Skipping AddCreature event (reason " + reason + ") during redo."); } else if (eventName.equals("RemoveCreature") && isRedo && reason.equals(Constants.reasonRecruited)) { // Skip this because we redo the full recruit event LOGGER.finest("Skipping RemoveCreature event (reason " + reason + ") during redo."); } else if (eventName.equals("Reveal")) { String allPlayers = el.getAttributeValue("allPlayers"); boolean all = allPlayers != null && allPlayers.equals("true"); String markerId = el.getAttributeValue("markerId"); List<String> playerNames = new ArrayList<String>(); Element viewEl = el.getChild("viewers"); int turn = Integer.parseInt(el.getAttributeValue("turn")); String playerName = null; if (viewEl != null) { List<Element> viewers = viewEl.getChildren(); Iterator<Element> it = viewers.iterator(); while (it.hasNext()) { Element viewer = it.next(); playerName = viewer.getTextNormalize(); playerNames.add(playerName); } } List<Element> creatureElements = el.getChild("creatures") .getChildren(); List<CreatureType> creatures = new ArrayList<CreatureType>(); for (Element creature : creatureElements) { String creatureName = creature.getTextNormalize(); creatures.add(game.getVariant() .getCreatureByName(creatureName)); } Player player = game.getPlayerByMarkerId(markerId); Legion legion; if (turn == 1 && player.getLegionByMarkerId(markerId) == null) { // there is no create event for the startup legions, // so we might need to create them for the reveal event legion = new LegionServerSide(markerId, null, player .getStartingTower(), player.getStartingTower(), player, game, creatures .toArray(new CreatureType[creatures.size()])); player.addLegion(legion); } else { legion = player.getLegionByMarkerId(markerId); } // TODO Now we get the reason from history element - does this // change effect/break anything? // String reason = "<unknown>"; if (((PlayerServerSide)player).getDeadBeforeSave()) { // Skip for players that will be dead by end of replay } else if (all) { server.allRevealCreatures(legion, creatures, reason); } else { server.oneRevealLegion(game.getPlayerByName(playerName), legion, creatures, reason); } } else if (eventName.equals("Split")) { String parentId = el.getAttributeValue("parentId"); String childId = el.getAttributeValue("childId"); String turnString = el.getAttributeValue("turn"); int turn = Integer.parseInt(turnString); List<String> creatureNames = new ArrayList<String>(); List<CreatureType> creatures = new ArrayList<CreatureType>(); List<Element> splitoffs = el.getChild("splitoffs").getChildren(); Iterator<Element> it = splitoffs.iterator(); while (it.hasNext()) { Element creature = it.next(); String creatureName = creature.getTextNormalize(); creatureNames.add(creatureName); creatures.add(game.getVariant() .getCreatureByName(creatureName)); } LegionServerSide parentLegion = game.getLegionByMarkerId(parentId); if (isRedo) { server.overrideProcessingCH(parentLegion.getPlayer()); server.doSplit(parentLegion, childId, creatures); server.overrideProcessingCH(parentLegion.getPlayer()); return; } // LegionServerSide.split(..) doesn't like us here since the parent // legion can't remove creatures (not there?) -- create child directly // instead PlayerServerSide player = parentLegion.getPlayer(); LegionServerSide childLegion; if (player.hasLegion(childId)) { childLegion = game.getLegionByMarkerId(childId); LOGGER.severe("During replay of history: child legion " + childId + " should not " + "exist yet (turn=" + turn + ")!!\n" + "Exists already with: " + Glob.glob(",", childLegion.getCreatureTypes()) + " but " + "should now be created with creatures: " + creatures); childLegion.remove(); } childLegion = new LegionServerSide(childId, null, parentLegion .getCurrentHex(), parentLegion.getCurrentHex(), player, game, creatures.toArray(new CreatureType[creatures.size()])); player.addLegion(childLegion); for (CreatureType creature : creatures) { parentLegion.removeCreature(creature, false, false); } // Skip for players that will be dead by end of replay if (!player.getDeadBeforeSave()) { server.allTellDidSplit(parentLegion, childLegion, turn, false); } } else if (eventName.equals("Merge")) { String splitoffId = el.getAttributeValue("splitoffId"); String survivorId = el.getAttributeValue("survivorId"); String turnString = el.getAttributeValue("turn"); int turn = Integer.parseInt(turnString); LegionServe... [truncated message content] |
|
From: SourceForge.net <no...@so...> - 2011-02-10 20:46:42
|
Bugs item #3177305, was opened at 2011-02-10 14:40 Message generated for change (Comment added) made by cleka You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101939&aid=3177305&group_id=1939 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: GUI Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Nobody/Anonymous (nobody) Assigned to: Clemens Katzer (cleka) Summary: Can not pick color to start game Initial Comment: Recently tried to play this game. I downloaded both the java version and the zip file. Both seem to start up just fine. The board will appear and another small window with choose a color pops up. I can not click on any color. I've tried pressing the letters that correspond to the colors. I've tried alt and ctrl combinations. Nothing works. I have to force the program to quit. Ideas? ---------------------------------------------------------------------- >Comment By: Clemens Katzer (cleka) Date: 2011-02-10 22:46 Message: did you make window big enough ? Seems begin of it is missing again. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 22:43 Message: Yeah. As I almost expected: > Found 1 deadlock. Analyzing that and thinking how to go further will take some time. But I have to go sleeping now (22:40 here in Finland) and I have to get up early tomorrow. I try to look deeper into it tomorrow. Meanwhile, can you find a 5 year old laptop somewhere? ;-) (namely, any computer with one CPU or core only...) Chances are there it works fine. >btw, I couldn't copy and paste the java console because when the > program locked it wouldn't let me select the console either. Ah, right! And ah, you saw the deadlock reported also. Br, Clemens ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 22:40 Message: btw, I couldn't copy and paste the java console because when the program locked it wouldn't let me select the console either. and looks like your suspicions are right about that dead lock... shows below it found 1. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 22:38 Message: holy moly... its a lot... here goes: at net.sf.colossus.client.SocketClientThread.readAndParseUntilDone(SocketClientThread.java:419) at net.sf.colossus.client.SocketClientThread.run(SocketClientThread.java:373) "Client kevin" prio=6 tid=0x170d5400 nid=0x1eb4 runnable [0x17cdf000] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(Unknown Source) at sun.nio.cs.StreamDecoder.readBytes(Unknown Source) at sun.nio.cs.StreamDecoder.implRead(Unknown Source) at sun.nio.cs.StreamDecoder.read(Unknown Source) - locked <0x041a4f00> (a java.io.InputStreamReader) at java.io.InputStreamReader.read(Unknown Source) at java.io.BufferedReader.fill(Unknown Source) at java.io.BufferedReader.readLine(Unknown Source) - locked <0x041a4f00> (a java.io.InputStreamReader) at java.io.BufferedReader.readLine(Unknown Source) at net.sf.colossus.client.SocketClientThread.waitForLine(SocketClientThread.java:504) at net.sf.colossus.client.SocketClientThread.readAndParseUntilDone(SocketClientThread.java:419) at net.sf.colossus.client.SocketClientThread.run(SocketClientThread.java:373) "Thread-4" prio=6 tid=0x1716a800 nid=0x1428 runnable [0x17c3f000] java.lang.Thread.State: RUNNABLE at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method) at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(Unknown Source) at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(Unknown Source) at sun.nio.ch.WindowsSelectorImpl.doSelect(Unknown Source) at sun.nio.ch.SelectorImpl.lockAndDoSelect(Unknown Source) - locked <0x0418f468> (a sun.nio.ch.Util$1) - locked <0x0418f478> (a java.util.Collections$UnmodifiableSet) - locked <0x0418f3f0> (a sun.nio.ch.WindowsSelectorImpl) at sun.nio.ch.SelectorImpl.select(Unknown Source) at net.sf.colossus.server.Server.handleOutsideChanges(Server.java:439) at net.sf.colossus.server.Server.waitOnSelector(Server.java:398) at net.sf.colossus.server.Server.run(Server.java:227) "TimerQueue" daemon prio=6 tid=0x176e6400 nid=0x1f8c in Object.wait() [0x17a9f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x04168e60> (a javax.swing.TimerQueue) at javax.swing.TimerQueue.run(Unknown Source) - locked <0x04168e60> (a javax.swing.TimerQueue) at java.lang.Thread.run(Unknown Source) "AWT-EventQueue-0" prio=6 tid=0x17042800 nid=0x1eac waiting for monitor entry [0x1759e000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruit.<init>(PickRecruit.java:168) at net.sf.colossus.gui.PickRecruit.pickRecruit(PickRecruit.java:186) - locked <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at net.sf.colossus.gui.ClientGUI.doPickRecruit(ClientGUI.java:2097) at net.sf.colossus.client.Client.doRecruit(Client.java:1763) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch" prio=6 tid=0x1701c000 nid=0x193c waiting for monitor entry [0x173bf000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x04048108> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) "AWT-Windows" daemon prio=6 tid=0x16ff8400 nid=0x1d74 runnable [0x1729f000] java.lang.Thread.State: RUNNABLE at sun.awt.windows.WToolkit.eventLoop(Native Method) at sun.awt.windows.WToolkit.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "AWT-Shutdown" prio=6 tid=0x17001c00 nid=0x1844 in Object.wait() [0x1724f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0402cf70> (a java.lang.Object) at java.lang.Object.wait(Object.java:485) at sun.awt.AWTAutoShutdown.run(Unknown Source) - locked <0x0402cf70> (a java.lang.Object) at java.lang.Thread.run(Unknown Source) "Java2D Disposer" daemon prio=10 tid=0x17018800 nid=0x1cbc in Object.wait() [0x171ff000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0402d000> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x0402d000> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) at sun.java2d.Disposer.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "Low Memory Detector" daemon prio=6 tid=0x16c80400 nid=0x1cac runnable [0x00000000] java.lang.Thread.State: RUNNABLE "CompilerThread0" daemon prio=10 tid=0x16c7a400 nid=0x450 waiting on condition [0x00000000] java.lang.Thread.State: RUNNABLE "Attach Listener" daemon prio=10 tid=0x16c78c00 nid=0x1d44 runnable [0x00000000] java.lang.Thread.State: RUNNABLE "Signal Dispatcher" daemon prio=10 tid=0x16c77800 nid=0x1b30 waiting on condition [0x00000000] java.lang.Thread.State: RUNNABLE "Finalizer" daemon prio=8 tid=0x16c67800 nid=0x19cc in Object.wait() [0x16ddf000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x03ebd718> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x03ebd718> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source) "Reference Handler" daemon prio=10 tid=0x16c62c00 nid=0x1eb0 in Object.wait() [0x16d8f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x03ebd7a0> (a java.lang.ref.Reference$Lock) at java.lang.Object.wait(Object.java:485) at java.lang.ref.Reference$ReferenceHandler.run(Unknown Source) - locked <0x03ebd7a0> (a java.lang.ref.Reference$Lock) "main" prio=6 tid=0x003b6400 nid=0x1e2c in Object.wait() [0x009df000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x041915c8> (a java.lang.Object) at java.lang.Object.wait(Object.java:485) at net.sf.colossus.server.Server.waitUntilGameFinishes(Server.java:780) - locked <0x041915c8> (a java.lang.Object) at net.sf.colossus.server.GameServerSide.cleanupWhenGameOver(GameServerSide.java:401) at net.sf.colossus.server.GameServerSide.startNewGameAndWaitUntilOver(GameServerSide.java:454) at net.sf.colossus.appmain.Start.setupAndLoop(Start.java:663) at net.sf.colossus.appmain.Start.main(Start.java:874) "VM Thread" prio=10 tid=0x16c5fc00 nid=0x10fc runnable "VM Periodic Task Thread" prio=10 tid=0x16c82c00 nid=0x1a00 waiting on condition JNI global references: 1473 Found one Java-level deadlock: ============================= "AWT-EventQueue-0": waiting to lock monitor 0x177e5b1c (object 0x02ba1288, a java.lang.Object), which is held by "EventQueueMonitor-ComponentEvtDispatch" "EventQueueMonitor-ComponentEvtDispatch": waiting to lock monitor 0x176e8c54 (object 0x13872538, a java.lang.Class), which is held by "AWT-EventQueue-0" Java stack information for the threads listed above: =================================================== "AWT-EventQueue-0": at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruit.<init>(PickRecruit.java:168) at net.sf.colossus.gui.PickRecruit.pickRecruit(PickRecruit.java:186) - locked <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at net.sf.colossus.gui.ClientGUI.doPickRecruit(ClientGUI.java:2097) at net.sf.colossus.client.Client.doRecruit(Client.java:1763) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch": at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x04048108> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) Found 1 deadlock. Heap def new generation total 1216K, used 704K [0x02a90000, 0x02be0000, 0x03e40000) eden space 1088K, 57% used [0x02a90000, 0x02b2b388, 0x02ba0000) from space 128K, 65% used [0x02ba0000, 0x02bb4f20, 0x02bc0000) to space 128K, 0% used [0x02bc0000, 0x02bc0000, 0x02be0000) tenured generation total 15784K, used 9845K [0x03e40000, 0x04daa000, 0x12a90000) the space 15784K, 62% used [0x03e40000, 0x047dd428, 0x047dd600, 0x04daa000) compacting perm gen total 14336K, used 14223K [0x12a90000, 0x13890000, 0x16a90000) the space 14336K, 99% used [0x12a90000, 0x13873d10, 0x13873e00, 0x13890000) No shared spaces configured. Terminate batch job (Y/N)? ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 22:27 Message: NOTE, from the Java console log you should be able to copy paste! (mark with mouse and Ctrl-C or right click -> copy.) Only from that Colossus own "About" window you can't copy paste. Not sure whether that affinity helps; Colossus is "multithreaded", so if there is more than one core existing it might still use a 2nd. (affinity to me means merely, it would _preferrably_ run on that core). My suspicion is it is some kind of deadlock, caused by the way how those dialogs are called: "synchronous" , and in the "Event Dispatcher thread". That it happens randomly is much more "reasonable" than that some dialogs lock and some not. Such random misbehaviors we had earlier. They were fixed, but merely "somehow" and "when it happened", not systematically "rewrite everything to be thread-safe by design". Can you try the following: Run it from commandline. If possible, make the commandline window as big as possible, like window size (field 3 +4) width 150 height 50, screen buffer size (1+2 fields) 150 and 3000.) (to do so, on the cmdline window, click the smal C:\ in top LEFT corner, Properties). When it looks, make the cmdline box the active window and press Ctrl-Break (bottom left and top right keys of the keyboard together ;-)) Lot of glibberish would be printed to screen. Same top left icon, Edit => Select all ; copy (ctrl-c or from same menu copy). Send me what's there (or post it here). That's the "which thread is doing what at the moment" summary. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 22:10 Message: yes I was able to limit the program running on one processer. Or at least I told it to set its affinity to Core 0 from the processes. It still locked up. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 22:08 Message: I did some further testing... it will actually lock up randomly still. Doesn't matter if I can recruit one or two. :/ ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 22:06 Message: Ran java -version from command window: java version "1.6.0_17" Java(TM) SE Runtime Environment (build 1.6.0_17-b04) Java HotSpot(TM) Client VM (build 14.3-b01, mixed mode) I figured out how to get into the Java Options. Logging was turned off. So now I have a Java Console window when the program opens. So I tried a game, and it got stuck after 2nd time I tried to add a recruit. Btw, I notice it seems to do it when I can choose more than one recruit. Here is the last few lines of the log: (man... this is a lot of typing and I'm not sure it is really showing any errors. It just shows the last step before it "froze". INFO: Legion Gr09 (Lobster) in Tower hex 600 moves to Jungle hex 135 entering on RIGHT Feb 10, 2011 2:00:47 PM net.sf.colossus.server.GameServerSide$GamePhaseAdvancer advancePhaseInternal INFO:Phase advances to Muster Feb 10, 2011 2:00:49 PM net.sf.colossus.server.LegionServerSide addCreature INFO: Added Ceentaur -now there are 20 left. Feb 10, 2011 2:00:49 PM net.sf.colossus.server.GameServerSide doRecruit INFO: Legion Gr05 in Woods hex 39 recruits Centaur with 1 Centaur ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 21:37 Message: > It is a quad core system. hm. That might be part of the reason. I have some wild guess what it could be... Can you tell me exact java version? Help => About tells it. It tells also Log directory, there would be a file Colossus0.log. (The *0,log is always the newest; if new starts, it renames 1 to 2, 0 to 1nd creates new 0.log file). Sorry you have to type the stuff from Help => About, no copy paste. Or make a screenshot if you know how. If you wish you can also send it to me via mail (my SF username, i.e. the "cleka", then the magic a-like character, then users.sourceforge.net . Can you tune your system to use one CPU only? ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 21:15 Message: We were at a party and someone brought the board game Titan over. It confused the heck out of us (never even made it around once) but it seemed interesting. I did a search and found you making an app for it. So I thought I'd try it out. I am definitely brand new to Titan, so I expect to actually be the only player on here that gets defeated by your "dumb" AI. It is a quad core system. No I can not close the the dialog box with the small "X". In fact I can't do anything except shut it down. I selected Auto Pick Recruiters... and now I think it hangs up on actual recruiting now. It appears random too. Sometimes I can recruit a whole stack (7) without "locking up" and other times it will do it after the first recruit. (btw... sometimes I can't move a stack. That just a rule I'm not aware of?) ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:50 Message: Do you happen to know, do you have more than one CPU or CPU core? ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:43 Message: BTW, are you "well familiar with Titan, just new to use Colossus, or need to learn also "how game works, rules, strategy, etc." first? Once you are familar with the game and the usage, you could even try the public game server (by clicking the "WebClient" button), where you could find other "real people" to play against. (in contrast to the AI ("Artificial Intelligence") i.e. Robot players... However to notice is, people are usually online in afternoon/evening for US time. At other time you might log in there and be alone 30 or 60 mins before any other drop by. However, that's anyway more recommded only a) it does not hang for you any more and b) once you are "fluent" in playing. It's annoying for others when you need, let's say, 1.5 minutes for each individual move, split, recruit etc.... => Practicing to get faster better with AI players.They are all in all rather dump, but for first few weeks ok. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:35 Message: okay (or not okay), but that's something. In worst case I have to make you a special version which prints something to screen for every line of code before and around where it calls that "Pick Recruiter" dialog :)) That's what I meant, you might run into a "block" somewhat later with some other dialog. But the recruit dialog itself worked?? Strange; they are very similarly programmed. Some more "smalltalk" :o) > Made me green in fact. > I guess I can always play green. :p :) You can try: Window => Preferences => "Color" tab. Click on "Select" and choose another color. Next time you START a game it would choose that color for you automatically. (all those "Autoplay" options do certain things for you. So in fact you could enable "Auto Pick Recruiter", since that one is rather unimportant, as long as you can choose an actual Recruit. (so we can circumvent THIS cliff for now). But there might be other dialogs later to block you as well. And/or, in fact that's an interesting thing to try, whether that color chooser dialog would work??? If not, can you close it with the "x" shaped icon in upper right corner? (the initial color pick dialog CAN'T be closed that way, or rather, if one does, it reappears immediately.) So, sure, I'd like to continue troubleshoot this. Let's try that above for now, have to bring kids to bed now. -Cle. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 20:17 Message: So I've been running through this... moving, recruiting, etc... then I came to a point where it won't let me pick again. :/ Says: kevinnew: Pick Recruiter in Brush hex17 There is more than one way you can recruit this. Current content of legion Gr05: There is a Titan, Cyclops, Gargoyle, Gargoyle, Centaur, Centaur Pick the creature type you want to reveal: There is a Cyclops, Gargoyle I can't pick anything. Tried clicking on it numerous times. Nothing will select and it is stuck on this dialog box. Not sure why this happening... but thank you for sticking it out with me. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 20:12 Message: You are correct. I typed the name in, it found it and ran fine. Well.. I can play now. yay! ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 20:08 Message: K so, I opened the default kevin.cfg and added those lines to it: Auto\ pick\ markers=true Auto\ pick\ color=true Favorite\ colors=Green And it worked. The game started. Made me green in fact. So far so good to, I was able to split a stack. Move the unit. Recruit. And watched the computer take it's move as well. So not sure why it wasn't working but it is now. Want to continue to troubleshoot? I guess I can always play green. :p ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:06 Message: No, you cannot "pick" the name kevinnew - it does not offer all "names that may exist". You choose the name on "Players" tab, On left side, Choose HUman, on right side type the name. 2nd Line, choose e.g. "SimpleAI", it fills right side with <byColor> or something, thats ok, Type there in first line the name kevinnew, and when game starts, it goes looking for a file Colossus-kewvinnew.cfg [and if it wouldn't exist, create it, sooner or later, after GUI / preferences changes]. Now we pre-create that file, so that it skips the color picking dialog because it would find a value to say "auto pick" from the file. -Cle. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 19:59 Message: btw, I did try and run the Colossus.jnlp stand alone and brings up the welcome screen, I hit ok, and the Game setup screen appears. I still can't choose newkevin and when I run it, once again I can not pick any of the colors. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 19:57 Message: I'll start from the beginning: • I open a folder I extracted all the files to from the .zip • I double click on run.bat A cmd window pops up with: C:\Documents and Settings\kevin\Desktop\collossus>cd "c:\Documents and Settings\kevin\Desktop\collossus\" C:\Documents and Settings\kevin\Desktop\collossus>java -Djava.util.logging.config.file=logging.properties -XMx256M -jar Colossus.jar Then what looks like the main program appears. It is the game setup screen. I make player one a human player and choose Kevin as the type. I make the 2nd player a SimpleAI and choose <By color> for the type. I leave everything else as is. (btw the top says Running Colossus Version 0.12.0-beta1 (revision 4970) on etc...) • I pick New game. The game appears to start, I can see the grid in the background with all the hills, deserts, etc. A small box with Pick a Color appears. I can move this box around. But I can not pick a color. I've tried clicking on every single one. I've tried pressing G, e, o, etc. I've tried Ctrl/Alt combinations, nothing. I can not close it either. I have to force it to shutdown. In Task Manager it shows that it is still running... so I don't THINK it is locked up. I do NOT see any other windows anywhere that I might need to click. I've even tried Alt+Tab and Ctrl+Tab to check. • I went ahead and did a search for the .colossus folder. I found it. It has 5 files in it. Colossus-netclient.cfg Colossus-red.cfg Colossus-server.cfg Colossus-kevin.cfg Colossus-kevin1.cfg • I went ahead and created a new .cfg file. I named it Colossus-kevinnew.cfg. I added these lines to it: Auto\ pick\ markers=true Auto\ pick\ color=true Favorite\ colors=Green Interestingly here, when I started the program, I could not choose kevinnew. I could only still see kevin. I searched my entire computer to see if the .cfg files might also be somewhere else but I could only find them under \\documents and settings\kevin\desktop\collossus • Ok so I tried your command prompt idea. I even ran the command from within the path and I kept getting this error... Unable to access jarfile Colossus.jar I can't imagine it being a graphical error... the program still seems to be running fine, I just can't select any color. In Task Manager it doesn't say "not responding". So I will wait for your reply. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 19:06 Message: ok, XP with SP3 and Sun Java 6 ( 1.6.x ). All right, that should work. ( I may have in use SP2 but still). E.g. "Windows Vista" or "Windows 7" are more "exotic" for me. Sun Java is good also. Did you get the "Welcome to Release 0.12.0" dialog and click it away? (if not, it might have lurked around in the background hidden behind some other window and block the mouse/keyboard input or whatever ("modal dialog"). Should technically not happen/be possible, but one has seen stranger things happen.... The History.java is one of the source files, not relevant. > The only .cf files I could find are WebServer.cf, WebServer_unix.cf, > and WebServer_win.cf. Do you want me to add a line into one of these? No. They are part of the "sources" as well, in some sense. Once started, Colossus will create a directory ".colossus" (and 2 files in it) "somewhere on your computer" - in what it considers to be "your home directory". What that exactly is, might vary... The home directory is under Windows _often_ something like: C:\Documents and Settings\Mike if you logged in to the computer with username Mike. Often you get there with right-click on Start button => Explore => opens an explorer e.g. to C:\Documents and Settings\katzer\Start Menu for me as user katzer. So katzer would be my home dir. However on my computer it's configured differently, so my home directory is D:\katzer You can take an explorer (the Start => right-click => Explore thing) and type in the "path"/adress line in the top "%HOME%" and press return. (you may need to make it visible first with View => Toolbars => Address bar ). Inside there should be .colossus. Once you found that we are much further :) (normally, once masterboardboard is open, Help => About would tell the location but you don't even get there yet :-/ ) Inside there will be eventually several .cfg files (and perhaps a "saves" directory). Directory of D:\katzer\.colossus 07.02.2011 10:06 <DIR> . 07.02.2011 10:06 <DIR> .. 07.02.2011 15:12 1 997 Colossus-clemens.cfg 08.02.2011 19:49 4 425 Colossus-katzer.cfg 08.02.2011 19:49 2 069 Colossus-katzer1.cfg 28.07.2010 17:18 276 Colossus-netclient.cfg 08.02.2011 19:49 900 Colossus-server.cfg 07.02.2011 15:12 2 059 Colossus-test1.cfg 07.02.2011 22:00 586 Colossus-webclient.cfg 07.02.2011 10:56 <DIR> saves 7 File(s) 12 312 bytes 3 Dir(s) 21 313 040 384 bytes free D:\katzer\.colossus> You can ignore the "-server", -webclient and -netclient files for now - they are "internal". -katzer and -clemens etc. are "client preferences" files. Like, I played once a game as clemens, and when changed preferences such as the various auto-<do something>, position and size of windows etc., Colossus would save those to a file with that name. (some other, like Variant, type and names of players, Options in Startup dialog, are stored to the Colossus-server.cfg file). Usually when you get the Game Setup dialog (where you choose variant, count and type of players etc), first of them you make "Human" and name is initialized with the name you are logged on to the computer. Thus created with some text editor (notepad, if necessary), a textfile named Colossus-Mike.cfg (replace your name, of course). (if necessaary, right click in the right side of explorer, where the files are shown => New => Text Document => then there exists a file "New File.txt" (or similar). Click it, or F2 on it, change name to above. Put into that file the following three lines: Auto\ pick\ markers=true Auto\ pick\ color=true Favorite\ colors=Green Note the "backslash" ( \ ) in front of the space. Now if you start a game with your player name set to "Mike" the Pick... dialogs should not appear. So question is, what will get stuck then :) The other interesting thing to try is, if you can run from commandline (by typing that command, which will make the java command shown): java -Djava.util.logging.config.file=file=logging.properties -Xmx256M -jar Colossus.jar While Colossus runs, eventually happening warnings etc. would be printed to that Command window. But if it's a total "Graphics stuff somehow freezes" (like it sounds, that it does not accept click or key on any of the colors) ... hm. Tricky. Might be no warning/exception, just the graphics thread (EDT, Event Dispatcher Thread, techno babble... ;-) hangs. Let's see so far, how far we get with above. If we get that, I've already some ideas how to proceed. BR, Clemens ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 17:15 Message: Not sure if this will help... I found a file called History.java under my recent documents. It's pretty lengthy but it is listed below: package net.sf.colossus.server; import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import net.sf.colossus.common.Constants; import net.sf.colossus.game.Creature; import net.sf.colossus.game.EntrySide; import net.sf.colossus.game.Legion; import net.sf.colossus.game.Player; import net.sf.colossus.game.actions.AddCreatureAction; import net.sf.colossus.game.actions.Recruitment; import net.sf.colossus.util.Glob; import net.sf.colossus.variant.CreatureType; import net.sf.colossus.variant.MasterHex; import org.jdom.Element; /** * Stores game history as XML. * * @author David Ripton */ public class History { private static final Logger LOGGER = Logger.getLogger(History.class .getName()); /** * History: events that happened before last commit point */ private final Element root; /** * History elements/events that happened since the last commit/"snapshot". */ private final List<Element> recentEvents = new LinkedList<Element>(); /** * Set to true during the processing of {@link #fireEventsFromXML(Server)} * to avoid triggering events we just restored again. */ private boolean loading = false; /** * */ private final Element loadedRedoLog; private boolean isRedo = false; /** * Stores the surviving legions (this variable is not needed any more) * * While the history should contain all information to reproduce the game * state, the last set of legions is currently still loaded upfront since * they contain the battle-specific information. This collides with * replaying the game from history... * Now, since 08/2008, they are not stored as "survivorlegions" any more. * Instead, they are backed up internally (done inside PlayerServerSide), * all the history is replayed. This creates proper split prediction data * in all clients. After that, backup data is compared with result of * replay. * E.g. Legion count, their content, players eliminated must be in sync. * Then the replayed ones are discarded and the backedup ones restored * - which have the right legion state (moved, donor, summoned, ...) * * TODO align the history replay more with the original gameplay so we * don't need this anymore; * 08/2008:==> this is now to some part done. Still replay * events could be closer to original events (split, summon, * acquire, teleport, ...) , not just the "result" of that * event (reveal,add,remove effects). * * TODO instead: model the actual events instead of just result, * or at least add relevant info to history elements, so that all * replayed events carry all needed data so that they could also be * processed by event viewer (currently EV does not process anything * during replay). */ public History() { root = new Element("History"); // Dummy: loadedRedoLog = new Element("LoadedRedoLog"); } /** * Constructor used by "LoadGame" */ public History(Element loadGameRoot) { // Get the history elements and store them to "root" root = (Element)loadGameRoot.getChild("History").clone(); // Get the redo log content loadedRedoLog = (Element)loadGameRoot.getChild("Redo").clone(); } /** * All events before last commit */ Element getCopy() { return (Element)root.clone(); } /** * Reached a commit point: append all recent events to the history, * clear list of recent events; caller should do this together with creating * the next snapshot. */ void flushRecentToRoot() { for (Element el : recentEvents) { el.detach(); String name = el.getName(); // TODO later, when this are proper events (not XML elements), // ask rather from the Event whether it belongs copied to // history or not. // TODO At some point in future, put also those Move events // that reveal something to history, and make either the history // replay only send the relevant reveal messages, or make the // Clients during replay (but not redo part) ignore the "move" // and just process the revealing part. // Preferrably the latter, so that proper events show up in the // EventViewer. if (name.equals("Move") || name.equals("UndoMove")) { LOGGER.finest("Flush Redo to History: skipping " + name); } else if (name.equals("Recruit") || name.equals("UndoRecruit")) { // Skipping for now, because there are also the addCreature, // removeCreature and reveal Events still in history. // TODO make the Recruit/UndoRecruit history events during // replay properly, get rid of the "side effect" type of // entries in save game. LOGGER.finest("Flush Redo to History: skipping " + name); } else { root.addContent(el); } } recentEvents.clear(); } /** * @return A Redo Element, containing all events since last commit * i.e. which need to be REDOne on top of last commit point/snapshot */ Element getNewRedoLogElement() { Element redoLogElement = new Element("Redo"); for (Element el : recentEvents) { el.detach(); redoLogElement.addContent(el); } return redoLogElement; } /** * TODO reconsider name * TODO decide if we should move it all into one big handleEvent(GameEvent) method */ void addCreatureEvent(AddCreatureAction event, int turn, String reason) { if (loading) { return; } Element element = new Element("AddCreature"); element.setAttribute("markerId", event.getLegion().getMarkerId()); element.setAttribute("creatureName", event.getAddedCreatureType() .getName()); element.setAttribute("turn", "" + turn); element.setAttribute("reason", reason); recentEvents.add(element); } void removeCreatureEvent(Legion legion, CreatureType creature, int turn, String reason) { if (loading) { return; } Element event = new Element("RemoveCreature"); event.setAttribute("markerId", legion.getMarkerId()); event.setAttribute("creatureName", creature.getName()); event.setAttribute("turn", "" + turn); event.setAttribute("reason", reason); recentEvents.add(event); } void splitEvent(Legion parent, Legion child, List<CreatureType> splitoffs, int turn) { if (loading) { return; } Element event = new Element("Split"); event.setAttribute("parentId", parent.getMarkerId()); event.setAttribute("childId", child.getMarkerId()); event.setAttribute("turn", "" + turn); Element creatures = new Element("splitoffs"); event.addContent(creatures); for (CreatureType creatureType : splitoffs) { Element cr = new Element("creature"); cr.addContent(creatureType.getName()); creatures.addContent(cr); } recentEvents.add(event); } void mergeEvent(String splitoffId, String survivorId, int turn) { if (loading) { return; } Element event = new Element("Merge"); event.setAttribute("splitoffId", splitoffId); event.setAttribute("survivorId", survivorId); event.setAttribute("turn", "" + turn); recentEvents.add(event); } void revealEvent(boolean allPlayers, List<Player> players, Legion legion, List<CreatureType> creatures, int turn, String reason) { if (loading) { return; } if (creatures.isEmpty()) { // this happens e.g. when in final battle (titan vs. titan) // angel was called out of legion which was then empty, // and in the final updateAllLegionContents there is then // this empty legion... // TODO if this case can happen in a regular game no warning // should be logged LOGGER.log(Level.WARNING, "Called revealEvent(" + allPlayers + ", " + (players != null ? players.toString() : "-null-") + ", " + legion + ", " + creatures.toString() + ", " + turn + ") with empty creatureNames"); return; } Element event = new Element("Reveal"); event.setAttribute("markerId", legion.getMarkerId()); event.setAttribute("allPlayers", "" + allPlayers); event.setAttribute("turn", "" + turn); event.setAttribute("reason", reason); if (!allPlayers) { Element viewers = new Element("viewers"); event.addContent(viewers); Iterator<Player> it = players.iterator(); while (it.hasNext()) { String playerName = it.next().getName(); Element viewer = new Element("viewer"); viewer.addContent(playerName); viewers.addContent(viewer); } } Element creaturesElem = new Element("creatures"); event.addContent(creaturesElem); for (CreatureType creatureType : creatures) { Element creatureElem = new Element("creature"); creatureElem.addContent(creatureType.getName()); creaturesElem.addContent(creatureElem); } recentEvents.add(event); } void playerElimEvent(Player player, Player slayer, int turn) { if (loading) { return; } Element event = new Element("PlayerElim"); event.setAttribute("name", player.getName()); if (slayer != null) { event.setAttribute("slayer", slayer.getName()); } event.setAttribute("turn", "" + turn); recentEvents.add(event); } void movementRollEvent(Player player, int roll) { if (loading) { return; } Element event = new Element("MovementRoll"); event.setAttribute("playerName", player.getName()); event.setAttribute("roll", "" + roll); recentEvents.add(event); } void legionMoveEvent(Legion legion, MasterHex newHex, EntrySide entrySide, boolean teleport, CreatureType lord) { if (loading) { return; } Element event = new Element("Move"); event.setAttribute("markerId", legion.getMarkerId()); event.setAttribute("newHex", newHex.getLabel()); event.setAttribute("entrySide", entrySide.getLabel()); event.setAttribute("teleport", "" + teleport); String creNameOrTextNull = lord == null ? "null" : lord.getName(); event.setAttribute("revealedLord", creNameOrTextNull); recentEvents.add(event); } void legionUndoMoveEvent(Legion legion) { if (loading) { return; } Element event = new Element("UndoMove"); event.setAttribute("markerId", legion.getMarkerId()); recentEvents.add(event); } void recruitEvent(Legion legion, CreatureType recruit, CreatureType recruiter) { if (loading) { return; } Element event = new Element("Recruit"); event.setAttribute("markerId", legion.getMarkerId()); event.setAttribute("recruit", recruit.getName()); event.setAttribute("recruiter", recruiter == null ? "null" : recruiter .getName()); recentEvents.add(event); } void undoRecruitEvent(Legion legion) { if (loading) { return; } Element event = new Element("UndoRecruit"); event.setAttribute("markerId", legion.getMarkerId()); recentEvents.add(event); } /** * Fire all events from redoLog. * Elements from RedoLog are processed one by one and the corresponding * method is called on the Server object, pretty much as if a * ClientHandler would call it when receiving such a request from Client. * Note that in some cases overriding the processingCH is necessary * (because technically, this all currently happens while still the * connecting of last joining player is processed, so processingCH is * set to his ClientHandler). * * Note that "loading" is not set to true, so they DO GET ADDED to the * recentEvents list again. * * @param server The server on which to call all the actions to be redone */ void processRedoLog(Server server) { assert loadedRedoLog != null : "Loaded RedoLog should always " + "have a JDOM root element as backing store"; LOGGER.info("History: Start processing redo log"); isRedo = true; for (Object obj : loadedRedoLog.getChildren()) { Element el = (Element)obj; LOGGER.info("processing redo event " + el.getName()); fireEventFromElement(server, el); } isRedo = false; // TODO clear loadedRedoLog? LOGGER.info("Completed processing redo log"); } // unchecked conversions from JDOM @SuppressWarnings("unchecked") void fireEventsFromXML(Server server) { this.loading = true; assert root != null : "History should always have a " + " JDOM root element as backing store"; List<Element> kids = root.getChildren(); Iterator<Element> it = kids.iterator(); while (it.hasNext()) { Element el = it.next(); fireEventFromElement(server, el); } this.loading = false; } // unchecked conversions from JDOM @SuppressWarnings("unchecked") void fireEventFromElement(Server server, Element el) { GameServerSide game = server.getGame(); String eventName = el.getName(); String reasonPerhaps = el.getAttributeValue("reason"); String reason = (reasonPerhaps != null && !reasonPerhaps .equals("null")) ? reasonPerhaps : "<undefinedReason>"; if (eventName.equals("Reveal") && isRedo && reason.equals(Constants.reasonRecruiter)) { // Skip this because we redo the full recruit event // TODO LOGGER.finest("Skipping Reveal event (reason " + reason + ") during redo."); } else if (eventName.equals("AddCreature") && isRedo && reason.equals(Constants.reasonRecruited)) { // Skip this because we redo the full recruit event LOGGER.finest("Skipping AddCreature event (reason " + reason + ") during redo."); } else if (eventName.equals("RemoveCreature") && isRedo && reason.equals(Constants.reasonRecruited)) { // Skip this because we redo the full recruit event LOGGER.finest("Skipping RemoveCreature event (reason " + reason + ") during redo."); } else if (eventName.equals("Reveal")) { String allPlayers = el.getAttributeValue("allPlayers"); boolean all = allPlayers != null && allPlayers.equals("true"); String markerId = el.getAttributeValue("markerId"); List<String> playerNames = new ArrayList<String>(); Element viewEl = el.getChild("viewers"); int turn = Integer.parseInt(el.getAttributeValue("turn")); String playerName = null; if (viewEl != null) { List<Element> viewers = viewEl.getChildren(); Iterator<Element> it = viewers.iterator(); while (it.hasNext()) { Element viewer = it.next(); playerName = viewer.getTextNormalize(); playerNames.add(playerName); } } List<Element> creatureElements = el.getChild("creatures") .getChildren(); List<CreatureType> creatures = new ArrayList<CreatureType>(); for (Element creature : creatureElements) { String creatureName = creature.getTextNormalize(); creatures.add(game.getVariant() .getCreatureByName(creatureName)); } Player player = game.getPlayerByMarkerId(markerId); Legion legion; if (turn == 1 && player.getLegionByMarkerId(markerId) == null) { // there is no create event for the startup legions, // so we might need to create them for the reveal event legion = new LegionServerSide(markerId, null, player .getStartingTower(), player.getStartingTower(), player, game, creatures .toArray(new CreatureType[creatures.size()])); player.addLegion(legion); } else { legion = player.getLegionByMarkerId(markerId); } // TODO Now we get the reason from history element - does this // change effect/break anything? // String reason = "<unknown>"; if (((PlayerServerSide)player).getDeadBeforeSave()) { // Skip for players that will be dead by end of replay } else if (all) { server.allRevealCreatures(legion, creatures, reason); } else { server.oneRevealLegion(game.getPlayerByName(playerName), legion, creatures, reason); } } else if (eventName.equals("Split")) { String parentId = el.getAttributeValue("parentId"); String childId = el.getAttributeValue("childId"); String turnString = el.getAttributeValue("turn"); int turn = Integer.parseInt(turnString); List<String> creatureNames = new ArrayList<String>(); List<CreatureType> creatures = new ArrayList<CreatureType>(); List<Element> splitoffs = el.getChild("splitoffs").getChildren(); Iterator<Element> it = splitoffs.iterator(); while (it.hasNext()) { Element creature = it.next(); String creatureName = creature.getTextNormalize(); creatureNames.add(creatureName); creatures.add(game.getVariant() .getCreatureByName(creatureName)); } LegionServerSide parentLegion = game.getLegionByMarkerId(parentId); if (isRedo) { server.overrideProcessingCH(parentLegion.getPlayer()); server.doSplit(parentLegion, childId, creatures); server.overrideProcessingCH(parentLegion.getPlayer()); return; } // LegionServerSide.split(..) doesn't like us here since the parent // legion can't remove creatures (not there?) -- create child directly // instead PlayerServerSide player = parentLegion.getPlayer(); LegionServerSide childLegion; if (player.hasLegion(childId)) { childLegion = game.getLegionByMarkerId(childId); LOGGER.severe("During replay of history: child legion " + childId + " should not " + "exist yet (turn=" + turn + ")!!\n" + "Exists already with: " + Glob.glob(",", childLegion.getCreatureTypes()) + " but " + "should now be created with creatures: " + creatures); childLegion.remove(); } childLegion = new LegionServerSide(childId, null, parentLegion .getCurrentHex(), parentLegion.getCurrentHex(), player, game, creatures.toArray(new CreatureType[creatures.size()])); player.addLegion(childLegion); for (CreatureType creature : creatures) { parentLegion.removeCreature(creature, false, false); } // Skip for players that will be dead by end of replay if (!player.getDeadBeforeSave()) { server.allTellDidSplit(parentLegion, childLegion, turn, false); } } else if (eventName.equals("Merge")) { String splitoffId = el.getAttributeValue("splitoffId"); String survivorId = el.getAttributeValue("survivorId"); String turnString = el.getAttributeValue("turn"); int turn = Integer.parseInt(turnString); LegionServerSide splitoff = game.getLegionByMarkerId(splitoffId); LegionServerSide survivor = game.getLegionByMarkerId(survivorId); // Skip for players that will be dead by end of replay if (!survivor.getPlayer().getDeadBeforeSave()) { server.undidSplit(splitoff, survivor, false, turn); } // Add them back to p... [truncated message content] |
|
From: SourceForge.net <no...@so...> - 2011-02-10 20:43:53
|
Bugs item #3177305, was opened at 2011-02-10 14:40 Message generated for change (Comment added) made by cleka You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101939&aid=3177305&group_id=1939 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: GUI Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Nobody/Anonymous (nobody) Assigned to: Clemens Katzer (cleka) Summary: Can not pick color to start game Initial Comment: Recently tried to play this game. I downloaded both the java version and the zip file. Both seem to start up just fine. The board will appear and another small window with choose a color pops up. I can not click on any color. I've tried pressing the letters that correspond to the colors. I've tried alt and ctrl combinations. Nothing works. I have to force the program to quit. Ideas? ---------------------------------------------------------------------- >Comment By: Clemens Katzer (cleka) Date: 2011-02-10 22:43 Message: Yeah. As I almost expected: > Found 1 deadlock. Analyzing that and thinking how to go further will take some time. But I have to go sleeping now (22:40 here in Finland) and I have to get up early tomorrow. I try to look deeper into it tomorrow. Meanwhile, can you find a 5 year old laptop somewhere? ;-) (namely, any computer with one CPU or core only...) Chances are there it works fine. >btw, I couldn't copy and paste the java console because when the > program locked it wouldn't let me select the console either. Ah, right! And ah, you saw the deadlock reported also. Br, Clemens ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 22:40 Message: btw, I couldn't copy and paste the java console because when the program locked it wouldn't let me select the console either. and looks like your suspicions are right about that dead lock... shows below it found 1. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 22:38 Message: holy moly... its a lot... here goes: at net.sf.colossus.client.SocketClientThread.readAndParseUntilDone(SocketClientThread.java:419) at net.sf.colossus.client.SocketClientThread.run(SocketClientThread.java:373) "Client kevin" prio=6 tid=0x170d5400 nid=0x1eb4 runnable [0x17cdf000] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(Unknown Source) at sun.nio.cs.StreamDecoder.readBytes(Unknown Source) at sun.nio.cs.StreamDecoder.implRead(Unknown Source) at sun.nio.cs.StreamDecoder.read(Unknown Source) - locked <0x041a4f00> (a java.io.InputStreamReader) at java.io.InputStreamReader.read(Unknown Source) at java.io.BufferedReader.fill(Unknown Source) at java.io.BufferedReader.readLine(Unknown Source) - locked <0x041a4f00> (a java.io.InputStreamReader) at java.io.BufferedReader.readLine(Unknown Source) at net.sf.colossus.client.SocketClientThread.waitForLine(SocketClientThread.java:504) at net.sf.colossus.client.SocketClientThread.readAndParseUntilDone(SocketClientThread.java:419) at net.sf.colossus.client.SocketClientThread.run(SocketClientThread.java:373) "Thread-4" prio=6 tid=0x1716a800 nid=0x1428 runnable [0x17c3f000] java.lang.Thread.State: RUNNABLE at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method) at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(Unknown Source) at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(Unknown Source) at sun.nio.ch.WindowsSelectorImpl.doSelect(Unknown Source) at sun.nio.ch.SelectorImpl.lockAndDoSelect(Unknown Source) - locked <0x0418f468> (a sun.nio.ch.Util$1) - locked <0x0418f478> (a java.util.Collections$UnmodifiableSet) - locked <0x0418f3f0> (a sun.nio.ch.WindowsSelectorImpl) at sun.nio.ch.SelectorImpl.select(Unknown Source) at net.sf.colossus.server.Server.handleOutsideChanges(Server.java:439) at net.sf.colossus.server.Server.waitOnSelector(Server.java:398) at net.sf.colossus.server.Server.run(Server.java:227) "TimerQueue" daemon prio=6 tid=0x176e6400 nid=0x1f8c in Object.wait() [0x17a9f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x04168e60> (a javax.swing.TimerQueue) at javax.swing.TimerQueue.run(Unknown Source) - locked <0x04168e60> (a javax.swing.TimerQueue) at java.lang.Thread.run(Unknown Source) "AWT-EventQueue-0" prio=6 tid=0x17042800 nid=0x1eac waiting for monitor entry [0x1759e000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruit.<init>(PickRecruit.java:168) at net.sf.colossus.gui.PickRecruit.pickRecruit(PickRecruit.java:186) - locked <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at net.sf.colossus.gui.ClientGUI.doPickRecruit(ClientGUI.java:2097) at net.sf.colossus.client.Client.doRecruit(Client.java:1763) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch" prio=6 tid=0x1701c000 nid=0x193c waiting for monitor entry [0x173bf000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x04048108> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) "AWT-Windows" daemon prio=6 tid=0x16ff8400 nid=0x1d74 runnable [0x1729f000] java.lang.Thread.State: RUNNABLE at sun.awt.windows.WToolkit.eventLoop(Native Method) at sun.awt.windows.WToolkit.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "AWT-Shutdown" prio=6 tid=0x17001c00 nid=0x1844 in Object.wait() [0x1724f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0402cf70> (a java.lang.Object) at java.lang.Object.wait(Object.java:485) at sun.awt.AWTAutoShutdown.run(Unknown Source) - locked <0x0402cf70> (a java.lang.Object) at java.lang.Thread.run(Unknown Source) "Java2D Disposer" daemon prio=10 tid=0x17018800 nid=0x1cbc in Object.wait() [0x171ff000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0402d000> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x0402d000> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) at sun.java2d.Disposer.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "Low Memory Detector" daemon prio=6 tid=0x16c80400 nid=0x1cac runnable [0x00000000] java.lang.Thread.State: RUNNABLE "CompilerThread0" daemon prio=10 tid=0x16c7a400 nid=0x450 waiting on condition [0x00000000] java.lang.Thread.State: RUNNABLE "Attach Listener" daemon prio=10 tid=0x16c78c00 nid=0x1d44 runnable [0x00000000] java.lang.Thread.State: RUNNABLE "Signal Dispatcher" daemon prio=10 tid=0x16c77800 nid=0x1b30 waiting on condition [0x00000000] java.lang.Thread.State: RUNNABLE "Finalizer" daemon prio=8 tid=0x16c67800 nid=0x19cc in Object.wait() [0x16ddf000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x03ebd718> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x03ebd718> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source) "Reference Handler" daemon prio=10 tid=0x16c62c00 nid=0x1eb0 in Object.wait() [0x16d8f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x03ebd7a0> (a java.lang.ref.Reference$Lock) at java.lang.Object.wait(Object.java:485) at java.lang.ref.Reference$ReferenceHandler.run(Unknown Source) - locked <0x03ebd7a0> (a java.lang.ref.Reference$Lock) "main" prio=6 tid=0x003b6400 nid=0x1e2c in Object.wait() [0x009df000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x041915c8> (a java.lang.Object) at java.lang.Object.wait(Object.java:485) at net.sf.colossus.server.Server.waitUntilGameFinishes(Server.java:780) - locked <0x041915c8> (a java.lang.Object) at net.sf.colossus.server.GameServerSide.cleanupWhenGameOver(GameServerSide.java:401) at net.sf.colossus.server.GameServerSide.startNewGameAndWaitUntilOver(GameServerSide.java:454) at net.sf.colossus.appmain.Start.setupAndLoop(Start.java:663) at net.sf.colossus.appmain.Start.main(Start.java:874) "VM Thread" prio=10 tid=0x16c5fc00 nid=0x10fc runnable "VM Periodic Task Thread" prio=10 tid=0x16c82c00 nid=0x1a00 waiting on condition JNI global references: 1473 Found one Java-level deadlock: ============================= "AWT-EventQueue-0": waiting to lock monitor 0x177e5b1c (object 0x02ba1288, a java.lang.Object), which is held by "EventQueueMonitor-ComponentEvtDispatch" "EventQueueMonitor-ComponentEvtDispatch": waiting to lock monitor 0x176e8c54 (object 0x13872538, a java.lang.Class), which is held by "AWT-EventQueue-0" Java stack information for the threads listed above: =================================================== "AWT-EventQueue-0": at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruit.<init>(PickRecruit.java:168) at net.sf.colossus.gui.PickRecruit.pickRecruit(PickRecruit.java:186) - locked <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at net.sf.colossus.gui.ClientGUI.doPickRecruit(ClientGUI.java:2097) at net.sf.colossus.client.Client.doRecruit(Client.java:1763) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch": at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x04048108> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) Found 1 deadlock. Heap def new generation total 1216K, used 704K [0x02a90000, 0x02be0000, 0x03e40000) eden space 1088K, 57% used [0x02a90000, 0x02b2b388, 0x02ba0000) from space 128K, 65% used [0x02ba0000, 0x02bb4f20, 0x02bc0000) to space 128K, 0% used [0x02bc0000, 0x02bc0000, 0x02be0000) tenured generation total 15784K, used 9845K [0x03e40000, 0x04daa000, 0x12a90000) the space 15784K, 62% used [0x03e40000, 0x047dd428, 0x047dd600, 0x04daa000) compacting perm gen total 14336K, used 14223K [0x12a90000, 0x13890000, 0x16a90000) the space 14336K, 99% used [0x12a90000, 0x13873d10, 0x13873e00, 0x13890000) No shared spaces configured. Terminate batch job (Y/N)? ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 22:27 Message: NOTE, from the Java console log you should be able to copy paste! (mark with mouse and Ctrl-C or right click -> copy.) Only from that Colossus own "About" window you can't copy paste. Not sure whether that affinity helps; Colossus is "multithreaded", so if there is more than one core existing it might still use a 2nd. (affinity to me means merely, it would _preferrably_ run on that core). My suspicion is it is some kind of deadlock, caused by the way how those dialogs are called: "synchronous" , and in the "Event Dispatcher thread". That it happens randomly is much more "reasonable" than that some dialogs lock and some not. Such random misbehaviors we had earlier. They were fixed, but merely "somehow" and "when it happened", not systematically "rewrite everything to be thread-safe by design". Can you try the following: Run it from commandline. If possible, make the commandline window as big as possible, like window size (field 3 +4) width 150 height 50, screen buffer size (1+2 fields) 150 and 3000.) (to do so, on the cmdline window, click the smal C:\ in top LEFT corner, Properties). When it looks, make the cmdline box the active window and press Ctrl-Break (bottom left and top right keys of the keyboard together ;-)) Lot of glibberish would be printed to screen. Same top left icon, Edit => Select all ; copy (ctrl-c or from same menu copy). Send me what's there (or post it here). That's the "which thread is doing what at the moment" summary. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 22:10 Message: yes I was able to limit the program running on one processer. Or at least I told it to set its affinity to Core 0 from the processes. It still locked up. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 22:08 Message: I did some further testing... it will actually lock up randomly still. Doesn't matter if I can recruit one or two. :/ ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 22:06 Message: Ran java -version from command window: java version "1.6.0_17" Java(TM) SE Runtime Environment (build 1.6.0_17-b04) Java HotSpot(TM) Client VM (build 14.3-b01, mixed mode) I figured out how to get into the Java Options. Logging was turned off. So now I have a Java Console window when the program opens. So I tried a game, and it got stuck after 2nd time I tried to add a recruit. Btw, I notice it seems to do it when I can choose more than one recruit. Here is the last few lines of the log: (man... this is a lot of typing and I'm not sure it is really showing any errors. It just shows the last step before it "froze". INFO: Legion Gr09 (Lobster) in Tower hex 600 moves to Jungle hex 135 entering on RIGHT Feb 10, 2011 2:00:47 PM net.sf.colossus.server.GameServerSide$GamePhaseAdvancer advancePhaseInternal INFO:Phase advances to Muster Feb 10, 2011 2:00:49 PM net.sf.colossus.server.LegionServerSide addCreature INFO: Added Ceentaur -now there are 20 left. Feb 10, 2011 2:00:49 PM net.sf.colossus.server.GameServerSide doRecruit INFO: Legion Gr05 in Woods hex 39 recruits Centaur with 1 Centaur ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 21:37 Message: > It is a quad core system. hm. That might be part of the reason. I have some wild guess what it could be... Can you tell me exact java version? Help => About tells it. It tells also Log directory, there would be a file Colossus0.log. (The *0,log is always the newest; if new starts, it renames 1 to 2, 0 to 1nd creates new 0.log file). Sorry you have to type the stuff from Help => About, no copy paste. Or make a screenshot if you know how. If you wish you can also send it to me via mail (my SF username, i.e. the "cleka", then the magic a-like character, then users.sourceforge.net . Can you tune your system to use one CPU only? ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 21:15 Message: We were at a party and someone brought the board game Titan over. It confused the heck out of us (never even made it around once) but it seemed interesting. I did a search and found you making an app for it. So I thought I'd try it out. I am definitely brand new to Titan, so I expect to actually be the only player on here that gets defeated by your "dumb" AI. It is a quad core system. No I can not close the the dialog box with the small "X". In fact I can't do anything except shut it down. I selected Auto Pick Recruiters... and now I think it hangs up on actual recruiting now. It appears random too. Sometimes I can recruit a whole stack (7) without "locking up" and other times it will do it after the first recruit. (btw... sometimes I can't move a stack. That just a rule I'm not aware of?) ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:50 Message: Do you happen to know, do you have more than one CPU or CPU core? ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:43 Message: BTW, are you "well familiar with Titan, just new to use Colossus, or need to learn also "how game works, rules, strategy, etc." first? Once you are familar with the game and the usage, you could even try the public game server (by clicking the "WebClient" button), where you could find other "real people" to play against. (in contrast to the AI ("Artificial Intelligence") i.e. Robot players... However to notice is, people are usually online in afternoon/evening for US time. At other time you might log in there and be alone 30 or 60 mins before any other drop by. However, that's anyway more recommded only a) it does not hang for you any more and b) once you are "fluent" in playing. It's annoying for others when you need, let's say, 1.5 minutes for each individual move, split, recruit etc.... => Practicing to get faster better with AI players.They are all in all rather dump, but for first few weeks ok. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:35 Message: okay (or not okay), but that's something. In worst case I have to make you a special version which prints something to screen for every line of code before and around where it calls that "Pick Recruiter" dialog :)) That's what I meant, you might run into a "block" somewhat later with some other dialog. But the recruit dialog itself worked?? Strange; they are very similarly programmed. Some more "smalltalk" :o) > Made me green in fact. > I guess I can always play green. :p :) You can try: Window => Preferences => "Color" tab. Click on "Select" and choose another color. Next time you START a game it would choose that color for you automatically. (all those "Autoplay" options do certain things for you. So in fact you could enable "Auto Pick Recruiter", since that one is rather unimportant, as long as you can choose an actual Recruit. (so we can circumvent THIS cliff for now). But there might be other dialogs later to block you as well. And/or, in fact that's an interesting thing to try, whether that color chooser dialog would work??? If not, can you close it with the "x" shaped icon in upper right corner? (the initial color pick dialog CAN'T be closed that way, or rather, if one does, it reappears immediately.) So, sure, I'd like to continue troubleshoot this. Let's try that above for now, have to bring kids to bed now. -Cle. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 20:17 Message: So I've been running through this... moving, recruiting, etc... then I came to a point where it won't let me pick again. :/ Says: kevinnew: Pick Recruiter in Brush hex17 There is more than one way you can recruit this. Current content of legion Gr05: There is a Titan, Cyclops, Gargoyle, Gargoyle, Centaur, Centaur Pick the creature type you want to reveal: There is a Cyclops, Gargoyle I can't pick anything. Tried clicking on it numerous times. Nothing will select and it is stuck on this dialog box. Not sure why this happening... but thank you for sticking it out with me. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 20:12 Message: You are correct. I typed the name in, it found it and ran fine. Well.. I can play now. yay! ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 20:08 Message: K so, I opened the default kevin.cfg and added those lines to it: Auto\ pick\ markers=true Auto\ pick\ color=true Favorite\ colors=Green And it worked. The game started. Made me green in fact. So far so good to, I was able to split a stack. Move the unit. Recruit. And watched the computer take it's move as well. So not sure why it wasn't working but it is now. Want to continue to troubleshoot? I guess I can always play green. :p ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:06 Message: No, you cannot "pick" the name kevinnew - it does not offer all "names that may exist". You choose the name on "Players" tab, On left side, Choose HUman, on right side type the name. 2nd Line, choose e.g. "SimpleAI", it fills right side with <byColor> or something, thats ok, Type there in first line the name kevinnew, and when game starts, it goes looking for a file Colossus-kewvinnew.cfg [and if it wouldn't exist, create it, sooner or later, after GUI / preferences changes]. Now we pre-create that file, so that it skips the color picking dialog because it would find a value to say "auto pick" from the file. -Cle. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 19:59 Message: btw, I did try and run the Colossus.jnlp stand alone and brings up the welcome screen, I hit ok, and the Game setup screen appears. I still can't choose newkevin and when I run it, once again I can not pick any of the colors. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 19:57 Message: I'll start from the beginning: • I open a folder I extracted all the files to from the .zip • I double click on run.bat A cmd window pops up with: C:\Documents and Settings\kevin\Desktop\collossus>cd "c:\Documents and Settings\kevin\Desktop\collossus\" C:\Documents and Settings\kevin\Desktop\collossus>java -Djava.util.logging.config.file=logging.properties -XMx256M -jar Colossus.jar Then what looks like the main program appears. It is the game setup screen. I make player one a human player and choose Kevin as the type. I make the 2nd player a SimpleAI and choose <By color> for the type. I leave everything else as is. (btw the top says Running Colossus Version 0.12.0-beta1 (revision 4970) on etc...) • I pick New game. The game appears to start, I can see the grid in the background with all the hills, deserts, etc. A small box with Pick a Color appears. I can move this box around. But I can not pick a color. I've tried clicking on every single one. I've tried pressing G, e, o, etc. I've tried Ctrl/Alt combinations, nothing. I can not close it either. I have to force it to shutdown. In Task Manager it shows that it is still running... so I don't THINK it is locked up. I do NOT see any other windows anywhere that I might need to click. I've even tried Alt+Tab and Ctrl+Tab to check. • I went ahead and did a search for the .colossus folder. I found it. It has 5 files in it. Colossus-netclient.cfg Colossus-red.cfg Colossus-server.cfg Colossus-kevin.cfg Colossus-kevin1.cfg • I went ahead and created a new .cfg file. I named it Colossus-kevinnew.cfg. I added these lines to it: Auto\ pick\ markers=true Auto\ pick\ color=true Favorite\ colors=Green Interestingly here, when I started the program, I could not choose kevinnew. I could only still see kevin. I searched my entire computer to see if the .cfg files might also be somewhere else but I could only find them under \\documents and settings\kevin\desktop\collossus • Ok so I tried your command prompt idea. I even ran the command from within the path and I kept getting this error... Unable to access jarfile Colossus.jar I can't imagine it being a graphical error... the program still seems to be running fine, I just can't select any color. In Task Manager it doesn't say "not responding". So I will wait for your reply. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 19:06 Message: ok, XP with SP3 and Sun Java 6 ( 1.6.x ). All right, that should work. ( I may have in use SP2 but still). E.g. "Windows Vista" or "Windows 7" are more "exotic" for me. Sun Java is good also. Did you get the "Welcome to Release 0.12.0" dialog and click it away? (if not, it might have lurked around in the background hidden behind some other window and block the mouse/keyboard input or whatever ("modal dialog"). Should technically not happen/be possible, but one has seen stranger things happen.... The History.java is one of the source files, not relevant. > The only .cf files I could find are WebServer.cf, WebServer_unix.cf, > and WebServer_win.cf. Do you want me to add a line into one of these? No. They are part of the "sources" as well, in some sense. Once started, Colossus will create a directory ".colossus" (and 2 files in it) "somewhere on your computer" - in what it considers to be "your home directory". What that exactly is, might vary... The home directory is under Windows _often_ something like: C:\Documents and Settings\Mike if you logged in to the computer with username Mike. Often you get there with right-click on Start button => Explore => opens an explorer e.g. to C:\Documents and Settings\katzer\Start Menu for me as user katzer. So katzer would be my home dir. However on my computer it's configured differently, so my home directory is D:\katzer You can take an explorer (the Start => right-click => Explore thing) and type in the "path"/adress line in the top "%HOME%" and press return. (you may need to make it visible first with View => Toolbars => Address bar ). Inside there should be .colossus. Once you found that we are much further :) (normally, once masterboardboard is open, Help => About would tell the location but you don't even get there yet :-/ ) Inside there will be eventually several .cfg files (and perhaps a "saves" directory). Directory of D:\katzer\.colossus 07.02.2011 10:06 <DIR> . 07.02.2011 10:06 <DIR> .. 07.02.2011 15:12 1 997 Colossus-clemens.cfg 08.02.2011 19:49 4 425 Colossus-katzer.cfg 08.02.2011 19:49 2 069 Colossus-katzer1.cfg 28.07.2010 17:18 276 Colossus-netclient.cfg 08.02.2011 19:49 900 Colossus-server.cfg 07.02.2011 15:12 2 059 Colossus-test1.cfg 07.02.2011 22:00 586 Colossus-webclient.cfg 07.02.2011 10:56 <DIR> saves 7 File(s) 12 312 bytes 3 Dir(s) 21 313 040 384 bytes free D:\katzer\.colossus> You can ignore the "-server", -webclient and -netclient files for now - they are "internal". -katzer and -clemens etc. are "client preferences" files. Like, I played once a game as clemens, and when changed preferences such as the various auto-<do something>, position and size of windows etc., Colossus would save those to a file with that name. (some other, like Variant, type and names of players, Options in Startup dialog, are stored to the Colossus-server.cfg file). Usually when you get the Game Setup dialog (where you choose variant, count and type of players etc), first of them you make "Human" and name is initialized with the name you are logged on to the computer. Thus created with some text editor (notepad, if necessary), a textfile named Colossus-Mike.cfg (replace your name, of course). (if necessaary, right click in the right side of explorer, where the files are shown => New => Text Document => then there exists a file "New File.txt" (or similar). Click it, or F2 on it, change name to above. Put into that file the following three lines: Auto\ pick\ markers=true Auto\ pick\ color=true Favorite\ colors=Green Note the "backslash" ( \ ) in front of the space. Now if you start a game with your player name set to "Mike" the Pick... dialogs should not appear. So question is, what will get stuck then :) The other interesting thing to try is, if you can run from commandline (by typing that command, which will make the java command shown): java -Djava.util.logging.config.file=file=logging.properties -Xmx256M -jar Colossus.jar While Colossus runs, eventually happening warnings etc. would be printed to that Command window. But if it's a total "Graphics stuff somehow freezes" (like it sounds, that it does not accept click or key on any of the colors) ... hm. Tricky. Might be no warning/exception, just the graphics thread (EDT, Event Dispatcher Thread, techno babble... ;-) hangs. Let's see so far, how far we get with above. If we get that, I've already some ideas how to proceed. BR, Clemens ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 17:15 Message: Not sure if this will help... I found a file called History.java under my recent documents. It's pretty lengthy but it is listed below: package net.sf.colossus.server; import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import net.sf.colossus.common.Constants; import net.sf.colossus.game.Creature; import net.sf.colossus.game.EntrySide; import net.sf.colossus.game.Legion; import net.sf.colossus.game.Player; import net.sf.colossus.game.actions.AddCreatureAction; import net.sf.colossus.game.actions.Recruitment; import net.sf.colossus.util.Glob; import net.sf.colossus.variant.CreatureType; import net.sf.colossus.variant.MasterHex; import org.jdom.Element; /** * Stores game history as XML. * * @author David Ripton */ public class History { private static final Logger LOGGER = Logger.getLogger(History.class .getName()); /** * History: events that happened before last commit point */ private final Element root; /** * History elements/events that happened since the last commit/"snapshot". */ private final List<Element> recentEvents = new LinkedList<Element>(); /** * Set to true during the processing of {@link #fireEventsFromXML(Server)} * to avoid triggering events we just restored again. */ private boolean loading = false; /** * */ private final Element loadedRedoLog; private boolean isRedo = false; /** * Stores the surviving legions (this variable is not needed any more) * * While the history should contain all information to reproduce the game * state, the last set of legions is currently still loaded upfront since * they contain the battle-specific information. This collides with * replaying the game from history... * Now, since 08/2008, they are not stored as "survivorlegions" any more. * Instead, they are backed up internally (done inside PlayerServerSide), * all the history is replayed. This creates proper split prediction data * in all clients. After that, backup data is compared with result of * replay. * E.g. Legion count, their content, players eliminated must be in sync. * Then the replayed ones are discarded and the backedup ones restored * - which have the right legion state (moved, donor, summoned, ...) * * TODO align the history replay more with the original gameplay so we * don't need this anymore; * 08/2008:==> this is now to some part done. Still replay * events could be closer to original events (split, summon, * acquire, teleport, ...) , not just the "result" of that * event (reveal,add,remove effects). * * TODO instead: model the actual events instead of just result, * or at least add relevant info to history elements, so that all * replayed events carry all needed data so that they could also be * processed by event viewer (currently EV does not process anything * during replay). */ public History() { root = new Element("History"); // Dummy: loadedRedoLog = new Element("LoadedRedoLog"); } /** * Constructor used by "LoadGame" */ public History(Element loadGameRoot) { // Get the history elements and store them to "root" root = (Element)loadGameRoot.getChild("History").clone(); // Get the redo log content loadedRedoLog = (Element)loadGameRoot.getChild("Redo").clone(); } /** * All events before last commit */ Element getCopy() { return (Element)root.clone(); } /** * Reached a commit point: append all recent events to the history, * clear list of recent events; caller should do this together with creating * the next snapshot. */ void flushRecentToRoot() { for (Element el : recentEvents) { el.detach(); String name = el.getName(); // TODO later, when this are proper events (not XML elements), // ask rather from the Event whether it belongs copied to // history or not. // TODO At some point in future, put also those Move events // that reveal something to history, and make either the history // replay only send the relevant reveal messages, or make the // Clients during replay (but not redo part) ignore the "move" // and just process the revealing part. // Preferrably the latter, so that proper events show up in the // EventViewer. if (name.equals("Move") || name.equals("UndoMove")) { LOGGER.finest("Flush Redo to History: skipping " + name); } else if (name.equals("Recruit") || name.equals("UndoRecruit")) { // Skipping for now, because there are also the addCreature, // removeCreature and reveal Events still in history. // TODO make the Recruit/UndoRecruit history events during // replay properly, get rid of the "side effect" type of // entries in save game. LOGGER.finest("Flush Redo to History: skipping " + name); } else { root.addContent(el); } } recentEvents.clear(); } /** * @return A Redo Element, containing all events since last commit * i.e. which need to be REDOne on top of last commit point/snapshot */ Element getNewRedoLogElement() { Element redoLogElement = new Element("Redo"); for (Element el : recentEvents) { el.detach(); redoLogElement.addContent(el); } return redoLogElement; } /** * TODO reconsider name * TODO decide if we should move it all into one big handleEvent(GameEvent) method */ void addCreatureEvent(AddCreatureAction event, int turn, String reason) { if (loading) { return; } Element element = new Element("AddCreature"); element.setAttribute("markerId", event.getLegion().getMarkerId()); element.setAttribute("creatureName", event.getAddedCreatureType() .getName()); element.setAttribute("turn", "" + turn); element.setAttribute("reason", reason); recentEvents.add(element); } void removeCreatureEvent(Legion legion, CreatureType creature, int turn, String reason) { if (loading) { return; } Element event = new Element("RemoveCreature"); event.setAttribute("markerId", legion.getMarkerId()); event.setAttribute("creatureName", creature.getName()); event.setAttribute("turn", "" + turn); event.setAttribute("reason", reason); recentEvents.add(event); } void splitEvent(Legion parent, Legion child, List<CreatureType> splitoffs, int turn) { if (loading) { return; } Element event = new Element("Split"); event.setAttribute("parentId", parent.getMarkerId()); event.setAttribute("childId", child.getMarkerId()); event.setAttribute("turn", "" + turn); Element creatures = new Element("splitoffs"); event.addContent(creatures); for (CreatureType creatureType : splitoffs) { Element cr = new Element("creature"); cr.addContent(creatureType.getName()); creatures.addContent(cr); } recentEvents.add(event); } void mergeEvent(String splitoffId, String survivorId, int turn) { if (loading) { return; } Element event = new Element("Merge"); event.setAttribute("splitoffId", splitoffId); event.setAttribute("survivorId", survivorId); event.setAttribute("turn", "" + turn); recentEvents.add(event); } void revealEvent(boolean allPlayers, List<Player> players, Legion legion, List<CreatureType> creatures, int turn, String reason) { if (loading) { return; } if (creatures.isEmpty()) { // this happens e.g. when in final battle (titan vs. titan) // angel was called out of legion which was then empty, // and in the final updateAllLegionContents there is then // this empty legion... // TODO if this case can happen in a regular game no warning // should be logged LOGGER.log(Level.WARNING, "Called revealEvent(" + allPlayers + ", " + (players != null ? players.toString() : "-null-") + ", " + legion + ", " + creatures.toString() + ", " + turn + ") with empty creatureNames"); return; } Element event = new Element("Reveal"); event.setAttribute("markerId", legion.getMarkerId()); event.setAttribute("allPlayers", "" + allPlayers); event.setAttribute("turn", "" + turn); event.setAttribute("reason", reason); if (!allPlayers) { Element viewers = new Element("viewers"); event.addContent(viewers); Iterator<Player> it = players.iterator(); while (it.hasNext()) { String playerName = it.next().getName(); Element viewer = new Element("viewer"); viewer.addContent(playerName); viewers.addContent(viewer); } } Element creaturesElem = new Element("creatures"); event.addContent(creaturesElem); for (CreatureType creatureType : creatures) { Element creatureElem = new Element("creature"); creatureElem.addContent(creatureType.getName()); creaturesElem.addContent(creatureElem); } recentEvents.add(event); } void playerElimEvent(Player player, Player slayer, int turn) { if (loading) { return; } Element event = new Element("PlayerElim"); event.setAttribute("name", player.getName()); if (slayer != null) { event.setAttribute("slayer", slayer.getName()); } event.setAttribute("turn", "" + turn); recentEvents.add(event); } void movementRollEvent(Player player, int roll) { if (loading) { return; } Element event = new Element("MovementRoll"); event.setAttribute("playerName", player.getName()); event.setAttribute("roll", "" + roll); recentEvents.add(event); } void legionMoveEvent(Legion legion, MasterHex newHex, EntrySide entrySide, boolean teleport, CreatureType lord) { if (loading) { return; } Element event = new Element("Move"); event.setAttribute("markerId", legion.getMarkerId()); event.setAttribute("newHex", newHex.getLabel()); event.setAttribute("entrySide", entrySide.getLabel()); event.setAttribute("teleport", "" + teleport); String creNameOrTextNull = lord == null ? "null" : lord.getName(); event.setAttribute("revealedLord", creNameOrTextNull); recentEvents.add(event); } void legionUndoMoveEvent(Legion legion) { if (loading) { return; } Element event = new Element("UndoMove"); event.setAttribute("markerId", legion.getMarkerId()); recentEvents.add(event); } void recruitEvent(Legion legion, CreatureType recruit, CreatureType recruiter) { if (loading) { return; } Element event = new Element("Recruit"); event.setAttribute("markerId", legion.getMarkerId()); event.setAttribute("recruit", recruit.getName()); event.setAttribute("recruiter", recruiter == null ? "null" : recruiter .getName()); recentEvents.add(event); } void undoRecruitEvent(Legion legion) { if (loading) { return; } Element event = new Element("UndoRecruit"); event.setAttribute("markerId", legion.getMarkerId()); recentEvents.add(event); } /** * Fire all events from redoLog. * Elements from RedoLog are processed one by one and the corresponding * method is called on the Server object, pretty much as if a * ClientHandler would call it when receiving such a request from Client. * Note that in some cases overriding the processingCH is necessary * (because technically, this all currently happens while still the * connecting of last joining player is processed, so processingCH is * set to his ClientHandler). * * Note that "loading" is not set to true, so they DO GET ADDED to the * recentEvents list again. * * @param server The server on which to call all the actions to be redone */ void processRedoLog(Server server) { assert loadedRedoLog != null : "Loaded RedoLog should always " + "have a JDOM root element as backing store"; LOGGER.info("History: Start processing redo log"); isRedo = true; for (Object obj : loadedRedoLog.getChildren()) { Element el = (Element)obj; LOGGER.info("processing redo event " + el.getName()); fireEventFromElement(server, el); } isRedo = false; // TODO clear loadedRedoLog? LOGGER.info("Completed processing redo log"); } // unchecked conversions from JDOM @SuppressWarnings("unchecked") void fireEventsFromXML(Server server) { this.loading = true; assert root != null : "History should always have a " + " JDOM root element as backing store"; List<Element> kids = root.getChildren(); Iterator<Element> it = kids.iterator(); while (it.hasNext()) { Element el = it.next(); fireEventFromElement(server, el); } this.loading = false; } // unchecked conversions from JDOM @SuppressWarnings("unchecked") void fireEventFromElement(Server server, Element el) { GameServerSide game = server.getGame(); String eventName = el.getName(); String reasonPerhaps = el.getAttributeValue("reason"); String reason = (reasonPerhaps != null && !reasonPerhaps .equals("null")) ? reasonPerhaps : "<undefinedReason>"; if (eventName.equals("Reveal") && isRedo && reason.equals(Constants.reasonRecruiter)) { // Skip this because we redo the full recruit event // TODO LOGGER.finest("Skipping Reveal event (reason " + reason + ") during redo."); } else if (eventName.equals("AddCreature") && isRedo && reason.equals(Constants.reasonRecruited)) { // Skip this because we redo the full recruit event LOGGER.finest("Skipping AddCreature event (reason " + reason + ") during redo."); } else if (eventName.equals("RemoveCreature") && isRedo && reason.equals(Constants.reasonRecruited)) { // Skip this because we redo the full recruit event LOGGER.finest("Skipping RemoveCreature event (reason " + reason + ") during redo."); } else if (eventName.equals("Reveal")) { String allPlayers = el.getAttributeValue("allPlayers"); boolean all = allPlayers != null && allPlayers.equals("true"); String markerId = el.getAttributeValue("markerId"); List<String> playerNames = new ArrayList<String>(); Element viewEl = el.getChild("viewers"); int turn = Integer.parseInt(el.getAttributeValue("turn")); String playerName = null; if (viewEl != null) { List<Element> viewers = viewEl.getChildren(); Iterator<Element> it = viewers.iterator(); while (it.hasNext()) { Element viewer = it.next(); playerName = viewer.getTextNormalize(); playerNames.add(playerName); } } List<Element> creatureElements = el.getChild("creatures") .getChildren(); List<CreatureType> creatures = new ArrayList<CreatureType>(); for (Element creature : creatureElements) { String creatureName = creature.getTextNormalize(); creatures.add(game.getVariant() .getCreatureByName(creatureName)); } Player player = game.getPlayerByMarkerId(markerId); Legion legion; if (turn == 1 && player.getLegionByMarkerId(markerId) == null) { // there is no create event for the startup legions, // so we might need to create them for the reveal event legion = new LegionServerSide(markerId, null, player .getStartingTower(), player.getStartingTower(), player, game, creatures .toArray(new CreatureType[creatures.size()])); player.addLegion(legion); } else { legion = player.getLegionByMarkerId(markerId); } // TODO Now we get the reason from history element - does this // change effect/break anything? // String reason = "<unknown>"; if (((PlayerServerSide)player).getDeadBeforeSave()) { // Skip for players that will be dead by end of replay } else if (all) { server.allRevealCreatures(legion, creatures, reason); } else { server.oneRevealLegion(game.getPlayerByName(playerName), legion, creatures, reason); } } else if (eventName.equals("Split")) { String parentId = el.getAttributeValue("parentId"); String childId = el.getAttributeValue("childId"); String turnString = el.getAttributeValue("turn"); int turn = Integer.parseInt(turnString); List<String> creatureNames = new ArrayList<String>(); List<CreatureType> creatures = new ArrayList<CreatureType>(); List<Element> splitoffs = el.getChild("splitoffs").getChildren(); Iterator<Element> it = splitoffs.iterator(); while (it.hasNext()) { Element creature = it.next(); String creatureName = creature.getTextNormalize(); creatureNames.add(creatureName); creatures.add(game.getVariant() .getCreatureByName(creatureName)); } LegionServerSide parentLegion = game.getLegionByMarkerId(parentId); if (isRedo) { server.overrideProcessingCH(parentLegion.getPlayer()); server.doSplit(parentLegion, childId, creatures); server.overrideProcessingCH(parentLegion.getPlayer()); return; } // LegionServerSide.split(..) doesn't like us here since the parent // legion can't remove creatures (not there?) -- create child directly // instead PlayerServerSide player = parentLegion.getPlayer(); LegionServerSide childLegion; if (player.hasLegion(childId)) { childLegion = game.getLegionByMarkerId(childId); LOGGER.severe("During replay of history: child legion " + childId + " should not " + "exist yet (turn=" + turn + ")!!\n" + "Exists already with: " + Glob.glob(",", childLegion.getCreatureTypes()) + " but " + "should now be created with creatures: " + creatures); childLegion.remove(); } childLegion = new LegionServerSide(childId, null, parentLegion .getCurrentHex(), parentLegion.getCurrentHex(), player, game, creatures.toArray(new CreatureType[creatures.size()])); player.addLegion(childLegion); for (CreatureType creature : creatures) { parentLegion.removeCreature(creature, false, false); } // Skip for players that will be dead by end of replay if (!player.getDeadBeforeSave()) { server.allTellDidSplit(parentLegion, childLegion, turn, false); } } else if (eventName.equals("Merge")) { String splitoffId = el.getAttributeValue("splitoffId"); String survivorId = el.getAttributeValue("survivorId"); String turnString = el.getAttributeValue("turn"); int turn = Integer.parseInt(turnString); LegionServerSide splitoff = game.getLegionByMarkerId(splitoffId); LegionServerSide survivor = game.getLegionByMarkerId(survivorId); // Skip for players that will be dead by end of replay if (!survivor.getPlayer().getDeadBeforeSave()) { server.undidSplit(splitoff, survivor, false, turn); } // Add them back to parent: while (splitoff.getHeight() > 0) { CreatureType type = splitoff.removeCreature(0, false, false); survivor.addCreature(type, false); } ... [truncated message content] |
|
From: SourceForge.net <no...@so...> - 2011-02-10 20:40:18
|
Bugs item #3177305, was opened at 2011-02-10 12:40 Message generated for change (Comment added) made by nobody You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101939&aid=3177305&group_id=1939 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: GUI Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Nobody/Anonymous (nobody) Assigned to: Clemens Katzer (cleka) Summary: Can not pick color to start game Initial Comment: Recently tried to play this game. I downloaded both the java version and the zip file. Both seem to start up just fine. The board will appear and another small window with choose a color pops up. I can not click on any color. I've tried pressing the letters that correspond to the colors. I've tried alt and ctrl combinations. Nothing works. I have to force the program to quit. Ideas? ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 20:40 Message: btw, I couldn't copy and paste the java console because when the program locked it wouldn't let me select the console either. and looks like your suspicions are right about that dead lock... shows below it found 1. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 20:38 Message: holy moly... its a lot... here goes: at net.sf.colossus.client.SocketClientThread.readAndParseUntilDone(SocketClientThread.java:419) at net.sf.colossus.client.SocketClientThread.run(SocketClientThread.java:373) "Client kevin" prio=6 tid=0x170d5400 nid=0x1eb4 runnable [0x17cdf000] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(Unknown Source) at sun.nio.cs.StreamDecoder.readBytes(Unknown Source) at sun.nio.cs.StreamDecoder.implRead(Unknown Source) at sun.nio.cs.StreamDecoder.read(Unknown Source) - locked <0x041a4f00> (a java.io.InputStreamReader) at java.io.InputStreamReader.read(Unknown Source) at java.io.BufferedReader.fill(Unknown Source) at java.io.BufferedReader.readLine(Unknown Source) - locked <0x041a4f00> (a java.io.InputStreamReader) at java.io.BufferedReader.readLine(Unknown Source) at net.sf.colossus.client.SocketClientThread.waitForLine(SocketClientThread.java:504) at net.sf.colossus.client.SocketClientThread.readAndParseUntilDone(SocketClientThread.java:419) at net.sf.colossus.client.SocketClientThread.run(SocketClientThread.java:373) "Thread-4" prio=6 tid=0x1716a800 nid=0x1428 runnable [0x17c3f000] java.lang.Thread.State: RUNNABLE at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method) at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(Unknown Source) at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(Unknown Source) at sun.nio.ch.WindowsSelectorImpl.doSelect(Unknown Source) at sun.nio.ch.SelectorImpl.lockAndDoSelect(Unknown Source) - locked <0x0418f468> (a sun.nio.ch.Util$1) - locked <0x0418f478> (a java.util.Collections$UnmodifiableSet) - locked <0x0418f3f0> (a sun.nio.ch.WindowsSelectorImpl) at sun.nio.ch.SelectorImpl.select(Unknown Source) at net.sf.colossus.server.Server.handleOutsideChanges(Server.java:439) at net.sf.colossus.server.Server.waitOnSelector(Server.java:398) at net.sf.colossus.server.Server.run(Server.java:227) "TimerQueue" daemon prio=6 tid=0x176e6400 nid=0x1f8c in Object.wait() [0x17a9f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x04168e60> (a javax.swing.TimerQueue) at javax.swing.TimerQueue.run(Unknown Source) - locked <0x04168e60> (a javax.swing.TimerQueue) at java.lang.Thread.run(Unknown Source) "AWT-EventQueue-0" prio=6 tid=0x17042800 nid=0x1eac waiting for monitor entry [0x1759e000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruit.<init>(PickRecruit.java:168) at net.sf.colossus.gui.PickRecruit.pickRecruit(PickRecruit.java:186) - locked <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at net.sf.colossus.gui.ClientGUI.doPickRecruit(ClientGUI.java:2097) at net.sf.colossus.client.Client.doRecruit(Client.java:1763) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch" prio=6 tid=0x1701c000 nid=0x193c waiting for monitor entry [0x173bf000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x04048108> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) "AWT-Windows" daemon prio=6 tid=0x16ff8400 nid=0x1d74 runnable [0x1729f000] java.lang.Thread.State: RUNNABLE at sun.awt.windows.WToolkit.eventLoop(Native Method) at sun.awt.windows.WToolkit.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "AWT-Shutdown" prio=6 tid=0x17001c00 nid=0x1844 in Object.wait() [0x1724f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0402cf70> (a java.lang.Object) at java.lang.Object.wait(Object.java:485) at sun.awt.AWTAutoShutdown.run(Unknown Source) - locked <0x0402cf70> (a java.lang.Object) at java.lang.Thread.run(Unknown Source) "Java2D Disposer" daemon prio=10 tid=0x17018800 nid=0x1cbc in Object.wait() [0x171ff000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0402d000> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x0402d000> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) at sun.java2d.Disposer.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "Low Memory Detector" daemon prio=6 tid=0x16c80400 nid=0x1cac runnable [0x00000000] java.lang.Thread.State: RUNNABLE "CompilerThread0" daemon prio=10 tid=0x16c7a400 nid=0x450 waiting on condition [0x00000000] java.lang.Thread.State: RUNNABLE "Attach Listener" daemon prio=10 tid=0x16c78c00 nid=0x1d44 runnable [0x00000000] java.lang.Thread.State: RUNNABLE "Signal Dispatcher" daemon prio=10 tid=0x16c77800 nid=0x1b30 waiting on condition [0x00000000] java.lang.Thread.State: RUNNABLE "Finalizer" daemon prio=8 tid=0x16c67800 nid=0x19cc in Object.wait() [0x16ddf000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x03ebd718> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x03ebd718> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source) "Reference Handler" daemon prio=10 tid=0x16c62c00 nid=0x1eb0 in Object.wait() [0x16d8f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x03ebd7a0> (a java.lang.ref.Reference$Lock) at java.lang.Object.wait(Object.java:485) at java.lang.ref.Reference$ReferenceHandler.run(Unknown Source) - locked <0x03ebd7a0> (a java.lang.ref.Reference$Lock) "main" prio=6 tid=0x003b6400 nid=0x1e2c in Object.wait() [0x009df000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x041915c8> (a java.lang.Object) at java.lang.Object.wait(Object.java:485) at net.sf.colossus.server.Server.waitUntilGameFinishes(Server.java:780) - locked <0x041915c8> (a java.lang.Object) at net.sf.colossus.server.GameServerSide.cleanupWhenGameOver(GameServerSide.java:401) at net.sf.colossus.server.GameServerSide.startNewGameAndWaitUntilOver(GameServerSide.java:454) at net.sf.colossus.appmain.Start.setupAndLoop(Start.java:663) at net.sf.colossus.appmain.Start.main(Start.java:874) "VM Thread" prio=10 tid=0x16c5fc00 nid=0x10fc runnable "VM Periodic Task Thread" prio=10 tid=0x16c82c00 nid=0x1a00 waiting on condition JNI global references: 1473 Found one Java-level deadlock: ============================= "AWT-EventQueue-0": waiting to lock monitor 0x177e5b1c (object 0x02ba1288, a java.lang.Object), which is held by "EventQueueMonitor-ComponentEvtDispatch" "EventQueueMonitor-ComponentEvtDispatch": waiting to lock monitor 0x176e8c54 (object 0x13872538, a java.lang.Class), which is held by "AWT-EventQueue-0" Java stack information for the threads listed above: =================================================== "AWT-EventQueue-0": at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruit.<init>(PickRecruit.java:168) at net.sf.colossus.gui.PickRecruit.pickRecruit(PickRecruit.java:186) - locked <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at net.sf.colossus.gui.ClientGUI.doPickRecruit(ClientGUI.java:2097) at net.sf.colossus.client.Client.doRecruit(Client.java:1763) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch": at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x04048108> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) Found 1 deadlock. Heap def new generation total 1216K, used 704K [0x02a90000, 0x02be0000, 0x03e40000) eden space 1088K, 57% used [0x02a90000, 0x02b2b388, 0x02ba0000) from space 128K, 65% used [0x02ba0000, 0x02bb4f20, 0x02bc0000) to space 128K, 0% used [0x02bc0000, 0x02bc0000, 0x02be0000) tenured generation total 15784K, used 9845K [0x03e40000, 0x04daa000, 0x12a90000) the space 15784K, 62% used [0x03e40000, 0x047dd428, 0x047dd600, 0x04daa000) compacting perm gen total 14336K, used 14223K [0x12a90000, 0x13890000, 0x16a90000) the space 14336K, 99% used [0x12a90000, 0x13873d10, 0x13873e00, 0x13890000) No shared spaces configured. Terminate batch job (Y/N)? ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:27 Message: NOTE, from the Java console log you should be able to copy paste! (mark with mouse and Ctrl-C or right click -> copy.) Only from that Colossus own "About" window you can't copy paste. Not sure whether that affinity helps; Colossus is "multithreaded", so if there is more than one core existing it might still use a 2nd. (affinity to me means merely, it would _preferrably_ run on that core). My suspicion is it is some kind of deadlock, caused by the way how those dialogs are called: "synchronous" , and in the "Event Dispatcher thread". That it happens randomly is much more "reasonable" than that some dialogs lock and some not. Such random misbehaviors we had earlier. They were fixed, but merely "somehow" and "when it happened", not systematically "rewrite everything to be thread-safe by design". Can you try the following: Run it from commandline. If possible, make the commandline window as big as possible, like window size (field 3 +4) width 150 height 50, screen buffer size (1+2 fields) 150 and 3000.) (to do so, on the cmdline window, click the smal C:\ in top LEFT corner, Properties). When it looks, make the cmdline box the active window and press Ctrl-Break (bottom left and top right keys of the keyboard together ;-)) Lot of glibberish would be printed to screen. Same top left icon, Edit => Select all ; copy (ctrl-c or from same menu copy). Send me what's there (or post it here). That's the "which thread is doing what at the moment" summary. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 20:10 Message: yes I was able to limit the program running on one processer. Or at least I told it to set its affinity to Core 0 from the processes. It still locked up. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 20:08 Message: I did some further testing... it will actually lock up randomly still. Doesn't matter if I can recruit one or two. :/ ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 20:06 Message: Ran java -version from command window: java version "1.6.0_17" Java(TM) SE Runtime Environment (build 1.6.0_17-b04) Java HotSpot(TM) Client VM (build 14.3-b01, mixed mode) I figured out how to get into the Java Options. Logging was turned off. So now I have a Java Console window when the program opens. So I tried a game, and it got stuck after 2nd time I tried to add a recruit. Btw, I notice it seems to do it when I can choose more than one recruit. Here is the last few lines of the log: (man... this is a lot of typing and I'm not sure it is really showing any errors. It just shows the last step before it "froze". INFO: Legion Gr09 (Lobster) in Tower hex 600 moves to Jungle hex 135 entering on RIGHT Feb 10, 2011 2:00:47 PM net.sf.colossus.server.GameServerSide$GamePhaseAdvancer advancePhaseInternal INFO:Phase advances to Muster Feb 10, 2011 2:00:49 PM net.sf.colossus.server.LegionServerSide addCreature INFO: Added Ceentaur -now there are 20 left. Feb 10, 2011 2:00:49 PM net.sf.colossus.server.GameServerSide doRecruit INFO: Legion Gr05 in Woods hex 39 recruits Centaur with 1 Centaur ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 19:37 Message: > It is a quad core system. hm. That might be part of the reason. I have some wild guess what it could be... Can you tell me exact java version? Help => About tells it. It tells also Log directory, there would be a file Colossus0.log. (The *0,log is always the newest; if new starts, it renames 1 to 2, 0 to 1nd creates new 0.log file). Sorry you have to type the stuff from Help => About, no copy paste. Or make a screenshot if you know how. If you wish you can also send it to me via mail (my SF username, i.e. the "cleka", then the magic a-like character, then users.sourceforge.net . Can you tune your system to use one CPU only? ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 19:15 Message: We were at a party and someone brought the board game Titan over. It confused the heck out of us (never even made it around once) but it seemed interesting. I did a search and found you making an app for it. So I thought I'd try it out. I am definitely brand new to Titan, so I expect to actually be the only player on here that gets defeated by your "dumb" AI. It is a quad core system. No I can not close the the dialog box with the small "X". In fact I can't do anything except shut it down. I selected Auto Pick Recruiters... and now I think it hangs up on actual recruiting now. It appears random too. Sometimes I can recruit a whole stack (7) without "locking up" and other times it will do it after the first recruit. (btw... sometimes I can't move a stack. That just a rule I'm not aware of?) ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 18:50 Message: Do you happen to know, do you have more than one CPU or CPU core? ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 18:43 Message: BTW, are you "well familiar with Titan, just new to use Colossus, or need to learn also "how game works, rules, strategy, etc." first? Once you are familar with the game and the usage, you could even try the public game server (by clicking the "WebClient" button), where you could find other "real people" to play against. (in contrast to the AI ("Artificial Intelligence") i.e. Robot players... However to notice is, people are usually online in afternoon/evening for US time. At other time you might log in there and be alone 30 or 60 mins before any other drop by. However, that's anyway more recommded only a) it does not hang for you any more and b) once you are "fluent" in playing. It's annoying for others when you need, let's say, 1.5 minutes for each individual move, split, recruit etc.... => Practicing to get faster better with AI players.They are all in all rather dump, but for first few weeks ok. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 18:35 Message: okay (or not okay), but that's something. In worst case I have to make you a special version which prints something to screen for every line of code before and around where it calls that "Pick Recruiter" dialog :)) That's what I meant, you might run into a "block" somewhat later with some other dialog. But the recruit dialog itself worked?? Strange; they are very similarly programmed. Some more "smalltalk" :o) > Made me green in fact. > I guess I can always play green. :p :) You can try: Window => Preferences => "Color" tab. Click on "Select" and choose another color. Next time you START a game it would choose that color for you automatically. (all those "Autoplay" options do certain things for you. So in fact you could enable "Auto Pick Recruiter", since that one is rather unimportant, as long as you can choose an actual Recruit. (so we can circumvent THIS cliff for now). But there might be other dialogs later to block you as well. And/or, in fact that's an interesting thing to try, whether that color chooser dialog would work??? If not, can you close it with the "x" shaped icon in upper right corner? (the initial color pick dialog CAN'T be closed that way, or rather, if one does, it reappears immediately.) So, sure, I'd like to continue troubleshoot this. Let's try that above for now, have to bring kids to bed now. -Cle. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 18:17 Message: So I've been running through this... moving, recruiting, etc... then I came to a point where it won't let me pick again. :/ Says: kevinnew: Pick Recruiter in Brush hex17 There is more than one way you can recruit this. Current content of legion Gr05: There is a Titan, Cyclops, Gargoyle, Gargoyle, Centaur, Centaur Pick the creature type you want to reveal: There is a Cyclops, Gargoyle I can't pick anything. Tried clicking on it numerous times. Nothing will select and it is stuck on this dialog box. Not sure why this happening... but thank you for sticking it out with me. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 18:12 Message: You are correct. I typed the name in, it found it and ran fine. Well.. I can play now. yay! ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 18:08 Message: K so, I opened the default kevin.cfg and added those lines to it: Auto\ pick\ markers=true Auto\ pick\ color=true Favorite\ colors=Green And it worked. The game started. Made me green in fact. So far so good to, I was able to split a stack. Move the unit. Recruit. And watched the computer take it's move as well. So not sure why it wasn't working but it is now. Want to continue to troubleshoot? I guess I can always play green. :p ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 18:06 Message: No, you cannot "pick" the name kevinnew - it does not offer all "names that may exist". You choose the name on "Players" tab, On left side, Choose HUman, on right side type the name. 2nd Line, choose e.g. "SimpleAI", it fills right side with <byColor> or something, thats ok, Type there in first line the name kevinnew, and when game starts, it goes looking for a file Colossus-kewvinnew.cfg [and if it wouldn't exist, create it, sooner or later, after GUI / preferences changes]. Now we pre-create that file, so that it skips the color picking dialog because it would find a value to say "auto pick" from the file. -Cle. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 17:59 Message: btw, I did try and run the Colossus.jnlp stand alone and brings up the welcome screen, I hit ok, and the Game setup screen appears. I still can't choose newkevin and when I run it, once again I can not pick any of the colors. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 17:57 Message: I'll start from the beginning: • I open a folder I extracted all the files to from the .zip • I double click on run.bat A cmd window pops up with: C:\Documents and Settings\kevin\Desktop\collossus>cd "c:\Documents and Settings\kevin\Desktop\collossus\" C:\Documents and Settings\kevin\Desktop\collossus>java -Djava.util.logging.config.file=logging.properties -XMx256M -jar Colossus.jar Then what looks like the main program appears. It is the game setup screen. I make player one a human player and choose Kevin as the type. I make the 2nd player a SimpleAI and choose <By color> for the type. I leave everything else as is. (btw the top says Running Colossus Version 0.12.0-beta1 (revision 4970) on etc...) • I pick New game. The game appears to start, I can see the grid in the background with all the hills, deserts, etc. A small box with Pick a Color appears. I can move this box around. But I can not pick a color. I've tried clicking on every single one. I've tried pressing G, e, o, etc. I've tried Ctrl/Alt combinations, nothing. I can not close it either. I have to force it to shutdown. In Task Manager it shows that it is still running... so I don't THINK it is locked up. I do NOT see any other windows anywhere that I might need to click. I've even tried Alt+Tab and Ctrl+Tab to check. • I went ahead and did a search for the .colossus folder. I found it. It has 5 files in it. Colossus-netclient.cfg Colossus-red.cfg Colossus-server.cfg Colossus-kevin.cfg Colossus-kevin1.cfg • I went ahead and created a new .cfg file. I named it Colossus-kevinnew.cfg. I added these lines to it: Auto\ pick\ markers=true Auto\ pick\ color=true Favorite\ colors=Green Interestingly here, when I started the program, I could not choose kevinnew. I could only still see kevin. I searched my entire computer to see if the .cfg files might also be somewhere else but I could only find them under \\documents and settings\kevin\desktop\collossus • Ok so I tried your command prompt idea. I even ran the command from within the path and I kept getting this error... Unable to access jarfile Colossus.jar I can't imagine it being a graphical error... the program still seems to be running fine, I just can't select any color. In Task Manager it doesn't say "not responding". So I will wait for your reply. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 17:06 Message: ok, XP with SP3 and Sun Java 6 ( 1.6.x ). All right, that should work. ( I may have in use SP2 but still). E.g. "Windows Vista" or "Windows 7" are more "exotic" for me. Sun Java is good also. Did you get the "Welcome to Release 0.12.0" dialog and click it away? (if not, it might have lurked around in the background hidden behind some other window and block the mouse/keyboard input or whatever ("modal dialog"). Should technically not happen/be possible, but one has seen stranger things happen.... The History.java is one of the source files, not relevant. > The only .cf files I could find are WebServer.cf, WebServer_unix.cf, > and WebServer_win.cf. Do you want me to add a line into one of these? No. They are part of the "sources" as well, in some sense. Once started, Colossus will create a directory ".colossus" (and 2 files in it) "somewhere on your computer" - in what it considers to be "your home directory". What that exactly is, might vary... The home directory is under Windows _often_ something like: C:\Documents and Settings\Mike if you logged in to the computer with username Mike. Often you get there with right-click on Start button => Explore => opens an explorer e.g. to C:\Documents and Settings\katzer\Start Menu for me as user katzer. So katzer would be my home dir. However on my computer it's configured differently, so my home directory is D:\katzer You can take an explorer (the Start => right-click => Explore thing) and type in the "path"/adress line in the top "%HOME%" and press return. (you may need to make it visible first with View => Toolbars => Address bar ). Inside there should be .colossus. Once you found that we are much further :) (normally, once masterboardboard is open, Help => About would tell the location but you don't even get there yet :-/ ) Inside there will be eventually several .cfg files (and perhaps a "saves" directory). Directory of D:\katzer\.colossus 07.02.2011 10:06 <DIR> . 07.02.2011 10:06 <DIR> .. 07.02.2011 15:12 1 997 Colossus-clemens.cfg 08.02.2011 19:49 4 425 Colossus-katzer.cfg 08.02.2011 19:49 2 069 Colossus-katzer1.cfg 28.07.2010 17:18 276 Colossus-netclient.cfg 08.02.2011 19:49 900 Colossus-server.cfg 07.02.2011 15:12 2 059 Colossus-test1.cfg 07.02.2011 22:00 586 Colossus-webclient.cfg 07.02.2011 10:56 <DIR> saves 7 File(s) 12 312 bytes 3 Dir(s) 21 313 040 384 bytes free D:\katzer\.colossus> You can ignore the "-server", -webclient and -netclient files for now - they are "internal". -katzer and -clemens etc. are "client preferences" files. Like, I played once a game as clemens, and when changed preferences such as the various auto-<do something>, position and size of windows etc., Colossus would save those to a file with that name. (some other, like Variant, type and names of players, Options in Startup dialog, are stored to the Colossus-server.cfg file). Usually when you get the Game Setup dialog (where you choose variant, count and type of players etc), first of them you make "Human" and name is initialized with the name you are logged on to the computer. Thus created with some text editor (notepad, if necessary), a textfile named Colossus-Mike.cfg (replace your name, of course). (if necessaary, right click in the right side of explorer, where the files are shown => New => Text Document => then there exists a file "New File.txt" (or similar). Click it, or F2 on it, change name to above. Put into that file the following three lines: Auto\ pick\ markers=true Auto\ pick\ color=true Favorite\ colors=Green Note the "backslash" ( \ ) in front of the space. Now if you start a game with your player name set to "Mike" the Pick... dialogs should not appear. So question is, what will get stuck then :) The other interesting thing to try is, if you can run from commandline (by typing that command, which will make the java command shown): java -Djava.util.logging.config.file=file=logging.properties -Xmx256M -jar Colossus.jar While Colossus runs, eventually happening warnings etc. would be printed to that Command window. But if it's a total "Graphics stuff somehow freezes" (like it sounds, that it does not accept click or key on any of the colors) ... hm. Tricky. Might be no warning/exception, just the graphics thread (EDT, Event Dispatcher Thread, techno babble... ;-) hangs. Let's see so far, how far we get with above. If we get that, I've already some ideas how to proceed. BR, Clemens ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 15:15 Message: Not sure if this will help... I found a file called History.java under my recent documents. It's pretty lengthy but it is listed below: package net.sf.colossus.server; import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import net.sf.colossus.common.Constants; import net.sf.colossus.game.Creature; import net.sf.colossus.game.EntrySide; import net.sf.colossus.game.Legion; import net.sf.colossus.game.Player; import net.sf.colossus.game.actions.AddCreatureAction; import net.sf.colossus.game.actions.Recruitment; import net.sf.colossus.util.Glob; import net.sf.colossus.variant.CreatureType; import net.sf.colossus.variant.MasterHex; import org.jdom.Element; /** * Stores game history as XML. * * @author David Ripton */ public class History { private static final Logger LOGGER = Logger.getLogger(History.class .getName()); /** * History: events that happened before last commit point */ private final Element root; /** * History elements/events that happened since the last commit/"snapshot". */ private final List<Element> recentEvents = new LinkedList<Element>(); /** * Set to true during the processing of {@link #fireEventsFromXML(Server)} * to avoid triggering events we just restored again. */ private boolean loading = false; /** * */ private final Element loadedRedoLog; private boolean isRedo = false; /** * Stores the surviving legions (this variable is not needed any more) * * While the history should contain all information to reproduce the game * state, the last set of legions is currently still loaded upfront since * they contain the battle-specific information. This collides with * replaying the game from history... * Now, since 08/2008, they are not stored as "survivorlegions" any more. * Instead, they are backed up internally (done inside PlayerServerSide), * all the history is replayed. This creates proper split prediction data * in all clients. After that, backup data is compared with result of * replay. * E.g. Legion count, their content, players eliminated must be in sync. * Then the replayed ones are discarded and the backedup ones restored * - which have the right legion state (moved, donor, summoned, ...) * * TODO align the history replay more with the original gameplay so we * don't need this anymore; * 08/2008:==> this is now to some part done. Still replay * events could be closer to original events (split, summon, * acquire, teleport, ...) , not just the "result" of that * event (reveal,add,remove effects). * * TODO instead: model the actual events instead of just result, * or at least add relevant info to history elements, so that all * replayed events carry all needed data so that they could also be * processed by event viewer (currently EV does not process anything * during replay). */ public History() { root = new Element("History"); // Dummy: loadedRedoLog = new Element("LoadedRedoLog"); } /** * Constructor used by "LoadGame" */ public History(Element loadGameRoot) { // Get the history elements and store them to "root" root = (Element)loadGameRoot.getChild("History").clone(); // Get the redo log content loadedRedoLog = (Element)loadGameRoot.getChild("Redo").clone(); } /** * All events before last commit */ Element getCopy() { return (Element)root.clone(); } /** * Reached a commit point: append all recent events to the history, * clear list of recent events; caller should do this together with creating * the next snapshot. */ void flushRecentToRoot() { for (Element el : recentEvents) { el.detach(); String name = el.getName(); // TODO later, when this are proper events (not XML elements), // ask rather from the Event whether it belongs copied to // history or not. // TODO At some point in future, put also those Move events // that reveal something to history, and make either the history // replay only send the relevant reveal messages, or make the // Clients during replay (but not redo part) ignore the "move" // and just process the revealing part. // Preferrably the latter, so that proper events show up in the // EventViewer. if (name.equals("Move") || name.equals("UndoMove")) { LOGGER.finest("Flush Redo to History: skipping " + name); } else if (name.equals("Recruit") || name.equals("UndoRecruit")) { // Skipping for now, because there are also the addCreature, // removeCreature and reveal Events still in history. // TODO make the Recruit/UndoRecruit history events during // replay properly, get rid of the "side effect" type of // entries in save game. LOGGER.finest("Flush Redo to History: skipping " + name); } else { root.addContent(el); } } recentEvents.clear(); } /** * @return A Redo Element, containing all events since last commit * i.e. which need to be REDOne on top of last commit point/snapshot */ Element getNewRedoLogElement() { Element redoLogElement = new Element("Redo"); for (Element el : recentEvents) { el.detach(); redoLogElement.addContent(el); } return redoLogElement; } /** * TODO reconsider name * TODO decide if we should move it all into one big handleEvent(GameEvent) method */ void addCreatureEvent(AddCreatureAction event, int turn, String reason) { if (loading) { return; } Element element = new Element("AddCreature"); element.setAttribute("markerId", event.getLegion().getMarkerId()); element.setAttribute("creatureName", event.getAddedCreatureType() .getName()); element.setAttribute("turn", "" + turn); element.setAttribute("reason", reason); recentEvents.add(element); } void removeCreatureEvent(Legion legion, CreatureType creature, int turn, String reason) { if (loading) { return; } Element event = new Element("RemoveCreature"); event.setAttribute("markerId", legion.getMarkerId()); event.setAttribute("creatureName", creature.getName()); event.setAttribute("turn", "" + turn); event.setAttribute("reason", reason); recentEvents.add(event); } void splitEvent(Legion parent, Legion child, List<CreatureType> splitoffs, int turn) { if (loading) { return; } Element event = new Element("Split"); event.setAttribute("parentId", parent.getMarkerId()); event.setAttribute("childId", child.getMarkerId()); event.setAttribute("turn", "" + turn); Element creatures = new Element("splitoffs"); event.addContent(creatures); for (CreatureType creatureType : splitoffs) { Element cr = new Element("creature"); cr.addContent(creatureType.getName()); creatures.addContent(cr); } recentEvents.add(event); } void mergeEvent(String splitoffId, String survivorId, int turn) { if (loading) { return; } Element event = new Element("Merge"); event.setAttribute("splitoffId", splitoffId); event.setAttribute("survivorId", survivorId); event.setAttribute("turn", "" + turn); recentEvents.add(event); } void revealEvent(boolean allPlayers, List<Player> players, Legion legion, List<CreatureType> creatures, int turn, String reason) { if (loading) { return; } if (creatures.isEmpty()) { // this happens e.g. when in final battle (titan vs. titan) // angel was called out of legion which was then empty, // and in the final updateAllLegionContents there is then // this empty legion... // TODO if this case can happen in a regular game no warning // should be logged LOGGER.log(Level.WARNING, "Called revealEvent(" + allPlayers + ", " + (players != null ? players.toString() : "-null-") + ", " + legion + ", " + creatures.toString() + ", " + turn + ") with empty creatureNames"); return; } Element event = new Element("Reveal"); event.setAttribute("markerId", legion.getMarkerId()); event.setAttribute("allPlayers", "" + allPlayers); event.setAttribute("turn", "" + turn); event.setAttribute("reason", reason); if (!allPlayers) { Element viewers = new Element("viewers"); event.addContent(viewers); Iterator<Player> it = players.iterator(); while (it.hasNext()) { String playerName = it.next().getName(); Element viewer = new Element("viewer"); viewer.addContent(playerName); viewers.addContent(viewer); } } Element creaturesElem = new Element("creatures"); event.addContent(creaturesElem); for (CreatureType creatureType : creatures) { Element creatureElem = new Element("creature"); creatureElem.addContent(creatureType.getName()); creaturesElem.addContent(creatureElem); } recentEvents.add(event); } void playerElimEvent(Player player, Player slayer, int turn) { if (loading) { return; } Element event = new Element("PlayerElim"); event.setAttribute("name", player.getName()); if (slayer != null) { event.setAttribute("slayer", slayer.getName()); } event.setAttribute("turn", "" + turn); recentEvents.add(event); } void movementRollEvent(Player player, int roll) { if (loading) { return; } Element event = new Element("MovementRoll"); event.setAttribute("playerName", player.getName()); event.setAttribute("roll", "" + roll); recentEvents.add(event); } void legionMoveEvent(Legion legion, MasterHex newHex, EntrySide entrySide, boolean teleport, CreatureType lord) { if (loading) { return; } Element event = new Element("Move"); event.setAttribute("markerId", legion.getMarkerId()); event.setAttribute("newHex", newHex.getLabel()); event.setAttribute("entrySide", entrySide.getLabel()); event.setAttribute("teleport", "" + teleport); String creNameOrTextNull = lord == null ? "null" : lord.getName(); event.setAttribute("revealedLord", creNameOrTextNull); recentEvents.add(event); } void legionUndoMoveEvent(Legion legion) { if (loading) { return; } Element event = new Element("UndoMove"); event.setAttribute("markerId", legion.getMarkerId()); recentEvents.add(event); } void recruitEvent(Legion legion, CreatureType recruit, CreatureType recruiter) { if (loading) { return; } Element event = new Element("Recruit"); event.setAttribute("markerId", legion.getMarkerId()); event.setAttribute("recruit", recruit.getName()); event.setAttribute("recruiter", recruiter == null ? "null" : recruiter .getName()); recentEvents.add(event); } void undoRecruitEvent(Legion legion) { if (loading) { return; } Element event = new Element("UndoRecruit"); event.setAttribute("markerId", legion.getMarkerId()); recentEvents.add(event); } /** * Fire all events from redoLog. * Elements from RedoLog are processed one by one and the corresponding * method is called on the Server object, pretty much as if a * ClientHandler would call it when receiving such a request from Client. * Note that in some cases overriding the processingCH is necessary * (because technically, this all currently happens while still the * connecting of last joining player is processed, so processingCH is * set to his ClientHandler). * * Note that "loading" is not set to true, so they DO GET ADDED to the * recentEvents list again. * * @param server The server on which to call all the actions to be redone */ void processRedoLog(Server server) { assert loadedRedoLog != null : "Loaded RedoLog should always " + "have a JDOM root element as backing store"; LOGGER.info("History: Start processing redo log"); isRedo = true; for (Object obj : loadedRedoLog.getChildren()) { Element el = (Element)obj; LOGGER.info("processing redo event " + el.getName()); fireEventFromElement(server, el); } isRedo = false; // TODO clear loadedRedoLog? LOGGER.info("Completed processing redo log"); } // unchecked conversions from JDOM @SuppressWarnings("unchecked") void fireEventsFromXML(Server server) { this.loading = true; assert root != null : "History should always have a " + " JDOM root element as backing store"; List<Element> kids = root.getChildren(); Iterator<Element> it = kids.iterator(); while (it.hasNext()) { Element el = it.next(); fireEventFromElement(server, el); } this.loading = false; } // unchecked conversions from JDOM @SuppressWarnings("unchecked") void fireEventFromElement(Server server, Element el) { GameServerSide game = server.getGame(); String eventName = el.getName(); String reasonPerhaps = el.getAttributeValue("reason"); String reason = (reasonPerhaps != null && !reasonPerhaps .equals("null")) ? reasonPerhaps : "<undefinedReason>"; if (eventName.equals("Reveal") && isRedo && reason.equals(Constants.reasonRecruiter)) { // Skip this because we redo the full recruit event // TODO LOGGER.finest("Skipping Reveal event (reason " + reason + ") during redo."); } else if (eventName.equals("AddCreature") && isRedo && reason.equals(Constants.reasonRecruited)) { // Skip this because we redo the full recruit event LOGGER.finest("Skipping AddCreature event (reason " + reason + ") during redo."); } else if (eventName.equals("RemoveCreature") && isRedo && reason.equals(Constants.reasonRecruited)) { // Skip this because we redo the full recruit event LOGGER.finest("Skipping RemoveCreature event (reason " + reason + ") during redo."); } else if (eventName.equals("Reveal")) { String allPlayers = el.getAttributeValue("allPlayers"); boolean all = allPlayers != null && allPlayers.equals("true"); String markerId = el.getAttributeValue("markerId"); List<String> playerNames = new ArrayList<String>(); Element viewEl = el.getChild("viewers"); int turn = Integer.parseInt(el.getAttributeValue("turn")); String playerName = null; if (viewEl != null) { List<Element> viewers = viewEl.getChildren(); Iterator<Element> it = viewers.iterator(); while (it.hasNext()) { Element viewer = it.next(); playerName = viewer.getTextNormalize(); playerNames.add(playerName); } } List<Element> creatureElements = el.getChild("creatures") .getChildren(); List<CreatureType> creatures = new ArrayList<CreatureType>(); for (Element creature : creatureElements) { String creatureName = creature.getTextNormalize(); creatures.add(game.getVariant() .getCreatureByName(creatureName)); } Player player = game.getPlayerByMarkerId(markerId); Legion legion; if (turn == 1 && player.getLegionByMarkerId(markerId) == null) { // there is no create event for the startup legions, // so we might need to create them for the reveal event legion = new LegionServerSide(markerId, null, player .getStartingTower(), player.getStartingTower(), player, game, creatures .toArray(new CreatureType[creatures.size()])); player.addLegion(legion); } else { legion = player.getLegionByMarkerId(markerId); } // TODO Now we get the reason from history element - does this // change effect/break anything? // String reason = "<unknown>"; if (((PlayerServerSide)player).getDeadBeforeSave()) { // Skip for players that will be dead by end of replay } else if (all) { server.allRevealCreatures(legion, creatures, reason); } else { server.oneRevealLegion(game.getPlayerByName(playerName), legion, creatures, reason); } } else if (eventName.equals("Split")) { String parentId = el.getAttributeValue("parentId"); String childId = el.getAttributeValue("childId"); String turnString = el.getAttributeValue("turn"); int turn = Integer.parseInt(turnString); List<String> creatureNames = new ArrayList<String>(); List<CreatureType> creatures = new ArrayList<CreatureType>(); List<Element> splitoffs = el.getChild("splitoffs").getChildren(); Iterator<Element> it = splitoffs.iterator(); while (it.hasNext()) { Element creature = it.next(); String creatureName = creature.getTextNormalize(); creatureNames.add(creatureName); creatures.add(game.getVariant() .getCreatureByName(creatureName)); } LegionServerSide parentLegion = game.getLegionByMarkerId(parentId); if (isRedo) { server.overrideProcessingCH(parentLegion.getPlayer()); server.doSplit(parentLegion, childId, creatures); server.overrideProcessingCH(parentLegion.getPlayer()); return; } // LegionServerSide.split(..) doesn't like us here since the parent // legion can't remove creatures (not there?) -- create child directly // instead PlayerServerSide player = parentLegion.getPlayer(); LegionServerSide childLegion; if (player.hasLegion(childId)) { childLegion = game.getLegionByMarkerId(childId); LOGGER.severe("During replay of history: child legion " + childId + " should not " + "exist yet (turn=" + turn + ")!!\n" + "Exists already with: " + Glob.glob(",", childLegion.getCreatureTypes()) + " but " + "should now be created with creatures: " + creatures); childLegion.remove(); } childLegion = new LegionServerSide(childId, null, parentLegion .getCurrentHex(), parentLegion.getCurrentHex(), player, game, creatures.toArray(new CreatureType[creatures.size()])); player.addLegion(childLegion); for (CreatureType creature : creatures) { parentLegion.removeCreature(creature, false, false); } // Skip for players that will be dead by end of replay if (!player.getDeadBeforeSave()) { server.allTellDidSplit(parentLegion, childLegion, turn, false); } } else if (eventName.equals("Merge")) { String splitoffId = el.getAttributeValue("splitoffId"); String survivorId = el.getAttributeValue("survivorId"); String turnString = el.getAttributeValue("turn"); int turn = Integer.parseInt(turnString); LegionServerSide splitoff = game.getLegionByMarkerId(splitoffId); LegionServerSide survivor = game.getLegionByMarkerId(survivorId); // Skip for players that will be dead by end of replay if (!survivor.getPlayer().getDeadBeforeSave()) { server.undidSplit(splitoff, survivor, false, turn); } // Add them back to parent: while (splitoff.getHeight() > 0) { CreatureType type = splitoff.removeCreature(0, false, false); survivor.addCreature(type, false); } splitoff.remove(false, false); } else if (eventName.equals("AddCreature")) { String markerId = el.getAttributeValue("markerId"); String creatureName = el.getAttributeValue("creatureName"); // TODO Now we get the reason from history element - does this // change effect/break anything? // String reason = "<unknown>"; LOGGER.finer("Adding creature '" + creatureName + "' to legion with markerId '" + markerId + "', reason '" + reason + "'"); LegionServerSide legion = game.getLegionByMarkerId(markerId); CreatureType creatureType = game.getVariant().getCreatureByName( ... [truncated message content] |
|
From: SourceForge.net <no...@so...> - 2011-02-10 20:38:17
|
Bugs item #3177305, was opened at 2011-02-10 12:40 Message generated for change (Comment added) made by nobody You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101939&aid=3177305&group_id=1939 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: GUI Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Nobody/Anonymous (nobody) Assigned to: Clemens Katzer (cleka) Summary: Can not pick color to start game Initial Comment: Recently tried to play this game. I downloaded both the java version and the zip file. Both seem to start up just fine. The board will appear and another small window with choose a color pops up. I can not click on any color. I've tried pressing the letters that correspond to the colors. I've tried alt and ctrl combinations. Nothing works. I have to force the program to quit. Ideas? ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 20:38 Message: holy moly... its a lot... here goes: at net.sf.colossus.client.SocketClientThread.readAndParseUntilDone(SocketClientThread.java:419) at net.sf.colossus.client.SocketClientThread.run(SocketClientThread.java:373) "Client kevin" prio=6 tid=0x170d5400 nid=0x1eb4 runnable [0x17cdf000] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(Unknown Source) at sun.nio.cs.StreamDecoder.readBytes(Unknown Source) at sun.nio.cs.StreamDecoder.implRead(Unknown Source) at sun.nio.cs.StreamDecoder.read(Unknown Source) - locked <0x041a4f00> (a java.io.InputStreamReader) at java.io.InputStreamReader.read(Unknown Source) at java.io.BufferedReader.fill(Unknown Source) at java.io.BufferedReader.readLine(Unknown Source) - locked <0x041a4f00> (a java.io.InputStreamReader) at java.io.BufferedReader.readLine(Unknown Source) at net.sf.colossus.client.SocketClientThread.waitForLine(SocketClientThread.java:504) at net.sf.colossus.client.SocketClientThread.readAndParseUntilDone(SocketClientThread.java:419) at net.sf.colossus.client.SocketClientThread.run(SocketClientThread.java:373) "Thread-4" prio=6 tid=0x1716a800 nid=0x1428 runnable [0x17c3f000] java.lang.Thread.State: RUNNABLE at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method) at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(Unknown Source) at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(Unknown Source) at sun.nio.ch.WindowsSelectorImpl.doSelect(Unknown Source) at sun.nio.ch.SelectorImpl.lockAndDoSelect(Unknown Source) - locked <0x0418f468> (a sun.nio.ch.Util$1) - locked <0x0418f478> (a java.util.Collections$UnmodifiableSet) - locked <0x0418f3f0> (a sun.nio.ch.WindowsSelectorImpl) at sun.nio.ch.SelectorImpl.select(Unknown Source) at net.sf.colossus.server.Server.handleOutsideChanges(Server.java:439) at net.sf.colossus.server.Server.waitOnSelector(Server.java:398) at net.sf.colossus.server.Server.run(Server.java:227) "TimerQueue" daemon prio=6 tid=0x176e6400 nid=0x1f8c in Object.wait() [0x17a9f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x04168e60> (a javax.swing.TimerQueue) at javax.swing.TimerQueue.run(Unknown Source) - locked <0x04168e60> (a javax.swing.TimerQueue) at java.lang.Thread.run(Unknown Source) "AWT-EventQueue-0" prio=6 tid=0x17042800 nid=0x1eac waiting for monitor entry [0x1759e000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruit.<init>(PickRecruit.java:168) at net.sf.colossus.gui.PickRecruit.pickRecruit(PickRecruit.java:186) - locked <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at net.sf.colossus.gui.ClientGUI.doPickRecruit(ClientGUI.java:2097) at net.sf.colossus.client.Client.doRecruit(Client.java:1763) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch" prio=6 tid=0x1701c000 nid=0x193c waiting for monitor entry [0x173bf000] java.lang.Thread.State: BLOCKED (on object monitor) at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x04048108> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) "AWT-Windows" daemon prio=6 tid=0x16ff8400 nid=0x1d74 runnable [0x1729f000] java.lang.Thread.State: RUNNABLE at sun.awt.windows.WToolkit.eventLoop(Native Method) at sun.awt.windows.WToolkit.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "AWT-Shutdown" prio=6 tid=0x17001c00 nid=0x1844 in Object.wait() [0x1724f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0402cf70> (a java.lang.Object) at java.lang.Object.wait(Object.java:485) at sun.awt.AWTAutoShutdown.run(Unknown Source) - locked <0x0402cf70> (a java.lang.Object) at java.lang.Thread.run(Unknown Source) "Java2D Disposer" daemon prio=10 tid=0x17018800 nid=0x1cbc in Object.wait() [0x171ff000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x0402d000> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x0402d000> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) at sun.java2d.Disposer.run(Unknown Source) at java.lang.Thread.run(Unknown Source) "Low Memory Detector" daemon prio=6 tid=0x16c80400 nid=0x1cac runnable [0x00000000] java.lang.Thread.State: RUNNABLE "CompilerThread0" daemon prio=10 tid=0x16c7a400 nid=0x450 waiting on condition [0x00000000] java.lang.Thread.State: RUNNABLE "Attach Listener" daemon prio=10 tid=0x16c78c00 nid=0x1d44 runnable [0x00000000] java.lang.Thread.State: RUNNABLE "Signal Dispatcher" daemon prio=10 tid=0x16c77800 nid=0x1b30 waiting on condition [0x00000000] java.lang.Thread.State: RUNNABLE "Finalizer" daemon prio=8 tid=0x16c67800 nid=0x19cc in Object.wait() [0x16ddf000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x03ebd718> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) - locked <0x03ebd718> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(Unknown Source) at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source) "Reference Handler" daemon prio=10 tid=0x16c62c00 nid=0x1eb0 in Object.wait() [0x16d8f000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x03ebd7a0> (a java.lang.ref.Reference$Lock) at java.lang.Object.wait(Object.java:485) at java.lang.ref.Reference$ReferenceHandler.run(Unknown Source) - locked <0x03ebd7a0> (a java.lang.ref.Reference$Lock) "main" prio=6 tid=0x003b6400 nid=0x1e2c in Object.wait() [0x009df000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x041915c8> (a java.lang.Object) at java.lang.Object.wait(Object.java:485) at net.sf.colossus.server.Server.waitUntilGameFinishes(Server.java:780) - locked <0x041915c8> (a java.lang.Object) at net.sf.colossus.server.GameServerSide.cleanupWhenGameOver(GameServerSide.java:401) at net.sf.colossus.server.GameServerSide.startNewGameAndWaitUntilOver(GameServerSide.java:454) at net.sf.colossus.appmain.Start.setupAndLoop(Start.java:663) at net.sf.colossus.appmain.Start.main(Start.java:874) "VM Thread" prio=10 tid=0x16c5fc00 nid=0x10fc runnable "VM Periodic Task Thread" prio=10 tid=0x16c82c00 nid=0x1a00 waiting on condition JNI global references: 1473 Found one Java-level deadlock: ============================= "AWT-EventQueue-0": waiting to lock monitor 0x177e5b1c (object 0x02ba1288, a java.lang.Object), which is held by "EventQueueMonitor-ComponentEvtDispatch" "EventQueueMonitor-ComponentEvtDispatch": waiting to lock monitor 0x176e8c54 (object 0x13872538, a java.lang.Class), which is held by "AWT-EventQueue-0" Java stack information for the threads listed above: =================================================== "AWT-EventQueue-0": at java.awt.Component.getName(Unknown Source) - waiting to lock <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.windowOpened(JavaSupportImpl.java:218) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at com.sun.java.accessibility.util.AWTEventMonitor$AWTEventsListener.windowOpened(AWTEventMonitor.java:1270) at java.awt.AWTEventMulticaster.windowOpened(Unknown Source) at java.awt.Window.processWindowEvent(Unknown Source) at javax.swing.JDialog.processWindowEvent(Unknown Source) at java.awt.Window.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at net.sf.colossus.guiutil.KDialog.setVisible(KDialog.java:155) at net.sf.colossus.gui.PickRecruit.<init>(PickRecruit.java:168) at net.sf.colossus.gui.PickRecruit.pickRecruit(PickRecruit.java:186) - locked <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at net.sf.colossus.gui.ClientGUI.doPickRecruit(ClientGUI.java:2097) at net.sf.colossus.client.Client.doRecruit(Client.java:1763) at net.sf.colossus.gui.MasterBoard.actOnLegion(MasterBoard.java:2206) at net.sf.colossus.gui.MasterBoard.access$2000(MasterBoard.java:92) at net.sf.colossus.gui.MasterBoard$MasterBoardMouseHandler.mousePressed(MasterBoard.java:2097) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) "EventQueueMonitor-ComponentEvtDispatch": at java.awt.Dialog.constructComponentName(Unknown Source) - waiting to lock <0x13872538> (a java.lang.Class for net.sf.colossus.gui.PickRecruit) at java.awt.Component.getName(Unknown Source) - locked <0x02ba1288> (a java.lang.Object) at java.awt.Component.paramString(Unknown Source) at java.awt.Container.paramString(Unknown Source) at java.awt.Dialog.paramString(Unknown Source) at javax.swing.JDialog.paramString(Unknown Source) at java.awt.Component.toString(Unknown Source) at Citrix.PasswordManager.JavaSupportImpl.AddWindowToMap(JavaSupportImpl.java:237) at Citrix.PasswordManager.JavaSupportImpl.topLevelWindowCreated(JavaSupportImpl.java:253) at com.sun.java.accessibility.util.TopLevelWindowMulticaster.topLevelWindowCreated(TopLevelWindowMulticaster.java:48) at com.sun.java.accessibility.util.EventQueueMonitor.addTopLevelWindow(EventQueueMonitor.java:311) - locked <0x04048108> (a java.util.Vector) at com.sun.java.accessibility.util.ComponentEvtDispatchThread.run(EventQueueMonitor.java:636) Found 1 deadlock. Heap def new generation total 1216K, used 704K [0x02a90000, 0x02be0000, 0x03e40000) eden space 1088K, 57% used [0x02a90000, 0x02b2b388, 0x02ba0000) from space 128K, 65% used [0x02ba0000, 0x02bb4f20, 0x02bc0000) to space 128K, 0% used [0x02bc0000, 0x02bc0000, 0x02be0000) tenured generation total 15784K, used 9845K [0x03e40000, 0x04daa000, 0x12a90000) the space 15784K, 62% used [0x03e40000, 0x047dd428, 0x047dd600, 0x04daa000) compacting perm gen total 14336K, used 14223K [0x12a90000, 0x13890000, 0x16a90000) the space 14336K, 99% used [0x12a90000, 0x13873d10, 0x13873e00, 0x13890000) No shared spaces configured. Terminate batch job (Y/N)? ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:27 Message: NOTE, from the Java console log you should be able to copy paste! (mark with mouse and Ctrl-C or right click -> copy.) Only from that Colossus own "About" window you can't copy paste. Not sure whether that affinity helps; Colossus is "multithreaded", so if there is more than one core existing it might still use a 2nd. (affinity to me means merely, it would _preferrably_ run on that core). My suspicion is it is some kind of deadlock, caused by the way how those dialogs are called: "synchronous" , and in the "Event Dispatcher thread". That it happens randomly is much more "reasonable" than that some dialogs lock and some not. Such random misbehaviors we had earlier. They were fixed, but merely "somehow" and "when it happened", not systematically "rewrite everything to be thread-safe by design". Can you try the following: Run it from commandline. If possible, make the commandline window as big as possible, like window size (field 3 +4) width 150 height 50, screen buffer size (1+2 fields) 150 and 3000.) (to do so, on the cmdline window, click the smal C:\ in top LEFT corner, Properties). When it looks, make the cmdline box the active window and press Ctrl-Break (bottom left and top right keys of the keyboard together ;-)) Lot of glibberish would be printed to screen. Same top left icon, Edit => Select all ; copy (ctrl-c or from same menu copy). Send me what's there (or post it here). That's the "which thread is doing what at the moment" summary. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 20:10 Message: yes I was able to limit the program running on one processer. Or at least I told it to set its affinity to Core 0 from the processes. It still locked up. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 20:08 Message: I did some further testing... it will actually lock up randomly still. Doesn't matter if I can recruit one or two. :/ ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 20:06 Message: Ran java -version from command window: java version "1.6.0_17" Java(TM) SE Runtime Environment (build 1.6.0_17-b04) Java HotSpot(TM) Client VM (build 14.3-b01, mixed mode) I figured out how to get into the Java Options. Logging was turned off. So now I have a Java Console window when the program opens. So I tried a game, and it got stuck after 2nd time I tried to add a recruit. Btw, I notice it seems to do it when I can choose more than one recruit. Here is the last few lines of the log: (man... this is a lot of typing and I'm not sure it is really showing any errors. It just shows the last step before it "froze". INFO: Legion Gr09 (Lobster) in Tower hex 600 moves to Jungle hex 135 entering on RIGHT Feb 10, 2011 2:00:47 PM net.sf.colossus.server.GameServerSide$GamePhaseAdvancer advancePhaseInternal INFO:Phase advances to Muster Feb 10, 2011 2:00:49 PM net.sf.colossus.server.LegionServerSide addCreature INFO: Added Ceentaur -now there are 20 left. Feb 10, 2011 2:00:49 PM net.sf.colossus.server.GameServerSide doRecruit INFO: Legion Gr05 in Woods hex 39 recruits Centaur with 1 Centaur ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 19:37 Message: > It is a quad core system. hm. That might be part of the reason. I have some wild guess what it could be... Can you tell me exact java version? Help => About tells it. It tells also Log directory, there would be a file Colossus0.log. (The *0,log is always the newest; if new starts, it renames 1 to 2, 0 to 1nd creates new 0.log file). Sorry you have to type the stuff from Help => About, no copy paste. Or make a screenshot if you know how. If you wish you can also send it to me via mail (my SF username, i.e. the "cleka", then the magic a-like character, then users.sourceforge.net . Can you tune your system to use one CPU only? ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 19:15 Message: We were at a party and someone brought the board game Titan over. It confused the heck out of us (never even made it around once) but it seemed interesting. I did a search and found you making an app for it. So I thought I'd try it out. I am definitely brand new to Titan, so I expect to actually be the only player on here that gets defeated by your "dumb" AI. It is a quad core system. No I can not close the the dialog box with the small "X". In fact I can't do anything except shut it down. I selected Auto Pick Recruiters... and now I think it hangs up on actual recruiting now. It appears random too. Sometimes I can recruit a whole stack (7) without "locking up" and other times it will do it after the first recruit. (btw... sometimes I can't move a stack. That just a rule I'm not aware of?) ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 18:50 Message: Do you happen to know, do you have more than one CPU or CPU core? ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 18:43 Message: BTW, are you "well familiar with Titan, just new to use Colossus, or need to learn also "how game works, rules, strategy, etc." first? Once you are familar with the game and the usage, you could even try the public game server (by clicking the "WebClient" button), where you could find other "real people" to play against. (in contrast to the AI ("Artificial Intelligence") i.e. Robot players... However to notice is, people are usually online in afternoon/evening for US time. At other time you might log in there and be alone 30 or 60 mins before any other drop by. However, that's anyway more recommded only a) it does not hang for you any more and b) once you are "fluent" in playing. It's annoying for others when you need, let's say, 1.5 minutes for each individual move, split, recruit etc.... => Practicing to get faster better with AI players.They are all in all rather dump, but for first few weeks ok. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 18:35 Message: okay (or not okay), but that's something. In worst case I have to make you a special version which prints something to screen for every line of code before and around where it calls that "Pick Recruiter" dialog :)) That's what I meant, you might run into a "block" somewhat later with some other dialog. But the recruit dialog itself worked?? Strange; they are very similarly programmed. Some more "smalltalk" :o) > Made me green in fact. > I guess I can always play green. :p :) You can try: Window => Preferences => "Color" tab. Click on "Select" and choose another color. Next time you START a game it would choose that color for you automatically. (all those "Autoplay" options do certain things for you. So in fact you could enable "Auto Pick Recruiter", since that one is rather unimportant, as long as you can choose an actual Recruit. (so we can circumvent THIS cliff for now). But there might be other dialogs later to block you as well. And/or, in fact that's an interesting thing to try, whether that color chooser dialog would work??? If not, can you close it with the "x" shaped icon in upper right corner? (the initial color pick dialog CAN'T be closed that way, or rather, if one does, it reappears immediately.) So, sure, I'd like to continue troubleshoot this. Let's try that above for now, have to bring kids to bed now. -Cle. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 18:17 Message: So I've been running through this... moving, recruiting, etc... then I came to a point where it won't let me pick again. :/ Says: kevinnew: Pick Recruiter in Brush hex17 There is more than one way you can recruit this. Current content of legion Gr05: There is a Titan, Cyclops, Gargoyle, Gargoyle, Centaur, Centaur Pick the creature type you want to reveal: There is a Cyclops, Gargoyle I can't pick anything. Tried clicking on it numerous times. Nothing will select and it is stuck on this dialog box. Not sure why this happening... but thank you for sticking it out with me. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 18:12 Message: You are correct. I typed the name in, it found it and ran fine. Well.. I can play now. yay! ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 18:08 Message: K so, I opened the default kevin.cfg and added those lines to it: Auto\ pick\ markers=true Auto\ pick\ color=true Favorite\ colors=Green And it worked. The game started. Made me green in fact. So far so good to, I was able to split a stack. Move the unit. Recruit. And watched the computer take it's move as well. So not sure why it wasn't working but it is now. Want to continue to troubleshoot? I guess I can always play green. :p ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 18:06 Message: No, you cannot "pick" the name kevinnew - it does not offer all "names that may exist". You choose the name on "Players" tab, On left side, Choose HUman, on right side type the name. 2nd Line, choose e.g. "SimpleAI", it fills right side with <byColor> or something, thats ok, Type there in first line the name kevinnew, and when game starts, it goes looking for a file Colossus-kewvinnew.cfg [and if it wouldn't exist, create it, sooner or later, after GUI / preferences changes]. Now we pre-create that file, so that it skips the color picking dialog because it would find a value to say "auto pick" from the file. -Cle. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 17:59 Message: btw, I did try and run the Colossus.jnlp stand alone and brings up the welcome screen, I hit ok, and the Game setup screen appears. I still can't choose newkevin and when I run it, once again I can not pick any of the colors. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 17:57 Message: I'll start from the beginning: • I open a folder I extracted all the files to from the .zip • I double click on run.bat A cmd window pops up with: C:\Documents and Settings\kevin\Desktop\collossus>cd "c:\Documents and Settings\kevin\Desktop\collossus\" C:\Documents and Settings\kevin\Desktop\collossus>java -Djava.util.logging.config.file=logging.properties -XMx256M -jar Colossus.jar Then what looks like the main program appears. It is the game setup screen. I make player one a human player and choose Kevin as the type. I make the 2nd player a SimpleAI and choose <By color> for the type. I leave everything else as is. (btw the top says Running Colossus Version 0.12.0-beta1 (revision 4970) on etc...) • I pick New game. The game appears to start, I can see the grid in the background with all the hills, deserts, etc. A small box with Pick a Color appears. I can move this box around. But I can not pick a color. I've tried clicking on every single one. I've tried pressing G, e, o, etc. I've tried Ctrl/Alt combinations, nothing. I can not close it either. I have to force it to shutdown. In Task Manager it shows that it is still running... so I don't THINK it is locked up. I do NOT see any other windows anywhere that I might need to click. I've even tried Alt+Tab and Ctrl+Tab to check. • I went ahead and did a search for the .colossus folder. I found it. It has 5 files in it. Colossus-netclient.cfg Colossus-red.cfg Colossus-server.cfg Colossus-kevin.cfg Colossus-kevin1.cfg • I went ahead and created a new .cfg file. I named it Colossus-kevinnew.cfg. I added these lines to it: Auto\ pick\ markers=true Auto\ pick\ color=true Favorite\ colors=Green Interestingly here, when I started the program, I could not choose kevinnew. I could only still see kevin. I searched my entire computer to see if the .cfg files might also be somewhere else but I could only find them under \\documents and settings\kevin\desktop\collossus • Ok so I tried your command prompt idea. I even ran the command from within the path and I kept getting this error... Unable to access jarfile Colossus.jar I can't imagine it being a graphical error... the program still seems to be running fine, I just can't select any color. In Task Manager it doesn't say "not responding". So I will wait for your reply. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 17:06 Message: ok, XP with SP3 and Sun Java 6 ( 1.6.x ). All right, that should work. ( I may have in use SP2 but still). E.g. "Windows Vista" or "Windows 7" are more "exotic" for me. Sun Java is good also. Did you get the "Welcome to Release 0.12.0" dialog and click it away? (if not, it might have lurked around in the background hidden behind some other window and block the mouse/keyboard input or whatever ("modal dialog"). Should technically not happen/be possible, but one has seen stranger things happen.... The History.java is one of the source files, not relevant. > The only .cf files I could find are WebServer.cf, WebServer_unix.cf, > and WebServer_win.cf. Do you want me to add a line into one of these? No. They are part of the "sources" as well, in some sense. Once started, Colossus will create a directory ".colossus" (and 2 files in it) "somewhere on your computer" - in what it considers to be "your home directory". What that exactly is, might vary... The home directory is under Windows _often_ something like: C:\Documents and Settings\Mike if you logged in to the computer with username Mike. Often you get there with right-click on Start button => Explore => opens an explorer e.g. to C:\Documents and Settings\katzer\Start Menu for me as user katzer. So katzer would be my home dir. However on my computer it's configured differently, so my home directory is D:\katzer You can take an explorer (the Start => right-click => Explore thing) and type in the "path"/adress line in the top "%HOME%" and press return. (you may need to make it visible first with View => Toolbars => Address bar ). Inside there should be .colossus. Once you found that we are much further :) (normally, once masterboardboard is open, Help => About would tell the location but you don't even get there yet :-/ ) Inside there will be eventually several .cfg files (and perhaps a "saves" directory). Directory of D:\katzer\.colossus 07.02.2011 10:06 <DIR> . 07.02.2011 10:06 <DIR> .. 07.02.2011 15:12 1 997 Colossus-clemens.cfg 08.02.2011 19:49 4 425 Colossus-katzer.cfg 08.02.2011 19:49 2 069 Colossus-katzer1.cfg 28.07.2010 17:18 276 Colossus-netclient.cfg 08.02.2011 19:49 900 Colossus-server.cfg 07.02.2011 15:12 2 059 Colossus-test1.cfg 07.02.2011 22:00 586 Colossus-webclient.cfg 07.02.2011 10:56 <DIR> saves 7 File(s) 12 312 bytes 3 Dir(s) 21 313 040 384 bytes free D:\katzer\.colossus> You can ignore the "-server", -webclient and -netclient files for now - they are "internal". -katzer and -clemens etc. are "client preferences" files. Like, I played once a game as clemens, and when changed preferences such as the various auto-<do something>, position and size of windows etc., Colossus would save those to a file with that name. (some other, like Variant, type and names of players, Options in Startup dialog, are stored to the Colossus-server.cfg file). Usually when you get the Game Setup dialog (where you choose variant, count and type of players etc), first of them you make "Human" and name is initialized with the name you are logged on to the computer. Thus created with some text editor (notepad, if necessary), a textfile named Colossus-Mike.cfg (replace your name, of course). (if necessaary, right click in the right side of explorer, where the files are shown => New => Text Document => then there exists a file "New File.txt" (or similar). Click it, or F2 on it, change name to above. Put into that file the following three lines: Auto\ pick\ markers=true Auto\ pick\ color=true Favorite\ colors=Green Note the "backslash" ( \ ) in front of the space. Now if you start a game with your player name set to "Mike" the Pick... dialogs should not appear. So question is, what will get stuck then :) The other interesting thing to try is, if you can run from commandline (by typing that command, which will make the java command shown): java -Djava.util.logging.config.file=file=logging.properties -Xmx256M -jar Colossus.jar While Colossus runs, eventually happening warnings etc. would be printed to that Command window. But if it's a total "Graphics stuff somehow freezes" (like it sounds, that it does not accept click or key on any of the colors) ... hm. Tricky. Might be no warning/exception, just the graphics thread (EDT, Event Dispatcher Thread, techno babble... ;-) hangs. Let's see so far, how far we get with above. If we get that, I've already some ideas how to proceed. BR, Clemens ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 15:15 Message: Not sure if this will help... I found a file called History.java under my recent documents. It's pretty lengthy but it is listed below: package net.sf.colossus.server; import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import net.sf.colossus.common.Constants; import net.sf.colossus.game.Creature; import net.sf.colossus.game.EntrySide; import net.sf.colossus.game.Legion; import net.sf.colossus.game.Player; import net.sf.colossus.game.actions.AddCreatureAction; import net.sf.colossus.game.actions.Recruitment; import net.sf.colossus.util.Glob; import net.sf.colossus.variant.CreatureType; import net.sf.colossus.variant.MasterHex; import org.jdom.Element; /** * Stores game history as XML. * * @author David Ripton */ public class History { private static final Logger LOGGER = Logger.getLogger(History.class .getName()); /** * History: events that happened before last commit point */ private final Element root; /** * History elements/events that happened since the last commit/"snapshot". */ private final List<Element> recentEvents = new LinkedList<Element>(); /** * Set to true during the processing of {@link #fireEventsFromXML(Server)} * to avoid triggering events we just restored again. */ private boolean loading = false; /** * */ private final Element loadedRedoLog; private boolean isRedo = false; /** * Stores the surviving legions (this variable is not needed any more) * * While the history should contain all information to reproduce the game * state, the last set of legions is currently still loaded upfront since * they contain the battle-specific information. This collides with * replaying the game from history... * Now, since 08/2008, they are not stored as "survivorlegions" any more. * Instead, they are backed up internally (done inside PlayerServerSide), * all the history is replayed. This creates proper split prediction data * in all clients. After that, backup data is compared with result of * replay. * E.g. Legion count, their content, players eliminated must be in sync. * Then the replayed ones are discarded and the backedup ones restored * - which have the right legion state (moved, donor, summoned, ...) * * TODO align the history replay more with the original gameplay so we * don't need this anymore; * 08/2008:==> this is now to some part done. Still replay * events could be closer to original events (split, summon, * acquire, teleport, ...) , not just the "result" of that * event (reveal,add,remove effects). * * TODO instead: model the actual events instead of just result, * or at least add relevant info to history elements, so that all * replayed events carry all needed data so that they could also be * processed by event viewer (currently EV does not process anything * during replay). */ public History() { root = new Element("History"); // Dummy: loadedRedoLog = new Element("LoadedRedoLog"); } /** * Constructor used by "LoadGame" */ public History(Element loadGameRoot) { // Get the history elements and store them to "root" root = (Element)loadGameRoot.getChild("History").clone(); // Get the redo log content loadedRedoLog = (Element)loadGameRoot.getChild("Redo").clone(); } /** * All events before last commit */ Element getCopy() { return (Element)root.clone(); } /** * Reached a commit point: append all recent events to the history, * clear list of recent events; caller should do this together with creating * the next snapshot. */ void flushRecentToRoot() { for (Element el : recentEvents) { el.detach(); String name = el.getName(); // TODO later, when this are proper events (not XML elements), // ask rather from the Event whether it belongs copied to // history or not. // TODO At some point in future, put also those Move events // that reveal something to history, and make either the history // replay only send the relevant reveal messages, or make the // Clients during replay (but not redo part) ignore the "move" // and just process the revealing part. // Preferrably the latter, so that proper events show up in the // EventViewer. if (name.equals("Move") || name.equals("UndoMove")) { LOGGER.finest("Flush Redo to History: skipping " + name); } else if (name.equals("Recruit") || name.equals("UndoRecruit")) { // Skipping for now, because there are also the addCreature, // removeCreature and reveal Events still in history. // TODO make the Recruit/UndoRecruit history events during // replay properly, get rid of the "side effect" type of // entries in save game. LOGGER.finest("Flush Redo to History: skipping " + name); } else { root.addContent(el); } } recentEvents.clear(); } /** * @return A Redo Element, containing all events since last commit * i.e. which need to be REDOne on top of last commit point/snapshot */ Element getNewRedoLogElement() { Element redoLogElement = new Element("Redo"); for (Element el : recentEvents) { el.detach(); redoLogElement.addContent(el); } return redoLogElement; } /** * TODO reconsider name * TODO decide if we should move it all into one big handleEvent(GameEvent) method */ void addCreatureEvent(AddCreatureAction event, int turn, String reason) { if (loading) { return; } Element element = new Element("AddCreature"); element.setAttribute("markerId", event.getLegion().getMarkerId()); element.setAttribute("creatureName", event.getAddedCreatureType() .getName()); element.setAttribute("turn", "" + turn); element.setAttribute("reason", reason); recentEvents.add(element); } void removeCreatureEvent(Legion legion, CreatureType creature, int turn, String reason) { if (loading) { return; } Element event = new Element("RemoveCreature"); event.setAttribute("markerId", legion.getMarkerId()); event.setAttribute("creatureName", creature.getName()); event.setAttribute("turn", "" + turn); event.setAttribute("reason", reason); recentEvents.add(event); } void splitEvent(Legion parent, Legion child, List<CreatureType> splitoffs, int turn) { if (loading) { return; } Element event = new Element("Split"); event.setAttribute("parentId", parent.getMarkerId()); event.setAttribute("childId", child.getMarkerId()); event.setAttribute("turn", "" + turn); Element creatures = new Element("splitoffs"); event.addContent(creatures); for (CreatureType creatureType : splitoffs) { Element cr = new Element("creature"); cr.addContent(creatureType.getName()); creatures.addContent(cr); } recentEvents.add(event); } void mergeEvent(String splitoffId, String survivorId, int turn) { if (loading) { return; } Element event = new Element("Merge"); event.setAttribute("splitoffId", splitoffId); event.setAttribute("survivorId", survivorId); event.setAttribute("turn", "" + turn); recentEvents.add(event); } void revealEvent(boolean allPlayers, List<Player> players, Legion legion, List<CreatureType> creatures, int turn, String reason) { if (loading) { return; } if (creatures.isEmpty()) { // this happens e.g. when in final battle (titan vs. titan) // angel was called out of legion which was then empty, // and in the final updateAllLegionContents there is then // this empty legion... // TODO if this case can happen in a regular game no warning // should be logged LOGGER.log(Level.WARNING, "Called revealEvent(" + allPlayers + ", " + (players != null ? players.toString() : "-null-") + ", " + legion + ", " + creatures.toString() + ", " + turn + ") with empty creatureNames"); return; } Element event = new Element("Reveal"); event.setAttribute("markerId", legion.getMarkerId()); event.setAttribute("allPlayers", "" + allPlayers); event.setAttribute("turn", "" + turn); event.setAttribute("reason", reason); if (!allPlayers) { Element viewers = new Element("viewers"); event.addContent(viewers); Iterator<Player> it = players.iterator(); while (it.hasNext()) { String playerName = it.next().getName(); Element viewer = new Element("viewer"); viewer.addContent(playerName); viewers.addContent(viewer); } } Element creaturesElem = new Element("creatures"); event.addContent(creaturesElem); for (CreatureType creatureType : creatures) { Element creatureElem = new Element("creature"); creatureElem.addContent(creatureType.getName()); creaturesElem.addContent(creatureElem); } recentEvents.add(event); } void playerElimEvent(Player player, Player slayer, int turn) { if (loading) { return; } Element event = new Element("PlayerElim"); event.setAttribute("name", player.getName()); if (slayer != null) { event.setAttribute("slayer", slayer.getName()); } event.setAttribute("turn", "" + turn); recentEvents.add(event); } void movementRollEvent(Player player, int roll) { if (loading) { return; } Element event = new Element("MovementRoll"); event.setAttribute("playerName", player.getName()); event.setAttribute("roll", "" + roll); recentEvents.add(event); } void legionMoveEvent(Legion legion, MasterHex newHex, EntrySide entrySide, boolean teleport, CreatureType lord) { if (loading) { return; } Element event = new Element("Move"); event.setAttribute("markerId", legion.getMarkerId()); event.setAttribute("newHex", newHex.getLabel()); event.setAttribute("entrySide", entrySide.getLabel()); event.setAttribute("teleport", "" + teleport); String creNameOrTextNull = lord == null ? "null" : lord.getName(); event.setAttribute("revealedLord", creNameOrTextNull); recentEvents.add(event); } void legionUndoMoveEvent(Legion legion) { if (loading) { return; } Element event = new Element("UndoMove"); event.setAttribute("markerId", legion.getMarkerId()); recentEvents.add(event); } void recruitEvent(Legion legion, CreatureType recruit, CreatureType recruiter) { if (loading) { return; } Element event = new Element("Recruit"); event.setAttribute("markerId", legion.getMarkerId()); event.setAttribute("recruit", recruit.getName()); event.setAttribute("recruiter", recruiter == null ? "null" : recruiter .getName()); recentEvents.add(event); } void undoRecruitEvent(Legion legion) { if (loading) { return; } Element event = new Element("UndoRecruit"); event.setAttribute("markerId", legion.getMarkerId()); recentEvents.add(event); } /** * Fire all events from redoLog. * Elements from RedoLog are processed one by one and the corresponding * method is called on the Server object, pretty much as if a * ClientHandler would call it when receiving such a request from Client. * Note that in some cases overriding the processingCH is necessary * (because technically, this all currently happens while still the * connecting of last joining player is processed, so processingCH is * set to his ClientHandler). * * Note that "loading" is not set to true, so they DO GET ADDED to the * recentEvents list again. * * @param server The server on which to call all the actions to be redone */ void processRedoLog(Server server) { assert loadedRedoLog != null : "Loaded RedoLog should always " + "have a JDOM root element as backing store"; LOGGER.info("History: Start processing redo log"); isRedo = true; for (Object obj : loadedRedoLog.getChildren()) { Element el = (Element)obj; LOGGER.info("processing redo event " + el.getName()); fireEventFromElement(server, el); } isRedo = false; // TODO clear loadedRedoLog? LOGGER.info("Completed processing redo log"); } // unchecked conversions from JDOM @SuppressWarnings("unchecked") void fireEventsFromXML(Server server) { this.loading = true; assert root != null : "History should always have a " + " JDOM root element as backing store"; List<Element> kids = root.getChildren(); Iterator<Element> it = kids.iterator(); while (it.hasNext()) { Element el = it.next(); fireEventFromElement(server, el); } this.loading = false; } // unchecked conversions from JDOM @SuppressWarnings("unchecked") void fireEventFromElement(Server server, Element el) { GameServerSide game = server.getGame(); String eventName = el.getName(); String reasonPerhaps = el.getAttributeValue("reason"); String reason = (reasonPerhaps != null && !reasonPerhaps .equals("null")) ? reasonPerhaps : "<undefinedReason>"; if (eventName.equals("Reveal") && isRedo && reason.equals(Constants.reasonRecruiter)) { // Skip this because we redo the full recruit event // TODO LOGGER.finest("Skipping Reveal event (reason " + reason + ") during redo."); } else if (eventName.equals("AddCreature") && isRedo && reason.equals(Constants.reasonRecruited)) { // Skip this because we redo the full recruit event LOGGER.finest("Skipping AddCreature event (reason " + reason + ") during redo."); } else if (eventName.equals("RemoveCreature") && isRedo && reason.equals(Constants.reasonRecruited)) { // Skip this because we redo the full recruit event LOGGER.finest("Skipping RemoveCreature event (reason " + reason + ") during redo."); } else if (eventName.equals("Reveal")) { String allPlayers = el.getAttributeValue("allPlayers"); boolean all = allPlayers != null && allPlayers.equals("true"); String markerId = el.getAttributeValue("markerId"); List<String> playerNames = new ArrayList<String>(); Element viewEl = el.getChild("viewers"); int turn = Integer.parseInt(el.getAttributeValue("turn")); String playerName = null; if (viewEl != null) { List<Element> viewers = viewEl.getChildren(); Iterator<Element> it = viewers.iterator(); while (it.hasNext()) { Element viewer = it.next(); playerName = viewer.getTextNormalize(); playerNames.add(playerName); } } List<Element> creatureElements = el.getChild("creatures") .getChildren(); List<CreatureType> creatures = new ArrayList<CreatureType>(); for (Element creature : creatureElements) { String creatureName = creature.getTextNormalize(); creatures.add(game.getVariant() .getCreatureByName(creatureName)); } Player player = game.getPlayerByMarkerId(markerId); Legion legion; if (turn == 1 && player.getLegionByMarkerId(markerId) == null) { // there is no create event for the startup legions, // so we might need to create them for the reveal event legion = new LegionServerSide(markerId, null, player .getStartingTower(), player.getStartingTower(), player, game, creatures .toArray(new CreatureType[creatures.size()])); player.addLegion(legion); } else { legion = player.getLegionByMarkerId(markerId); } // TODO Now we get the reason from history element - does this // change effect/break anything? // String reason = "<unknown>"; if (((PlayerServerSide)player).getDeadBeforeSave()) { // Skip for players that will be dead by end of replay } else if (all) { server.allRevealCreatures(legion, creatures, reason); } else { server.oneRevealLegion(game.getPlayerByName(playerName), legion, creatures, reason); } } else if (eventName.equals("Split")) { String parentId = el.getAttributeValue("parentId"); String childId = el.getAttributeValue("childId"); String turnString = el.getAttributeValue("turn"); int turn = Integer.parseInt(turnString); List<String> creatureNames = new ArrayList<String>(); List<CreatureType> creatures = new ArrayList<CreatureType>(); List<Element> splitoffs = el.getChild("splitoffs").getChildren(); Iterator<Element> it = splitoffs.iterator(); while (it.hasNext()) { Element creature = it.next(); String creatureName = creature.getTextNormalize(); creatureNames.add(creatureName); creatures.add(game.getVariant() .getCreatureByName(creatureName)); } LegionServerSide parentLegion = game.getLegionByMarkerId(parentId); if (isRedo) { server.overrideProcessingCH(parentLegion.getPlayer()); server.doSplit(parentLegion, childId, creatures); server.overrideProcessingCH(parentLegion.getPlayer()); return; } // LegionServerSide.split(..) doesn't like us here since the parent // legion can't remove creatures (not there?) -- create child directly // instead PlayerServerSide player = parentLegion.getPlayer(); LegionServerSide childLegion; if (player.hasLegion(childId)) { childLegion = game.getLegionByMarkerId(childId); LOGGER.severe("During replay of history: child legion " + childId + " should not " + "exist yet (turn=" + turn + ")!!\n" + "Exists already with: " + Glob.glob(",", childLegion.getCreatureTypes()) + " but " + "should now be created with creatures: " + creatures); childLegion.remove(); } childLegion = new LegionServerSide(childId, null, parentLegion .getCurrentHex(), parentLegion.getCurrentHex(), player, game, creatures.toArray(new CreatureType[creatures.size()])); player.addLegion(childLegion); for (CreatureType creature : creatures) { parentLegion.removeCreature(creature, false, false); } // Skip for players that will be dead by end of replay if (!player.getDeadBeforeSave()) { server.allTellDidSplit(parentLegion, childLegion, turn, false); } } else if (eventName.equals("Merge")) { String splitoffId = el.getAttributeValue("splitoffId"); String survivorId = el.getAttributeValue("survivorId"); String turnString = el.getAttributeValue("turn"); int turn = Integer.parseInt(turnString); LegionServerSide splitoff = game.getLegionByMarkerId(splitoffId); LegionServerSide survivor = game.getLegionByMarkerId(survivorId); // Skip for players that will be dead by end of replay if (!survivor.getPlayer().getDeadBeforeSave()) { server.undidSplit(splitoff, survivor, false, turn); } // Add them back to parent: while (splitoff.getHeight() > 0) { CreatureType type = splitoff.removeCreature(0, false, false); survivor.addCreature(type, false); } splitoff.remove(false, false); } else if (eventName.equals("AddCreature")) { String markerId = el.getAttributeValue("markerId"); String creatureName = el.getAttributeValue("creatureName"); // TODO Now we get the reason from history element - does this // change effect/break anything? // String reason = "<unknown>"; LOGGER.finer("Adding creature '" + creatureName + "' to legion with markerId '" + markerId + "', reason '" + reason + "'"); LegionServerSide legion = game.getLegionByMarkerId(markerId); CreatureType creatureType = game.getVariant().getCreatureByName( creatureName); legion.addCreature(creatureType, false); // Skip for players that will be dead by end of replay if (!legion.getPlayer().getDeadBeforeSave()) { server.allTellAddCreature(new AddCreatureAction(legion, creatureType), false, reason); } LOGGER... [truncated message content] |
|
From: SourceForge.net <no...@so...> - 2011-02-10 20:27:49
|
Bugs item #3177305, was opened at 2011-02-10 14:40 Message generated for change (Comment added) made by cleka You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101939&aid=3177305&group_id=1939 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: GUI Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Nobody/Anonymous (nobody) Assigned to: Clemens Katzer (cleka) Summary: Can not pick color to start game Initial Comment: Recently tried to play this game. I downloaded both the java version and the zip file. Both seem to start up just fine. The board will appear and another small window with choose a color pops up. I can not click on any color. I've tried pressing the letters that correspond to the colors. I've tried alt and ctrl combinations. Nothing works. I have to force the program to quit. Ideas? ---------------------------------------------------------------------- >Comment By: Clemens Katzer (cleka) Date: 2011-02-10 22:27 Message: NOTE, from the Java console log you should be able to copy paste! (mark with mouse and Ctrl-C or right click -> copy.) Only from that Colossus own "About" window you can't copy paste. Not sure whether that affinity helps; Colossus is "multithreaded", so if there is more than one core existing it might still use a 2nd. (affinity to me means merely, it would _preferrably_ run on that core). My suspicion is it is some kind of deadlock, caused by the way how those dialogs are called: "synchronous" , and in the "Event Dispatcher thread". That it happens randomly is much more "reasonable" than that some dialogs lock and some not. Such random misbehaviors we had earlier. They were fixed, but merely "somehow" and "when it happened", not systematically "rewrite everything to be thread-safe by design". Can you try the following: Run it from commandline. If possible, make the commandline window as big as possible, like window size (field 3 +4) width 150 height 50, screen buffer size (1+2 fields) 150 and 3000.) (to do so, on the cmdline window, click the smal C:\ in top LEFT corner, Properties). When it looks, make the cmdline box the active window and press Ctrl-Break (bottom left and top right keys of the keyboard together ;-)) Lot of glibberish would be printed to screen. Same top left icon, Edit => Select all ; copy (ctrl-c or from same menu copy). Send me what's there (or post it here). That's the "which thread is doing what at the moment" summary. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 22:10 Message: yes I was able to limit the program running on one processer. Or at least I told it to set its affinity to Core 0 from the processes. It still locked up. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 22:08 Message: I did some further testing... it will actually lock up randomly still. Doesn't matter if I can recruit one or two. :/ ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 22:06 Message: Ran java -version from command window: java version "1.6.0_17" Java(TM) SE Runtime Environment (build 1.6.0_17-b04) Java HotSpot(TM) Client VM (build 14.3-b01, mixed mode) I figured out how to get into the Java Options. Logging was turned off. So now I have a Java Console window when the program opens. So I tried a game, and it got stuck after 2nd time I tried to add a recruit. Btw, I notice it seems to do it when I can choose more than one recruit. Here is the last few lines of the log: (man... this is a lot of typing and I'm not sure it is really showing any errors. It just shows the last step before it "froze". INFO: Legion Gr09 (Lobster) in Tower hex 600 moves to Jungle hex 135 entering on RIGHT Feb 10, 2011 2:00:47 PM net.sf.colossus.server.GameServerSide$GamePhaseAdvancer advancePhaseInternal INFO:Phase advances to Muster Feb 10, 2011 2:00:49 PM net.sf.colossus.server.LegionServerSide addCreature INFO: Added Ceentaur -now there are 20 left. Feb 10, 2011 2:00:49 PM net.sf.colossus.server.GameServerSide doRecruit INFO: Legion Gr05 in Woods hex 39 recruits Centaur with 1 Centaur ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 21:37 Message: > It is a quad core system. hm. That might be part of the reason. I have some wild guess what it could be... Can you tell me exact java version? Help => About tells it. It tells also Log directory, there would be a file Colossus0.log. (The *0,log is always the newest; if new starts, it renames 1 to 2, 0 to 1nd creates new 0.log file). Sorry you have to type the stuff from Help => About, no copy paste. Or make a screenshot if you know how. If you wish you can also send it to me via mail (my SF username, i.e. the "cleka", then the magic a-like character, then users.sourceforge.net . Can you tune your system to use one CPU only? ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 21:15 Message: We were at a party and someone brought the board game Titan over. It confused the heck out of us (never even made it around once) but it seemed interesting. I did a search and found you making an app for it. So I thought I'd try it out. I am definitely brand new to Titan, so I expect to actually be the only player on here that gets defeated by your "dumb" AI. It is a quad core system. No I can not close the the dialog box with the small "X". In fact I can't do anything except shut it down. I selected Auto Pick Recruiters... and now I think it hangs up on actual recruiting now. It appears random too. Sometimes I can recruit a whole stack (7) without "locking up" and other times it will do it after the first recruit. (btw... sometimes I can't move a stack. That just a rule I'm not aware of?) ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:50 Message: Do you happen to know, do you have more than one CPU or CPU core? ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:43 Message: BTW, are you "well familiar with Titan, just new to use Colossus, or need to learn also "how game works, rules, strategy, etc." first? Once you are familar with the game and the usage, you could even try the public game server (by clicking the "WebClient" button), where you could find other "real people" to play against. (in contrast to the AI ("Artificial Intelligence") i.e. Robot players... However to notice is, people are usually online in afternoon/evening for US time. At other time you might log in there and be alone 30 or 60 mins before any other drop by. However, that's anyway more recommded only a) it does not hang for you any more and b) once you are "fluent" in playing. It's annoying for others when you need, let's say, 1.5 minutes for each individual move, split, recruit etc.... => Practicing to get faster better with AI players.They are all in all rather dump, but for first few weeks ok. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:35 Message: okay (or not okay), but that's something. In worst case I have to make you a special version which prints something to screen for every line of code before and around where it calls that "Pick Recruiter" dialog :)) That's what I meant, you might run into a "block" somewhat later with some other dialog. But the recruit dialog itself worked?? Strange; they are very similarly programmed. Some more "smalltalk" :o) > Made me green in fact. > I guess I can always play green. :p :) You can try: Window => Preferences => "Color" tab. Click on "Select" and choose another color. Next time you START a game it would choose that color for you automatically. (all those "Autoplay" options do certain things for you. So in fact you could enable "Auto Pick Recruiter", since that one is rather unimportant, as long as you can choose an actual Recruit. (so we can circumvent THIS cliff for now). But there might be other dialogs later to block you as well. And/or, in fact that's an interesting thing to try, whether that color chooser dialog would work??? If not, can you close it with the "x" shaped icon in upper right corner? (the initial color pick dialog CAN'T be closed that way, or rather, if one does, it reappears immediately.) So, sure, I'd like to continue troubleshoot this. Let's try that above for now, have to bring kids to bed now. -Cle. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 20:17 Message: So I've been running through this... moving, recruiting, etc... then I came to a point where it won't let me pick again. :/ Says: kevinnew: Pick Recruiter in Brush hex17 There is more than one way you can recruit this. Current content of legion Gr05: There is a Titan, Cyclops, Gargoyle, Gargoyle, Centaur, Centaur Pick the creature type you want to reveal: There is a Cyclops, Gargoyle I can't pick anything. Tried clicking on it numerous times. Nothing will select and it is stuck on this dialog box. Not sure why this happening... but thank you for sticking it out with me. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 20:12 Message: You are correct. I typed the name in, it found it and ran fine. Well.. I can play now. yay! ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 20:08 Message: K so, I opened the default kevin.cfg and added those lines to it: Auto\ pick\ markers=true Auto\ pick\ color=true Favorite\ colors=Green And it worked. The game started. Made me green in fact. So far so good to, I was able to split a stack. Move the unit. Recruit. And watched the computer take it's move as well. So not sure why it wasn't working but it is now. Want to continue to troubleshoot? I guess I can always play green. :p ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:06 Message: No, you cannot "pick" the name kevinnew - it does not offer all "names that may exist". You choose the name on "Players" tab, On left side, Choose HUman, on right side type the name. 2nd Line, choose e.g. "SimpleAI", it fills right side with <byColor> or something, thats ok, Type there in first line the name kevinnew, and when game starts, it goes looking for a file Colossus-kewvinnew.cfg [and if it wouldn't exist, create it, sooner or later, after GUI / preferences changes]. Now we pre-create that file, so that it skips the color picking dialog because it would find a value to say "auto pick" from the file. -Cle. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 19:59 Message: btw, I did try and run the Colossus.jnlp stand alone and brings up the welcome screen, I hit ok, and the Game setup screen appears. I still can't choose newkevin and when I run it, once again I can not pick any of the colors. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 19:57 Message: I'll start from the beginning: • I open a folder I extracted all the files to from the .zip • I double click on run.bat A cmd window pops up with: C:\Documents and Settings\kevin\Desktop\collossus>cd "c:\Documents and Settings\kevin\Desktop\collossus\" C:\Documents and Settings\kevin\Desktop\collossus>java -Djava.util.logging.config.file=logging.properties -XMx256M -jar Colossus.jar Then what looks like the main program appears. It is the game setup screen. I make player one a human player and choose Kevin as the type. I make the 2nd player a SimpleAI and choose <By color> for the type. I leave everything else as is. (btw the top says Running Colossus Version 0.12.0-beta1 (revision 4970) on etc...) • I pick New game. The game appears to start, I can see the grid in the background with all the hills, deserts, etc. A small box with Pick a Color appears. I can move this box around. But I can not pick a color. I've tried clicking on every single one. I've tried pressing G, e, o, etc. I've tried Ctrl/Alt combinations, nothing. I can not close it either. I have to force it to shutdown. In Task Manager it shows that it is still running... so I don't THINK it is locked up. I do NOT see any other windows anywhere that I might need to click. I've even tried Alt+Tab and Ctrl+Tab to check. • I went ahead and did a search for the .colossus folder. I found it. It has 5 files in it. Colossus-netclient.cfg Colossus-red.cfg Colossus-server.cfg Colossus-kevin.cfg Colossus-kevin1.cfg • I went ahead and created a new .cfg file. I named it Colossus-kevinnew.cfg. I added these lines to it: Auto\ pick\ markers=true Auto\ pick\ color=true Favorite\ colors=Green Interestingly here, when I started the program, I could not choose kevinnew. I could only still see kevin. I searched my entire computer to see if the .cfg files might also be somewhere else but I could only find them under \\documents and settings\kevin\desktop\collossus • Ok so I tried your command prompt idea. I even ran the command from within the path and I kept getting this error... Unable to access jarfile Colossus.jar I can't imagine it being a graphical error... the program still seems to be running fine, I just can't select any color. In Task Manager it doesn't say "not responding". So I will wait for your reply. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 19:06 Message: ok, XP with SP3 and Sun Java 6 ( 1.6.x ). All right, that should work. ( I may have in use SP2 but still). E.g. "Windows Vista" or "Windows 7" are more "exotic" for me. Sun Java is good also. Did you get the "Welcome to Release 0.12.0" dialog and click it away? (if not, it might have lurked around in the background hidden behind some other window and block the mouse/keyboard input or whatever ("modal dialog"). Should technically not happen/be possible, but one has seen stranger things happen.... The History.java is one of the source files, not relevant. > The only .cf files I could find are WebServer.cf, WebServer_unix.cf, > and WebServer_win.cf. Do you want me to add a line into one of these? No. They are part of the "sources" as well, in some sense. Once started, Colossus will create a directory ".colossus" (and 2 files in it) "somewhere on your computer" - in what it considers to be "your home directory". What that exactly is, might vary... The home directory is under Windows _often_ something like: C:\Documents and Settings\Mike if you logged in to the computer with username Mike. Often you get there with right-click on Start button => Explore => opens an explorer e.g. to C:\Documents and Settings\katzer\Start Menu for me as user katzer. So katzer would be my home dir. However on my computer it's configured differently, so my home directory is D:\katzer You can take an explorer (the Start => right-click => Explore thing) and type in the "path"/adress line in the top "%HOME%" and press return. (you may need to make it visible first with View => Toolbars => Address bar ). Inside there should be .colossus. Once you found that we are much further :) (normally, once masterboardboard is open, Help => About would tell the location but you don't even get there yet :-/ ) Inside there will be eventually several .cfg files (and perhaps a "saves" directory). Directory of D:\katzer\.colossus 07.02.2011 10:06 <DIR> . 07.02.2011 10:06 <DIR> .. 07.02.2011 15:12 1 997 Colossus-clemens.cfg 08.02.2011 19:49 4 425 Colossus-katzer.cfg 08.02.2011 19:49 2 069 Colossus-katzer1.cfg 28.07.2010 17:18 276 Colossus-netclient.cfg 08.02.2011 19:49 900 Colossus-server.cfg 07.02.2011 15:12 2 059 Colossus-test1.cfg 07.02.2011 22:00 586 Colossus-webclient.cfg 07.02.2011 10:56 <DIR> saves 7 File(s) 12 312 bytes 3 Dir(s) 21 313 040 384 bytes free D:\katzer\.colossus> You can ignore the "-server", -webclient and -netclient files for now - they are "internal". -katzer and -clemens etc. are "client preferences" files. Like, I played once a game as clemens, and when changed preferences such as the various auto-<do something>, position and size of windows etc., Colossus would save those to a file with that name. (some other, like Variant, type and names of players, Options in Startup dialog, are stored to the Colossus-server.cfg file). Usually when you get the Game Setup dialog (where you choose variant, count and type of players etc), first of them you make "Human" and name is initialized with the name you are logged on to the computer. Thus created with some text editor (notepad, if necessary), a textfile named Colossus-Mike.cfg (replace your name, of course). (if necessaary, right click in the right side of explorer, where the files are shown => New => Text Document => then there exists a file "New File.txt" (or similar). Click it, or F2 on it, change name to above. Put into that file the following three lines: Auto\ pick\ markers=true Auto\ pick\ color=true Favorite\ colors=Green Note the "backslash" ( \ ) in front of the space. Now if you start a game with your player name set to "Mike" the Pick... dialogs should not appear. So question is, what will get stuck then :) The other interesting thing to try is, if you can run from commandline (by typing that command, which will make the java command shown): java -Djava.util.logging.config.file=file=logging.properties -Xmx256M -jar Colossus.jar While Colossus runs, eventually happening warnings etc. would be printed to that Command window. But if it's a total "Graphics stuff somehow freezes" (like it sounds, that it does not accept click or key on any of the colors) ... hm. Tricky. Might be no warning/exception, just the graphics thread (EDT, Event Dispatcher Thread, techno babble... ;-) hangs. Let's see so far, how far we get with above. If we get that, I've already some ideas how to proceed. BR, Clemens ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 17:15 Message: Not sure if this will help... I found a file called History.java under my recent documents. It's pretty lengthy but it is listed below: package net.sf.colossus.server; import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import net.sf.colossus.common.Constants; import net.sf.colossus.game.Creature; import net.sf.colossus.game.EntrySide; import net.sf.colossus.game.Legion; import net.sf.colossus.game.Player; import net.sf.colossus.game.actions.AddCreatureAction; import net.sf.colossus.game.actions.Recruitment; import net.sf.colossus.util.Glob; import net.sf.colossus.variant.CreatureType; import net.sf.colossus.variant.MasterHex; import org.jdom.Element; /** * Stores game history as XML. * * @author David Ripton */ public class History { private static final Logger LOGGER = Logger.getLogger(History.class .getName()); /** * History: events that happened before last commit point */ private final Element root; /** * History elements/events that happened since the last commit/"snapshot". */ private final List<Element> recentEvents = new LinkedList<Element>(); /** * Set to true during the processing of {@link #fireEventsFromXML(Server)} * to avoid triggering events we just restored again. */ private boolean loading = false; /** * */ private final Element loadedRedoLog; private boolean isRedo = false; /** * Stores the surviving legions (this variable is not needed any more) * * While the history should contain all information to reproduce the game * state, the last set of legions is currently still loaded upfront since * they contain the battle-specific information. This collides with * replaying the game from history... * Now, since 08/2008, they are not stored as "survivorlegions" any more. * Instead, they are backed up internally (done inside PlayerServerSide), * all the history is replayed. This creates proper split prediction data * in all clients. After that, backup data is compared with result of * replay. * E.g. Legion count, their content, players eliminated must be in sync. * Then the replayed ones are discarded and the backedup ones restored * - which have the right legion state (moved, donor, summoned, ...) * * TODO align the history replay more with the original gameplay so we * don't need this anymore; * 08/2008:==> this is now to some part done. Still replay * events could be closer to original events (split, summon, * acquire, teleport, ...) , not just the "result" of that * event (reveal,add,remove effects). * * TODO instead: model the actual events instead of just result, * or at least add relevant info to history elements, so that all * replayed events carry all needed data so that they could also be * processed by event viewer (currently EV does not process anything * during replay). */ public History() { root = new Element("History"); // Dummy: loadedRedoLog = new Element("LoadedRedoLog"); } /** * Constructor used by "LoadGame" */ public History(Element loadGameRoot) { // Get the history elements and store them to "root" root = (Element)loadGameRoot.getChild("History").clone(); // Get the redo log content loadedRedoLog = (Element)loadGameRoot.getChild("Redo").clone(); } /** * All events before last commit */ Element getCopy() { return (Element)root.clone(); } /** * Reached a commit point: append all recent events to the history, * clear list of recent events; caller should do this together with creating * the next snapshot. */ void flushRecentToRoot() { for (Element el : recentEvents) { el.detach(); String name = el.getName(); // TODO later, when this are proper events (not XML elements), // ask rather from the Event whether it belongs copied to // history or not. // TODO At some point in future, put also those Move events // that reveal something to history, and make either the history // replay only send the relevant reveal messages, or make the // Clients during replay (but not redo part) ignore the "move" // and just process the revealing part. // Preferrably the latter, so that proper events show up in the // EventViewer. if (name.equals("Move") || name.equals("UndoMove")) { LOGGER.finest("Flush Redo to History: skipping " + name); } else if (name.equals("Recruit") || name.equals("UndoRecruit")) { // Skipping for now, because there are also the addCreature, // removeCreature and reveal Events still in history. // TODO make the Recruit/UndoRecruit history events during // replay properly, get rid of the "side effect" type of // entries in save game. LOGGER.finest("Flush Redo to History: skipping " + name); } else { root.addContent(el); } } recentEvents.clear(); } /** * @return A Redo Element, containing all events since last commit * i.e. which need to be REDOne on top of last commit point/snapshot */ Element getNewRedoLogElement() { Element redoLogElement = new Element("Redo"); for (Element el : recentEvents) { el.detach(); redoLogElement.addContent(el); } return redoLogElement; } /** * TODO reconsider name * TODO decide if we should move it all into one big handleEvent(GameEvent) method */ void addCreatureEvent(AddCreatureAction event, int turn, String reason) { if (loading) { return; } Element element = new Element("AddCreature"); element.setAttribute("markerId", event.getLegion().getMarkerId()); element.setAttribute("creatureName", event.getAddedCreatureType() .getName()); element.setAttribute("turn", "" + turn); element.setAttribute("reason", reason); recentEvents.add(element); } void removeCreatureEvent(Legion legion, CreatureType creature, int turn, String reason) { if (loading) { return; } Element event = new Element("RemoveCreature"); event.setAttribute("markerId", legion.getMarkerId()); event.setAttribute("creatureName", creature.getName()); event.setAttribute("turn", "" + turn); event.setAttribute("reason", reason); recentEvents.add(event); } void splitEvent(Legion parent, Legion child, List<CreatureType> splitoffs, int turn) { if (loading) { return; } Element event = new Element("Split"); event.setAttribute("parentId", parent.getMarkerId()); event.setAttribute("childId", child.getMarkerId()); event.setAttribute("turn", "" + turn); Element creatures = new Element("splitoffs"); event.addContent(creatures); for (CreatureType creatureType : splitoffs) { Element cr = new Element("creature"); cr.addContent(creatureType.getName()); creatures.addContent(cr); } recentEvents.add(event); } void mergeEvent(String splitoffId, String survivorId, int turn) { if (loading) { return; } Element event = new Element("Merge"); event.setAttribute("splitoffId", splitoffId); event.setAttribute("survivorId", survivorId); event.setAttribute("turn", "" + turn); recentEvents.add(event); } void revealEvent(boolean allPlayers, List<Player> players, Legion legion, List<CreatureType> creatures, int turn, String reason) { if (loading) { return; } if (creatures.isEmpty()) { // this happens e.g. when in final battle (titan vs. titan) // angel was called out of legion which was then empty, // and in the final updateAllLegionContents there is then // this empty legion... // TODO if this case can happen in a regular game no warning // should be logged LOGGER.log(Level.WARNING, "Called revealEvent(" + allPlayers + ", " + (players != null ? players.toString() : "-null-") + ", " + legion + ", " + creatures.toString() + ", " + turn + ") with empty creatureNames"); return; } Element event = new Element("Reveal"); event.setAttribute("markerId", legion.getMarkerId()); event.setAttribute("allPlayers", "" + allPlayers); event.setAttribute("turn", "" + turn); event.setAttribute("reason", reason); if (!allPlayers) { Element viewers = new Element("viewers"); event.addContent(viewers); Iterator<Player> it = players.iterator(); while (it.hasNext()) { String playerName = it.next().getName(); Element viewer = new Element("viewer"); viewer.addContent(playerName); viewers.addContent(viewer); } } Element creaturesElem = new Element("creatures"); event.addContent(creaturesElem); for (CreatureType creatureType : creatures) { Element creatureElem = new Element("creature"); creatureElem.addContent(creatureType.getName()); creaturesElem.addContent(creatureElem); } recentEvents.add(event); } void playerElimEvent(Player player, Player slayer, int turn) { if (loading) { return; } Element event = new Element("PlayerElim"); event.setAttribute("name", player.getName()); if (slayer != null) { event.setAttribute("slayer", slayer.getName()); } event.setAttribute("turn", "" + turn); recentEvents.add(event); } void movementRollEvent(Player player, int roll) { if (loading) { return; } Element event = new Element("MovementRoll"); event.setAttribute("playerName", player.getName()); event.setAttribute("roll", "" + roll); recentEvents.add(event); } void legionMoveEvent(Legion legion, MasterHex newHex, EntrySide entrySide, boolean teleport, CreatureType lord) { if (loading) { return; } Element event = new Element("Move"); event.setAttribute("markerId", legion.getMarkerId()); event.setAttribute("newHex", newHex.getLabel()); event.setAttribute("entrySide", entrySide.getLabel()); event.setAttribute("teleport", "" + teleport); String creNameOrTextNull = lord == null ? "null" : lord.getName(); event.setAttribute("revealedLord", creNameOrTextNull); recentEvents.add(event); } void legionUndoMoveEvent(Legion legion) { if (loading) { return; } Element event = new Element("UndoMove"); event.setAttribute("markerId", legion.getMarkerId()); recentEvents.add(event); } void recruitEvent(Legion legion, CreatureType recruit, CreatureType recruiter) { if (loading) { return; } Element event = new Element("Recruit"); event.setAttribute("markerId", legion.getMarkerId()); event.setAttribute("recruit", recruit.getName()); event.setAttribute("recruiter", recruiter == null ? "null" : recruiter .getName()); recentEvents.add(event); } void undoRecruitEvent(Legion legion) { if (loading) { return; } Element event = new Element("UndoRecruit"); event.setAttribute("markerId", legion.getMarkerId()); recentEvents.add(event); } /** * Fire all events from redoLog. * Elements from RedoLog are processed one by one and the corresponding * method is called on the Server object, pretty much as if a * ClientHandler would call it when receiving such a request from Client. * Note that in some cases overriding the processingCH is necessary * (because technically, this all currently happens while still the * connecting of last joining player is processed, so processingCH is * set to his ClientHandler). * * Note that "loading" is not set to true, so they DO GET ADDED to the * recentEvents list again. * * @param server The server on which to call all the actions to be redone */ void processRedoLog(Server server) { assert loadedRedoLog != null : "Loaded RedoLog should always " + "have a JDOM root element as backing store"; LOGGER.info("History: Start processing redo log"); isRedo = true; for (Object obj : loadedRedoLog.getChildren()) { Element el = (Element)obj; LOGGER.info("processing redo event " + el.getName()); fireEventFromElement(server, el); } isRedo = false; // TODO clear loadedRedoLog? LOGGER.info("Completed processing redo log"); } // unchecked conversions from JDOM @SuppressWarnings("unchecked") void fireEventsFromXML(Server server) { this.loading = true; assert root != null : "History should always have a " + " JDOM root element as backing store"; List<Element> kids = root.getChildren(); Iterator<Element> it = kids.iterator(); while (it.hasNext()) { Element el = it.next(); fireEventFromElement(server, el); } this.loading = false; } // unchecked conversions from JDOM @SuppressWarnings("unchecked") void fireEventFromElement(Server server, Element el) { GameServerSide game = server.getGame(); String eventName = el.getName(); String reasonPerhaps = el.getAttributeValue("reason"); String reason = (reasonPerhaps != null && !reasonPerhaps .equals("null")) ? reasonPerhaps : "<undefinedReason>"; if (eventName.equals("Reveal") && isRedo && reason.equals(Constants.reasonRecruiter)) { // Skip this because we redo the full recruit event // TODO LOGGER.finest("Skipping Reveal event (reason " + reason + ") during redo."); } else if (eventName.equals("AddCreature") && isRedo && reason.equals(Constants.reasonRecruited)) { // Skip this because we redo the full recruit event LOGGER.finest("Skipping AddCreature event (reason " + reason + ") during redo."); } else if (eventName.equals("RemoveCreature") && isRedo && reason.equals(Constants.reasonRecruited)) { // Skip this because we redo the full recruit event LOGGER.finest("Skipping RemoveCreature event (reason " + reason + ") during redo."); } else if (eventName.equals("Reveal")) { String allPlayers = el.getAttributeValue("allPlayers"); boolean all = allPlayers != null && allPlayers.equals("true"); String markerId = el.getAttributeValue("markerId"); List<String> playerNames = new ArrayList<String>(); Element viewEl = el.getChild("viewers"); int turn = Integer.parseInt(el.getAttributeValue("turn")); String playerName = null; if (viewEl != null) { List<Element> viewers = viewEl.getChildren(); Iterator<Element> it = viewers.iterator(); while (it.hasNext()) { Element viewer = it.next(); playerName = viewer.getTextNormalize(); playerNames.add(playerName); } } List<Element> creatureElements = el.getChild("creatures") .getChildren(); List<CreatureType> creatures = new ArrayList<CreatureType>(); for (Element creature : creatureElements) { String creatureName = creature.getTextNormalize(); creatures.add(game.getVariant() .getCreatureByName(creatureName)); } Player player = game.getPlayerByMarkerId(markerId); Legion legion; if (turn == 1 && player.getLegionByMarkerId(markerId) == null) { // there is no create event for the startup legions, // so we might need to create them for the reveal event legion = new LegionServerSide(markerId, null, player .getStartingTower(), player.getStartingTower(), player, game, creatures .toArray(new CreatureType[creatures.size()])); player.addLegion(legion); } else { legion = player.getLegionByMarkerId(markerId); } // TODO Now we get the reason from history element - does this // change effect/break anything? // String reason = "<unknown>"; if (((PlayerServerSide)player).getDeadBeforeSave()) { // Skip for players that will be dead by end of replay } else if (all) { server.allRevealCreatures(legion, creatures, reason); } else { server.oneRevealLegion(game.getPlayerByName(playerName), legion, creatures, reason); } } else if (eventName.equals("Split")) { String parentId = el.getAttributeValue("parentId"); String childId = el.getAttributeValue("childId"); String turnString = el.getAttributeValue("turn"); int turn = Integer.parseInt(turnString); List<String> creatureNames = new ArrayList<String>(); List<CreatureType> creatures = new ArrayList<CreatureType>(); List<Element> splitoffs = el.getChild("splitoffs").getChildren(); Iterator<Element> it = splitoffs.iterator(); while (it.hasNext()) { Element creature = it.next(); String creatureName = creature.getTextNormalize(); creatureNames.add(creatureName); creatures.add(game.getVariant() .getCreatureByName(creatureName)); } LegionServerSide parentLegion = game.getLegionByMarkerId(parentId); if (isRedo) { server.overrideProcessingCH(parentLegion.getPlayer()); server.doSplit(parentLegion, childId, creatures); server.overrideProcessingCH(parentLegion.getPlayer()); return; } // LegionServerSide.split(..) doesn't like us here since the parent // legion can't remove creatures (not there?) -- create child directly // instead PlayerServerSide player = parentLegion.getPlayer(); LegionServerSide childLegion; if (player.hasLegion(childId)) { childLegion = game.getLegionByMarkerId(childId); LOGGER.severe("During replay of history: child legion " + childId + " should not " + "exist yet (turn=" + turn + ")!!\n" + "Exists already with: " + Glob.glob(",", childLegion.getCreatureTypes()) + " but " + "should now be created with creatures: " + creatures); childLegion.remove(); } childLegion = new LegionServerSide(childId, null, parentLegion .getCurrentHex(), parentLegion.getCurrentHex(), player, game, creatures.toArray(new CreatureType[creatures.size()])); player.addLegion(childLegion); for (CreatureType creature : creatures) { parentLegion.removeCreature(creature, false, false); } // Skip for players that will be dead by end of replay if (!player.getDeadBeforeSave()) { server.allTellDidSplit(parentLegion, childLegion, turn, false); } } else if (eventName.equals("Merge")) { String splitoffId = el.getAttributeValue("splitoffId"); String survivorId = el.getAttributeValue("survivorId"); String turnString = el.getAttributeValue("turn"); int turn = Integer.parseInt(turnString); LegionServerSide splitoff = game.getLegionByMarkerId(splitoffId); LegionServerSide survivor = game.getLegionByMarkerId(survivorId); // Skip for players that will be dead by end of replay if (!survivor.getPlayer().getDeadBeforeSave()) { server.undidSplit(splitoff, survivor, false, turn); } // Add them back to parent: while (splitoff.getHeight() > 0) { CreatureType type = splitoff.removeCreature(0, false, false); survivor.addCreature(type, false); } splitoff.remove(false, false); } else if (eventName.equals("AddCreature")) { String markerId = el.getAttributeValue("markerId"); String creatureName = el.getAttributeValue("creatureName"); // TODO Now we get the reason from history element - does this // change effect/break anything? // String reason = "<unknown>"; LOGGER.finer("Adding creature '" + creatureName + "' to legion with markerId '" + markerId + "', reason '" + reason + "'"); LegionServerSide legion = game.getLegionByMarkerId(markerId); CreatureType creatureType = game.getVariant().getCreatureByName( creatureName); legion.addCreature(creatureType, false); // Skip for players that will be dead by end of replay if (!legion.getPlayer().getDeadBeforeSave()) { server.allTellAddCreature(new AddCreatureAction(legion, creatureType), false, reason); } LOGGER.finest("Legion '" + markerId + "' now contains " + legion.getCreatures()); } else if (eventName.equals("RemoveCreature")) { String markerId = el.getAttributeValue("markerId"); String creatureName = el.getAttributeValue("creatureName"); // TODO Now we get the reason from history element - does this // change effect/break anything? // String reason = "<unknown>"; LOGGER.finer("Removing creature '" + creatureName + "' from legion with markerId '" + markerId + "', reason '" + reason + "'"); LegionServerSide legion = game.getLegionByMarkerId(markerId); if (legion == null) { LOGGER.warning("removeCreature " + creatureName + " from legion " + markerId + ", legion is null"); return; } else { List<? extends Creature> cres = legion.getCreatures(); List<String> crenames = new ArrayList<String>(); for (Creature c : cres) { crenames.add(c.getName()); } } // don't use disbandIfEmpty parameter since that'll fire another history event CreatureType removedCritter = legion.removeCreature(game .getVariant().getCreatureByName(creatureName), false, false); // Skip for players that will be dead by end of replay // Skip if removedCritter is null => removeCreature did not find it, // so there is something wrong with the save game. No use to bother // all the clients with it. if (removedCritter != null && !legion.getPlayer().getDeadBeforeSave()) { server.allTellRemoveCreature(legion, removedCritter, false, reason); } LOGGER.finest("Legion '" + markerId + "' now contains " + legion.getCreatures()); if (legion.getHeight() == 0) { legion.remove(false, false); LOGGER.finer("Legion '" + markerId + "' removed"); } } else if (eventName.equals("PlayerElim")) { String playerName = el.getAttributeValue("name"); String slayerName = el.getAttributeValue("slayer"); Player player = game.getPlayerByName(playerName); Player slayer = game.getPlayerByNameIgnoreNull(slayerName); // Record the slayer and give him this player's legion markers. if (slayer != null) { ((PlayerServerSide)player).handleSlaying(slayer); } player.setDead(true); server.allUpdatePlayerInfo(); server.allTellPlayerElim(player, slayer, false); } else if (eventName.equals("MovementRoll")) { String playerName = el.getAttributeValue("playerName"); Player player = game.getPlayerByName(playerName); int roll = Integer.parseInt(el.getAttributeValue("roll")); ((PlayerServerSide)player).setMovementRoll(roll); game.movementRollEvent(player, roll); server.allTellMovementRoll(roll); } else if (eventName.equals("Move")) { String markerId = el.getAttributeValue("markerId"); String lordName = el.getAttributeValue("revealedLord"); String tele = el.getAttributeValue("teleport"); String newHexLabel = el.getAttributeValue("newHex"); String entrySideName = el.getAttributeValue("entrySide"); LegionServerSide legion = game.getLegionByMarkerId(markerId); CreatureType revealedLord = lordName.equals("null") ? null : game .getVariant().getCreatureByName(lordName); MasterHex newHex = server.getGame().getVariant().getMasterBoard() .getHexByLabel(newHexLabel); EntrySide entrySide = EntrySide.fromLabel(entrySideName); boolean teleport = tele != null && tele.equals("true"); LOGGER.finest("Legion Move redo event: \n" + " marker " + markerId + ", lordName " + revealedLord + " teleported " + teleport + " to hex " + newHex.getLabel() + " entrySide " + entrySide.toString()); server.overrideProcessingCH(legion.getPlayer()); server.doMove(legion, newHex, entrySide, teleport, revealedLord); server.restoreProcessingCH(); } else if (eventName.equals("UndoMove")) { String markerId = el.getAttributeValue("markerId"); LegionServerSide legion = game.getLegionByMarkerId(markerId); LOGGER.finest("Legion Undo Move redo event: \n" + " marker " + markerId); server.overrideProcessingCH(legion.getPlayer()); server.undoMove(legion); server.restoreProcessingCH(); } else if (eventName.equals("Recruit")) { String markerId = el.getAttributeValue("markerId"); String recruitName = el.getAttributeValue("recruit"); String recruiterName = el.getAttributeValue("recruiter"); LegionServerSide legion = game.getLegionByMarkerId(markerId); CreatureType recruit = game.getVariant().getCreatureByName( recruitName); CreatureType recruiter = recruiterName.equals("null") ? null : game.getVariant().getCreatureByName(recruiterName); LOGGER.finest("Recruit redo event: \n" + " marker " + markerId + " recruit " + recruit + " recruiter " + recruiter); server.overrideProcessingCH(legion.getPlayer()); server.doRecruit(new Recruitment(legion, recruit, recruiter)); server.restoreProcessingCH(); } else if (eventName.equals("UndoRecruit")) { String markerId = el.getAttributeValue("markerId"); LegionServerSide legion = game.getLegionByMarkerId(markerId); LOGGER .finest("UndoRecruit redo event: \n" + " marker " + markerId); server.overrideProcessingCH(legion.getPlayer()); server.undoRecruit(legion); server.restoreProcessingCH(); } else { LOGGER.warning("Unknown Redo element " + eventName); } } } ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 17:10 Message: Btw, it says Sun Java ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 16:20 Message: Ok, I'll try and answer as best I can... I'm not too sure how to get all of this but here goes: • I am running Windows XP Pro SP3. • When it first starts up it opens a dialog box for Java that says Java 6. • Sorry not sure about how to check the log. :/ • Commandline... is this what you are looking for? -- java -Djava.util.logging.config.file=file=logging.properties -Xmx256M -jar Colossus.jar • The only .cf files I could find are WebServer.cf, WebServer_unix.cf, and WebServer_win.cf. Do you want me to add a line into one of these? Thank you for your assistance. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 15:53 Message: Hm, yes, some more info is needed. For example, which OS and version (Linux, Win, Mac, ...), Which java (Sun, Openjdk, ...) and which version of it (1.5.x, 1.6.x, ...) do you use? Do you have access to the log / do you know how to configure Java Web Start logging? Or run it from commandline (DOS box, Terminal window, ...) with "start.sh" or "start.bat", than some warnings/errors/exceptions would be written to the commandline window. Sorry I was not able to answer so far, busy day; will try to come back to you today evening or tomorrow or weekend. Otherwise ping me again :) For first aid, you could put "auto pick color" and "marker" into the cf file and see whether anything else works, but I suspect any other GUI dialog might get stuck as well. I provide instruction to do that ASAP. Since I haven't heard of any such case before, I suspect it's rather a specific "OS + java version" problem than generic problem in Colossus, although I of course am interested to make it work whereever. BR, Clemens ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 14:42 Message: Do you need more information? Be happy to provide it. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101939&aid=3177305&group_id=1939 |
|
From: SourceForge.net <no...@so...> - 2011-02-10 20:10:53
|
Bugs item #3177305, was opened at 2011-02-10 12:40 Message generated for change (Comment added) made by nobody You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101939&aid=3177305&group_id=1939 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: GUI Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Nobody/Anonymous (nobody) Assigned to: Clemens Katzer (cleka) Summary: Can not pick color to start game Initial Comment: Recently tried to play this game. I downloaded both the java version and the zip file. Both seem to start up just fine. The board will appear and another small window with choose a color pops up. I can not click on any color. I've tried pressing the letters that correspond to the colors. I've tried alt and ctrl combinations. Nothing works. I have to force the program to quit. Ideas? ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 20:10 Message: yes I was able to limit the program running on one processer. Or at least I told it to set its affinity to Core 0 from the processes. It still locked up. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 20:08 Message: I did some further testing... it will actually lock up randomly still. Doesn't matter if I can recruit one or two. :/ ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 20:06 Message: Ran java -version from command window: java version "1.6.0_17" Java(TM) SE Runtime Environment (build 1.6.0_17-b04) Java HotSpot(TM) Client VM (build 14.3-b01, mixed mode) I figured out how to get into the Java Options. Logging was turned off. So now I have a Java Console window when the program opens. So I tried a game, and it got stuck after 2nd time I tried to add a recruit. Btw, I notice it seems to do it when I can choose more than one recruit. Here is the last few lines of the log: (man... this is a lot of typing and I'm not sure it is really showing any errors. It just shows the last step before it "froze". INFO: Legion Gr09 (Lobster) in Tower hex 600 moves to Jungle hex 135 entering on RIGHT Feb 10, 2011 2:00:47 PM net.sf.colossus.server.GameServerSide$GamePhaseAdvancer advancePhaseInternal INFO:Phase advances to Muster Feb 10, 2011 2:00:49 PM net.sf.colossus.server.LegionServerSide addCreature INFO: Added Ceentaur -now there are 20 left. Feb 10, 2011 2:00:49 PM net.sf.colossus.server.GameServerSide doRecruit INFO: Legion Gr05 in Woods hex 39 recruits Centaur with 1 Centaur ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 19:37 Message: > It is a quad core system. hm. That might be part of the reason. I have some wild guess what it could be... Can you tell me exact java version? Help => About tells it. It tells also Log directory, there would be a file Colossus0.log. (The *0,log is always the newest; if new starts, it renames 1 to 2, 0 to 1nd creates new 0.log file). Sorry you have to type the stuff from Help => About, no copy paste. Or make a screenshot if you know how. If you wish you can also send it to me via mail (my SF username, i.e. the "cleka", then the magic a-like character, then users.sourceforge.net . Can you tune your system to use one CPU only? ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 19:15 Message: We were at a party and someone brought the board game Titan over. It confused the heck out of us (never even made it around once) but it seemed interesting. I did a search and found you making an app for it. So I thought I'd try it out. I am definitely brand new to Titan, so I expect to actually be the only player on here that gets defeated by your "dumb" AI. It is a quad core system. No I can not close the the dialog box with the small "X". In fact I can't do anything except shut it down. I selected Auto Pick Recruiters... and now I think it hangs up on actual recruiting now. It appears random too. Sometimes I can recruit a whole stack (7) without "locking up" and other times it will do it after the first recruit. (btw... sometimes I can't move a stack. That just a rule I'm not aware of?) ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 18:50 Message: Do you happen to know, do you have more than one CPU or CPU core? ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 18:43 Message: BTW, are you "well familiar with Titan, just new to use Colossus, or need to learn also "how game works, rules, strategy, etc." first? Once you are familar with the game and the usage, you could even try the public game server (by clicking the "WebClient" button), where you could find other "real people" to play against. (in contrast to the AI ("Artificial Intelligence") i.e. Robot players... However to notice is, people are usually online in afternoon/evening for US time. At other time you might log in there and be alone 30 or 60 mins before any other drop by. However, that's anyway more recommded only a) it does not hang for you any more and b) once you are "fluent" in playing. It's annoying for others when you need, let's say, 1.5 minutes for each individual move, split, recruit etc.... => Practicing to get faster better with AI players.They are all in all rather dump, but for first few weeks ok. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 18:35 Message: okay (or not okay), but that's something. In worst case I have to make you a special version which prints something to screen for every line of code before and around where it calls that "Pick Recruiter" dialog :)) That's what I meant, you might run into a "block" somewhat later with some other dialog. But the recruit dialog itself worked?? Strange; they are very similarly programmed. Some more "smalltalk" :o) > Made me green in fact. > I guess I can always play green. :p :) You can try: Window => Preferences => "Color" tab. Click on "Select" and choose another color. Next time you START a game it would choose that color for you automatically. (all those "Autoplay" options do certain things for you. So in fact you could enable "Auto Pick Recruiter", since that one is rather unimportant, as long as you can choose an actual Recruit. (so we can circumvent THIS cliff for now). But there might be other dialogs later to block you as well. And/or, in fact that's an interesting thing to try, whether that color chooser dialog would work??? If not, can you close it with the "x" shaped icon in upper right corner? (the initial color pick dialog CAN'T be closed that way, or rather, if one does, it reappears immediately.) So, sure, I'd like to continue troubleshoot this. Let's try that above for now, have to bring kids to bed now. -Cle. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 18:17 Message: So I've been running through this... moving, recruiting, etc... then I came to a point where it won't let me pick again. :/ Says: kevinnew: Pick Recruiter in Brush hex17 There is more than one way you can recruit this. Current content of legion Gr05: There is a Titan, Cyclops, Gargoyle, Gargoyle, Centaur, Centaur Pick the creature type you want to reveal: There is a Cyclops, Gargoyle I can't pick anything. Tried clicking on it numerous times. Nothing will select and it is stuck on this dialog box. Not sure why this happening... but thank you for sticking it out with me. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 18:12 Message: You are correct. I typed the name in, it found it and ran fine. Well.. I can play now. yay! ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 18:08 Message: K so, I opened the default kevin.cfg and added those lines to it: Auto\ pick\ markers=true Auto\ pick\ color=true Favorite\ colors=Green And it worked. The game started. Made me green in fact. So far so good to, I was able to split a stack. Move the unit. Recruit. And watched the computer take it's move as well. So not sure why it wasn't working but it is now. Want to continue to troubleshoot? I guess I can always play green. :p ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 18:06 Message: No, you cannot "pick" the name kevinnew - it does not offer all "names that may exist". You choose the name on "Players" tab, On left side, Choose HUman, on right side type the name. 2nd Line, choose e.g. "SimpleAI", it fills right side with <byColor> or something, thats ok, Type there in first line the name kevinnew, and when game starts, it goes looking for a file Colossus-kewvinnew.cfg [and if it wouldn't exist, create it, sooner or later, after GUI / preferences changes]. Now we pre-create that file, so that it skips the color picking dialog because it would find a value to say "auto pick" from the file. -Cle. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 17:59 Message: btw, I did try and run the Colossus.jnlp stand alone and brings up the welcome screen, I hit ok, and the Game setup screen appears. I still can't choose newkevin and when I run it, once again I can not pick any of the colors. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 17:57 Message: I'll start from the beginning: • I open a folder I extracted all the files to from the .zip • I double click on run.bat A cmd window pops up with: C:\Documents and Settings\kevin\Desktop\collossus>cd "c:\Documents and Settings\kevin\Desktop\collossus\" C:\Documents and Settings\kevin\Desktop\collossus>java -Djava.util.logging.config.file=logging.properties -XMx256M -jar Colossus.jar Then what looks like the main program appears. It is the game setup screen. I make player one a human player and choose Kevin as the type. I make the 2nd player a SimpleAI and choose <By color> for the type. I leave everything else as is. (btw the top says Running Colossus Version 0.12.0-beta1 (revision 4970) on etc...) • I pick New game. The game appears to start, I can see the grid in the background with all the hills, deserts, etc. A small box with Pick a Color appears. I can move this box around. But I can not pick a color. I've tried clicking on every single one. I've tried pressing G, e, o, etc. I've tried Ctrl/Alt combinations, nothing. I can not close it either. I have to force it to shutdown. In Task Manager it shows that it is still running... so I don't THINK it is locked up. I do NOT see any other windows anywhere that I might need to click. I've even tried Alt+Tab and Ctrl+Tab to check. • I went ahead and did a search for the .colossus folder. I found it. It has 5 files in it. Colossus-netclient.cfg Colossus-red.cfg Colossus-server.cfg Colossus-kevin.cfg Colossus-kevin1.cfg • I went ahead and created a new .cfg file. I named it Colossus-kevinnew.cfg. I added these lines to it: Auto\ pick\ markers=true Auto\ pick\ color=true Favorite\ colors=Green Interestingly here, when I started the program, I could not choose kevinnew. I could only still see kevin. I searched my entire computer to see if the .cfg files might also be somewhere else but I could only find them under \\documents and settings\kevin\desktop\collossus • Ok so I tried your command prompt idea. I even ran the command from within the path and I kept getting this error... Unable to access jarfile Colossus.jar I can't imagine it being a graphical error... the program still seems to be running fine, I just can't select any color. In Task Manager it doesn't say "not responding". So I will wait for your reply. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 17:06 Message: ok, XP with SP3 and Sun Java 6 ( 1.6.x ). All right, that should work. ( I may have in use SP2 but still). E.g. "Windows Vista" or "Windows 7" are more "exotic" for me. Sun Java is good also. Did you get the "Welcome to Release 0.12.0" dialog and click it away? (if not, it might have lurked around in the background hidden behind some other window and block the mouse/keyboard input or whatever ("modal dialog"). Should technically not happen/be possible, but one has seen stranger things happen.... The History.java is one of the source files, not relevant. > The only .cf files I could find are WebServer.cf, WebServer_unix.cf, > and WebServer_win.cf. Do you want me to add a line into one of these? No. They are part of the "sources" as well, in some sense. Once started, Colossus will create a directory ".colossus" (and 2 files in it) "somewhere on your computer" - in what it considers to be "your home directory". What that exactly is, might vary... The home directory is under Windows _often_ something like: C:\Documents and Settings\Mike if you logged in to the computer with username Mike. Often you get there with right-click on Start button => Explore => opens an explorer e.g. to C:\Documents and Settings\katzer\Start Menu for me as user katzer. So katzer would be my home dir. However on my computer it's configured differently, so my home directory is D:\katzer You can take an explorer (the Start => right-click => Explore thing) and type in the "path"/adress line in the top "%HOME%" and press return. (you may need to make it visible first with View => Toolbars => Address bar ). Inside there should be .colossus. Once you found that we are much further :) (normally, once masterboardboard is open, Help => About would tell the location but you don't even get there yet :-/ ) Inside there will be eventually several .cfg files (and perhaps a "saves" directory). Directory of D:\katzer\.colossus 07.02.2011 10:06 <DIR> . 07.02.2011 10:06 <DIR> .. 07.02.2011 15:12 1 997 Colossus-clemens.cfg 08.02.2011 19:49 4 425 Colossus-katzer.cfg 08.02.2011 19:49 2 069 Colossus-katzer1.cfg 28.07.2010 17:18 276 Colossus-netclient.cfg 08.02.2011 19:49 900 Colossus-server.cfg 07.02.2011 15:12 2 059 Colossus-test1.cfg 07.02.2011 22:00 586 Colossus-webclient.cfg 07.02.2011 10:56 <DIR> saves 7 File(s) 12 312 bytes 3 Dir(s) 21 313 040 384 bytes free D:\katzer\.colossus> You can ignore the "-server", -webclient and -netclient files for now - they are "internal". -katzer and -clemens etc. are "client preferences" files. Like, I played once a game as clemens, and when changed preferences such as the various auto-<do something>, position and size of windows etc., Colossus would save those to a file with that name. (some other, like Variant, type and names of players, Options in Startup dialog, are stored to the Colossus-server.cfg file). Usually when you get the Game Setup dialog (where you choose variant, count and type of players etc), first of them you make "Human" and name is initialized with the name you are logged on to the computer. Thus created with some text editor (notepad, if necessary), a textfile named Colossus-Mike.cfg (replace your name, of course). (if necessaary, right click in the right side of explorer, where the files are shown => New => Text Document => then there exists a file "New File.txt" (or similar). Click it, or F2 on it, change name to above. Put into that file the following three lines: Auto\ pick\ markers=true Auto\ pick\ color=true Favorite\ colors=Green Note the "backslash" ( \ ) in front of the space. Now if you start a game with your player name set to "Mike" the Pick... dialogs should not appear. So question is, what will get stuck then :) The other interesting thing to try is, if you can run from commandline (by typing that command, which will make the java command shown): java -Djava.util.logging.config.file=file=logging.properties -Xmx256M -jar Colossus.jar While Colossus runs, eventually happening warnings etc. would be printed to that Command window. But if it's a total "Graphics stuff somehow freezes" (like it sounds, that it does not accept click or key on any of the colors) ... hm. Tricky. Might be no warning/exception, just the graphics thread (EDT, Event Dispatcher Thread, techno babble... ;-) hangs. Let's see so far, how far we get with above. If we get that, I've already some ideas how to proceed. BR, Clemens ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 15:15 Message: Not sure if this will help... I found a file called History.java under my recent documents. It's pretty lengthy but it is listed below: package net.sf.colossus.server; import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import net.sf.colossus.common.Constants; import net.sf.colossus.game.Creature; import net.sf.colossus.game.EntrySide; import net.sf.colossus.game.Legion; import net.sf.colossus.game.Player; import net.sf.colossus.game.actions.AddCreatureAction; import net.sf.colossus.game.actions.Recruitment; import net.sf.colossus.util.Glob; import net.sf.colossus.variant.CreatureType; import net.sf.colossus.variant.MasterHex; import org.jdom.Element; /** * Stores game history as XML. * * @author David Ripton */ public class History { private static final Logger LOGGER = Logger.getLogger(History.class .getName()); /** * History: events that happened before last commit point */ private final Element root; /** * History elements/events that happened since the last commit/"snapshot". */ private final List<Element> recentEvents = new LinkedList<Element>(); /** * Set to true during the processing of {@link #fireEventsFromXML(Server)} * to avoid triggering events we just restored again. */ private boolean loading = false; /** * */ private final Element loadedRedoLog; private boolean isRedo = false; /** * Stores the surviving legions (this variable is not needed any more) * * While the history should contain all information to reproduce the game * state, the last set of legions is currently still loaded upfront since * they contain the battle-specific information. This collides with * replaying the game from history... * Now, since 08/2008, they are not stored as "survivorlegions" any more. * Instead, they are backed up internally (done inside PlayerServerSide), * all the history is replayed. This creates proper split prediction data * in all clients. After that, backup data is compared with result of * replay. * E.g. Legion count, their content, players eliminated must be in sync. * Then the replayed ones are discarded and the backedup ones restored * - which have the right legion state (moved, donor, summoned, ...) * * TODO align the history replay more with the original gameplay so we * don't need this anymore; * 08/2008:==> this is now to some part done. Still replay * events could be closer to original events (split, summon, * acquire, teleport, ...) , not just the "result" of that * event (reveal,add,remove effects). * * TODO instead: model the actual events instead of just result, * or at least add relevant info to history elements, so that all * replayed events carry all needed data so that they could also be * processed by event viewer (currently EV does not process anything * during replay). */ public History() { root = new Element("History"); // Dummy: loadedRedoLog = new Element("LoadedRedoLog"); } /** * Constructor used by "LoadGame" */ public History(Element loadGameRoot) { // Get the history elements and store them to "root" root = (Element)loadGameRoot.getChild("History").clone(); // Get the redo log content loadedRedoLog = (Element)loadGameRoot.getChild("Redo").clone(); } /** * All events before last commit */ Element getCopy() { return (Element)root.clone(); } /** * Reached a commit point: append all recent events to the history, * clear list of recent events; caller should do this together with creating * the next snapshot. */ void flushRecentToRoot() { for (Element el : recentEvents) { el.detach(); String name = el.getName(); // TODO later, when this are proper events (not XML elements), // ask rather from the Event whether it belongs copied to // history or not. // TODO At some point in future, put also those Move events // that reveal something to history, and make either the history // replay only send the relevant reveal messages, or make the // Clients during replay (but not redo part) ignore the "move" // and just process the revealing part. // Preferrably the latter, so that proper events show up in the // EventViewer. if (name.equals("Move") || name.equals("UndoMove")) { LOGGER.finest("Flush Redo to History: skipping " + name); } else if (name.equals("Recruit") || name.equals("UndoRecruit")) { // Skipping for now, because there are also the addCreature, // removeCreature and reveal Events still in history. // TODO make the Recruit/UndoRecruit history events during // replay properly, get rid of the "side effect" type of // entries in save game. LOGGER.finest("Flush Redo to History: skipping " + name); } else { root.addContent(el); } } recentEvents.clear(); } /** * @return A Redo Element, containing all events since last commit * i.e. which need to be REDOne on top of last commit point/snapshot */ Element getNewRedoLogElement() { Element redoLogElement = new Element("Redo"); for (Element el : recentEvents) { el.detach(); redoLogElement.addContent(el); } return redoLogElement; } /** * TODO reconsider name * TODO decide if we should move it all into one big handleEvent(GameEvent) method */ void addCreatureEvent(AddCreatureAction event, int turn, String reason) { if (loading) { return; } Element element = new Element("AddCreature"); element.setAttribute("markerId", event.getLegion().getMarkerId()); element.setAttribute("creatureName", event.getAddedCreatureType() .getName()); element.setAttribute("turn", "" + turn); element.setAttribute("reason", reason); recentEvents.add(element); } void removeCreatureEvent(Legion legion, CreatureType creature, int turn, String reason) { if (loading) { return; } Element event = new Element("RemoveCreature"); event.setAttribute("markerId", legion.getMarkerId()); event.setAttribute("creatureName", creature.getName()); event.setAttribute("turn", "" + turn); event.setAttribute("reason", reason); recentEvents.add(event); } void splitEvent(Legion parent, Legion child, List<CreatureType> splitoffs, int turn) { if (loading) { return; } Element event = new Element("Split"); event.setAttribute("parentId", parent.getMarkerId()); event.setAttribute("childId", child.getMarkerId()); event.setAttribute("turn", "" + turn); Element creatures = new Element("splitoffs"); event.addContent(creatures); for (CreatureType creatureType : splitoffs) { Element cr = new Element("creature"); cr.addContent(creatureType.getName()); creatures.addContent(cr); } recentEvents.add(event); } void mergeEvent(String splitoffId, String survivorId, int turn) { if (loading) { return; } Element event = new Element("Merge"); event.setAttribute("splitoffId", splitoffId); event.setAttribute("survivorId", survivorId); event.setAttribute("turn", "" + turn); recentEvents.add(event); } void revealEvent(boolean allPlayers, List<Player> players, Legion legion, List<CreatureType> creatures, int turn, String reason) { if (loading) { return; } if (creatures.isEmpty()) { // this happens e.g. when in final battle (titan vs. titan) // angel was called out of legion which was then empty, // and in the final updateAllLegionContents there is then // this empty legion... // TODO if this case can happen in a regular game no warning // should be logged LOGGER.log(Level.WARNING, "Called revealEvent(" + allPlayers + ", " + (players != null ? players.toString() : "-null-") + ", " + legion + ", " + creatures.toString() + ", " + turn + ") with empty creatureNames"); return; } Element event = new Element("Reveal"); event.setAttribute("markerId", legion.getMarkerId()); event.setAttribute("allPlayers", "" + allPlayers); event.setAttribute("turn", "" + turn); event.setAttribute("reason", reason); if (!allPlayers) { Element viewers = new Element("viewers"); event.addContent(viewers); Iterator<Player> it = players.iterator(); while (it.hasNext()) { String playerName = it.next().getName(); Element viewer = new Element("viewer"); viewer.addContent(playerName); viewers.addContent(viewer); } } Element creaturesElem = new Element("creatures"); event.addContent(creaturesElem); for (CreatureType creatureType : creatures) { Element creatureElem = new Element("creature"); creatureElem.addContent(creatureType.getName()); creaturesElem.addContent(creatureElem); } recentEvents.add(event); } void playerElimEvent(Player player, Player slayer, int turn) { if (loading) { return; } Element event = new Element("PlayerElim"); event.setAttribute("name", player.getName()); if (slayer != null) { event.setAttribute("slayer", slayer.getName()); } event.setAttribute("turn", "" + turn); recentEvents.add(event); } void movementRollEvent(Player player, int roll) { if (loading) { return; } Element event = new Element("MovementRoll"); event.setAttribute("playerName", player.getName()); event.setAttribute("roll", "" + roll); recentEvents.add(event); } void legionMoveEvent(Legion legion, MasterHex newHex, EntrySide entrySide, boolean teleport, CreatureType lord) { if (loading) { return; } Element event = new Element("Move"); event.setAttribute("markerId", legion.getMarkerId()); event.setAttribute("newHex", newHex.getLabel()); event.setAttribute("entrySide", entrySide.getLabel()); event.setAttribute("teleport", "" + teleport); String creNameOrTextNull = lord == null ? "null" : lord.getName(); event.setAttribute("revealedLord", creNameOrTextNull); recentEvents.add(event); } void legionUndoMoveEvent(Legion legion) { if (loading) { return; } Element event = new Element("UndoMove"); event.setAttribute("markerId", legion.getMarkerId()); recentEvents.add(event); } void recruitEvent(Legion legion, CreatureType recruit, CreatureType recruiter) { if (loading) { return; } Element event = new Element("Recruit"); event.setAttribute("markerId", legion.getMarkerId()); event.setAttribute("recruit", recruit.getName()); event.setAttribute("recruiter", recruiter == null ? "null" : recruiter .getName()); recentEvents.add(event); } void undoRecruitEvent(Legion legion) { if (loading) { return; } Element event = new Element("UndoRecruit"); event.setAttribute("markerId", legion.getMarkerId()); recentEvents.add(event); } /** * Fire all events from redoLog. * Elements from RedoLog are processed one by one and the corresponding * method is called on the Server object, pretty much as if a * ClientHandler would call it when receiving such a request from Client. * Note that in some cases overriding the processingCH is necessary * (because technically, this all currently happens while still the * connecting of last joining player is processed, so processingCH is * set to his ClientHandler). * * Note that "loading" is not set to true, so they DO GET ADDED to the * recentEvents list again. * * @param server The server on which to call all the actions to be redone */ void processRedoLog(Server server) { assert loadedRedoLog != null : "Loaded RedoLog should always " + "have a JDOM root element as backing store"; LOGGER.info("History: Start processing redo log"); isRedo = true; for (Object obj : loadedRedoLog.getChildren()) { Element el = (Element)obj; LOGGER.info("processing redo event " + el.getName()); fireEventFromElement(server, el); } isRedo = false; // TODO clear loadedRedoLog? LOGGER.info("Completed processing redo log"); } // unchecked conversions from JDOM @SuppressWarnings("unchecked") void fireEventsFromXML(Server server) { this.loading = true; assert root != null : "History should always have a " + " JDOM root element as backing store"; List<Element> kids = root.getChildren(); Iterator<Element> it = kids.iterator(); while (it.hasNext()) { Element el = it.next(); fireEventFromElement(server, el); } this.loading = false; } // unchecked conversions from JDOM @SuppressWarnings("unchecked") void fireEventFromElement(Server server, Element el) { GameServerSide game = server.getGame(); String eventName = el.getName(); String reasonPerhaps = el.getAttributeValue("reason"); String reason = (reasonPerhaps != null && !reasonPerhaps .equals("null")) ? reasonPerhaps : "<undefinedReason>"; if (eventName.equals("Reveal") && isRedo && reason.equals(Constants.reasonRecruiter)) { // Skip this because we redo the full recruit event // TODO LOGGER.finest("Skipping Reveal event (reason " + reason + ") during redo."); } else if (eventName.equals("AddCreature") && isRedo && reason.equals(Constants.reasonRecruited)) { // Skip this because we redo the full recruit event LOGGER.finest("Skipping AddCreature event (reason " + reason + ") during redo."); } else if (eventName.equals("RemoveCreature") && isRedo && reason.equals(Constants.reasonRecruited)) { // Skip this because we redo the full recruit event LOGGER.finest("Skipping RemoveCreature event (reason " + reason + ") during redo."); } else if (eventName.equals("Reveal")) { String allPlayers = el.getAttributeValue("allPlayers"); boolean all = allPlayers != null && allPlayers.equals("true"); String markerId = el.getAttributeValue("markerId"); List<String> playerNames = new ArrayList<String>(); Element viewEl = el.getChild("viewers"); int turn = Integer.parseInt(el.getAttributeValue("turn")); String playerName = null; if (viewEl != null) { List<Element> viewers = viewEl.getChildren(); Iterator<Element> it = viewers.iterator(); while (it.hasNext()) { Element viewer = it.next(); playerName = viewer.getTextNormalize(); playerNames.add(playerName); } } List<Element> creatureElements = el.getChild("creatures") .getChildren(); List<CreatureType> creatures = new ArrayList<CreatureType>(); for (Element creature : creatureElements) { String creatureName = creature.getTextNormalize(); creatures.add(game.getVariant() .getCreatureByName(creatureName)); } Player player = game.getPlayerByMarkerId(markerId); Legion legion; if (turn == 1 && player.getLegionByMarkerId(markerId) == null) { // there is no create event for the startup legions, // so we might need to create them for the reveal event legion = new LegionServerSide(markerId, null, player .getStartingTower(), player.getStartingTower(), player, game, creatures .toArray(new CreatureType[creatures.size()])); player.addLegion(legion); } else { legion = player.getLegionByMarkerId(markerId); } // TODO Now we get the reason from history element - does this // change effect/break anything? // String reason = "<unknown>"; if (((PlayerServerSide)player).getDeadBeforeSave()) { // Skip for players that will be dead by end of replay } else if (all) { server.allRevealCreatures(legion, creatures, reason); } else { server.oneRevealLegion(game.getPlayerByName(playerName), legion, creatures, reason); } } else if (eventName.equals("Split")) { String parentId = el.getAttributeValue("parentId"); String childId = el.getAttributeValue("childId"); String turnString = el.getAttributeValue("turn"); int turn = Integer.parseInt(turnString); List<String> creatureNames = new ArrayList<String>(); List<CreatureType> creatures = new ArrayList<CreatureType>(); List<Element> splitoffs = el.getChild("splitoffs").getChildren(); Iterator<Element> it = splitoffs.iterator(); while (it.hasNext()) { Element creature = it.next(); String creatureName = creature.getTextNormalize(); creatureNames.add(creatureName); creatures.add(game.getVariant() .getCreatureByName(creatureName)); } LegionServerSide parentLegion = game.getLegionByMarkerId(parentId); if (isRedo) { server.overrideProcessingCH(parentLegion.getPlayer()); server.doSplit(parentLegion, childId, creatures); server.overrideProcessingCH(parentLegion.getPlayer()); return; } // LegionServerSide.split(..) doesn't like us here since the parent // legion can't remove creatures (not there?) -- create child directly // instead PlayerServerSide player = parentLegion.getPlayer(); LegionServerSide childLegion; if (player.hasLegion(childId)) { childLegion = game.getLegionByMarkerId(childId); LOGGER.severe("During replay of history: child legion " + childId + " should not " + "exist yet (turn=" + turn + ")!!\n" + "Exists already with: " + Glob.glob(",", childLegion.getCreatureTypes()) + " but " + "should now be created with creatures: " + creatures); childLegion.remove(); } childLegion = new LegionServerSide(childId, null, parentLegion .getCurrentHex(), parentLegion.getCurrentHex(), player, game, creatures.toArray(new CreatureType[creatures.size()])); player.addLegion(childLegion); for (CreatureType creature : creatures) { parentLegion.removeCreature(creature, false, false); } // Skip for players that will be dead by end of replay if (!player.getDeadBeforeSave()) { server.allTellDidSplit(parentLegion, childLegion, turn, false); } } else if (eventName.equals("Merge")) { String splitoffId = el.getAttributeValue("splitoffId"); String survivorId = el.getAttributeValue("survivorId"); String turnString = el.getAttributeValue("turn"); int turn = Integer.parseInt(turnString); LegionServerSide splitoff = game.getLegionByMarkerId(splitoffId); LegionServerSide survivor = game.getLegionByMarkerId(survivorId); // Skip for players that will be dead by end of replay if (!survivor.getPlayer().getDeadBeforeSave()) { server.undidSplit(splitoff, survivor, false, turn); } // Add them back to parent: while (splitoff.getHeight() > 0) { CreatureType type = splitoff.removeCreature(0, false, false); survivor.addCreature(type, false); } splitoff.remove(false, false); } else if (eventName.equals("AddCreature")) { String markerId = el.getAttributeValue("markerId"); String creatureName = el.getAttributeValue("creatureName"); // TODO Now we get the reason from history element - does this // change effect/break anything? // String reason = "<unknown>"; LOGGER.finer("Adding creature '" + creatureName + "' to legion with markerId '" + markerId + "', reason '" + reason + "'"); LegionServerSide legion = game.getLegionByMarkerId(markerId); CreatureType creatureType = game.getVariant().getCreatureByName( creatureName); legion.addCreature(creatureType, false); // Skip for players that will be dead by end of replay if (!legion.getPlayer().getDeadBeforeSave()) { server.allTellAddCreature(new AddCreatureAction(legion, creatureType), false, reason); } LOGGER.finest("Legion '" + markerId + "' now contains " + legion.getCreatures()); } else if (eventName.equals("RemoveCreature")) { String markerId = el.getAttributeValue("markerId"); String creatureName = el.getAttributeValue("creatureName"); // TODO Now we get the reason from history element - does this // change effect/break anything? // String reason = "<unknown>"; LOGGER.finer("Removing creature '" + creatureName + "' from legion with markerId '" + markerId + "', reason '" + reason + "'"); LegionServerSide legion = game.getLegionByMarkerId(markerId); if (legion == null) { LOGGER.warning("removeCreature " + creatureName + " from legion " + markerId + ", legion is null"); return; } else { List<? extends Creature> cres = legion.getCreatures(); List<String> crenames = new ArrayList<String>(); for (Creature c : cres) { crenames.add(c.getName()); } } // don't use disbandIfEmpty parameter since that'll fire another history event CreatureType removedCritter = legion.removeCreature(game .getVariant().getCreatureByName(creatureName), false, false); // Skip for players that will be dead by end of replay // Skip if removedCritter is null => removeCreature did not find it, // so there is something wrong with the save game. No use to bother // all the clients with it. if (removedCritter != null && !legion.getPlayer().getDeadBeforeSave()) { server.allTellRemoveCreature(legion, removedCritter, false, reason); } LOGGER.finest("Legion '" + markerId + "' now contains " + legion.getCreatures()); if (legion.getHeight() == 0) { legion.remove(false, false); LOGGER.finer("Legion '" + markerId + "' removed"); } } else if (eventName.equals("PlayerElim")) { String playerName = el.getAttributeValue("name"); String slayerName = el.getAttributeValue("slayer"); Player player = game.getPlayerByName(playerName); Player slayer = game.getPlayerByNameIgnoreNull(slayerName); // Record the slayer and give him this player's legion markers. if (slayer != null) { ((PlayerServerSide)player).handleSlaying(slayer); } player.setDead(true); server.allUpdatePlayerInfo(); server.allTellPlayerElim(player, slayer, false); } else if (eventName.equals("MovementRoll")) { String playerName = el.getAttributeValue("playerName"); Player player = game.getPlayerByName(playerName); int roll = Integer.parseInt(el.getAttributeValue("roll")); ((PlayerServerSide)player).setMovementRoll(roll); game.movementRollEvent(player, roll); server.allTellMovementRoll(roll); } else if (eventName.equals("Move")) { String markerId = el.getAttributeValue("markerId"); String lordName = el.getAttributeValue("revealedLord"); String tele = el.getAttributeValue("teleport"); String newHexLabel = el.getAttributeValue("newHex"); String entrySideName = el.getAttributeValue("entrySide"); LegionServerSide legion = game.getLegionByMarkerId(markerId); CreatureType revealedLord = lordName.equals("null") ? null : game .getVariant().getCreatureByName(lordName); MasterHex newHex = server.getGame().getVariant().getMasterBoard() .getHexByLabel(newHexLabel); EntrySide entrySide = EntrySide.fromLabel(entrySideName); boolean teleport = tele != null && tele.equals("true"); LOGGER.finest("Legion Move redo event: \n" + " marker " + markerId + ", lordName " + revealedLord + " teleported " + teleport + " to hex " + newHex.getLabel() + " entrySide " + entrySide.toString()); server.overrideProcessingCH(legion.getPlayer()); server.doMove(legion, newHex, entrySide, teleport, revealedLord); server.restoreProcessingCH(); } else if (eventName.equals("UndoMove")) { String markerId = el.getAttributeValue("markerId"); LegionServerSide legion = game.getLegionByMarkerId(markerId); LOGGER.finest("Legion Undo Move redo event: \n" + " marker " + markerId); server.overrideProcessingCH(legion.getPlayer()); server.undoMove(legion); server.restoreProcessingCH(); } else if (eventName.equals("Recruit")) { String markerId = el.getAttributeValue("markerId"); String recruitName = el.getAttributeValue("recruit"); String recruiterName = el.getAttributeValue("recruiter"); LegionServerSide legion = game.getLegionByMarkerId(markerId); CreatureType recruit = game.getVariant().getCreatureByName( recruitName); CreatureType recruiter = recruiterName.equals("null") ? null : game.getVariant().getCreatureByName(recruiterName); LOGGER.finest("Recruit redo event: \n" + " marker " + markerId + " recruit " + recruit + " recruiter " + recruiter); server.overrideProcessingCH(legion.getPlayer()); server.doRecruit(new Recruitment(legion, recruit, recruiter)); server.restoreProcessingCH(); } else if (eventName.equals("UndoRecruit")) { String markerId = el.getAttributeValue("markerId"); LegionServerSide legion = game.getLegionByMarkerId(markerId); LOGGER .finest("UndoRecruit redo event: \n" + " marker " + markerId); server.overrideProcessingCH(legion.getPlayer()); server.undoRecruit(legion); server.restoreProcessingCH(); } else { LOGGER.warning("Unknown Redo element " + eventName); } } } ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 15:10 Message: Btw, it says Sun Java ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 14:20 Message: Ok, I'll try and answer as best I can... I'm not too sure how to get all of this but here goes: • I am running Windows XP Pro SP3. • When it first starts up it opens a dialog box for Java that says Java 6. • Sorry not sure about how to check the log. :/ • Commandline... is this what you are looking for? -- java -Djava.util.logging.config.file=file=logging.properties -Xmx256M -jar Colossus.jar • The only .cf files I could find are WebServer.cf, WebServer_unix.cf, and WebServer_win.cf. Do you want me to add a line into one of these? Thank you for your assistance. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 13:53 Message: Hm, yes, some more info is needed. For example, which OS and version (Linux, Win, Mac, ...), Which java (Sun, Openjdk, ...) and which version of it (1.5.x, 1.6.x, ...) do you use? Do you have access to the log / do you know how to configure Java Web Start logging? Or run it from commandline (DOS box, Terminal window, ...) with "start.sh" or "start.bat", than some warnings/errors/exceptions would be written to the commandline window. Sorry I was not able to answer so far, busy day; will try to come back to you today evening or tomorrow or weekend. Otherwise ping me again :) For first aid, you could put "auto pick color" and "marker" into the cf file and see whether anything else works, but I suspect any other GUI dialog might get stuck as well. I provide instruction to do that ASAP. Since I haven't heard of any such case before, I suspect it's rather a specific "OS + java version" problem than generic problem in Colossus, although I of course am interested to make it work whereever. BR, Clemens ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 12:42 Message: Do you need more information? Be happy to provide it. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101939&aid=3177305&group_id=1939 |
|
From: SourceForge.net <no...@so...> - 2011-02-10 20:08:34
|
Bugs item #3177305, was opened at 2011-02-10 12:40 Message generated for change (Comment added) made by nobody You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101939&aid=3177305&group_id=1939 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: GUI Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Nobody/Anonymous (nobody) Assigned to: Clemens Katzer (cleka) Summary: Can not pick color to start game Initial Comment: Recently tried to play this game. I downloaded both the java version and the zip file. Both seem to start up just fine. The board will appear and another small window with choose a color pops up. I can not click on any color. I've tried pressing the letters that correspond to the colors. I've tried alt and ctrl combinations. Nothing works. I have to force the program to quit. Ideas? ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 20:08 Message: I did some further testing... it will actually lock up randomly still. Doesn't matter if I can recruit one or two. :/ ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 20:06 Message: Ran java -version from command window: java version "1.6.0_17" Java(TM) SE Runtime Environment (build 1.6.0_17-b04) Java HotSpot(TM) Client VM (build 14.3-b01, mixed mode) I figured out how to get into the Java Options. Logging was turned off. So now I have a Java Console window when the program opens. So I tried a game, and it got stuck after 2nd time I tried to add a recruit. Btw, I notice it seems to do it when I can choose more than one recruit. Here is the last few lines of the log: (man... this is a lot of typing and I'm not sure it is really showing any errors. It just shows the last step before it "froze". INFO: Legion Gr09 (Lobster) in Tower hex 600 moves to Jungle hex 135 entering on RIGHT Feb 10, 2011 2:00:47 PM net.sf.colossus.server.GameServerSide$GamePhaseAdvancer advancePhaseInternal INFO:Phase advances to Muster Feb 10, 2011 2:00:49 PM net.sf.colossus.server.LegionServerSide addCreature INFO: Added Ceentaur -now there are 20 left. Feb 10, 2011 2:00:49 PM net.sf.colossus.server.GameServerSide doRecruit INFO: Legion Gr05 in Woods hex 39 recruits Centaur with 1 Centaur ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 19:37 Message: > It is a quad core system. hm. That might be part of the reason. I have some wild guess what it could be... Can you tell me exact java version? Help => About tells it. It tells also Log directory, there would be a file Colossus0.log. (The *0,log is always the newest; if new starts, it renames 1 to 2, 0 to 1nd creates new 0.log file). Sorry you have to type the stuff from Help => About, no copy paste. Or make a screenshot if you know how. If you wish you can also send it to me via mail (my SF username, i.e. the "cleka", then the magic a-like character, then users.sourceforge.net . Can you tune your system to use one CPU only? ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 19:15 Message: We were at a party and someone brought the board game Titan over. It confused the heck out of us (never even made it around once) but it seemed interesting. I did a search and found you making an app for it. So I thought I'd try it out. I am definitely brand new to Titan, so I expect to actually be the only player on here that gets defeated by your "dumb" AI. It is a quad core system. No I can not close the the dialog box with the small "X". In fact I can't do anything except shut it down. I selected Auto Pick Recruiters... and now I think it hangs up on actual recruiting now. It appears random too. Sometimes I can recruit a whole stack (7) without "locking up" and other times it will do it after the first recruit. (btw... sometimes I can't move a stack. That just a rule I'm not aware of?) ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 18:50 Message: Do you happen to know, do you have more than one CPU or CPU core? ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 18:43 Message: BTW, are you "well familiar with Titan, just new to use Colossus, or need to learn also "how game works, rules, strategy, etc." first? Once you are familar with the game and the usage, you could even try the public game server (by clicking the "WebClient" button), where you could find other "real people" to play against. (in contrast to the AI ("Artificial Intelligence") i.e. Robot players... However to notice is, people are usually online in afternoon/evening for US time. At other time you might log in there and be alone 30 or 60 mins before any other drop by. However, that's anyway more recommded only a) it does not hang for you any more and b) once you are "fluent" in playing. It's annoying for others when you need, let's say, 1.5 minutes for each individual move, split, recruit etc.... => Practicing to get faster better with AI players.They are all in all rather dump, but for first few weeks ok. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 18:35 Message: okay (or not okay), but that's something. In worst case I have to make you a special version which prints something to screen for every line of code before and around where it calls that "Pick Recruiter" dialog :)) That's what I meant, you might run into a "block" somewhat later with some other dialog. But the recruit dialog itself worked?? Strange; they are very similarly programmed. Some more "smalltalk" :o) > Made me green in fact. > I guess I can always play green. :p :) You can try: Window => Preferences => "Color" tab. Click on "Select" and choose another color. Next time you START a game it would choose that color for you automatically. (all those "Autoplay" options do certain things for you. So in fact you could enable "Auto Pick Recruiter", since that one is rather unimportant, as long as you can choose an actual Recruit. (so we can circumvent THIS cliff for now). But there might be other dialogs later to block you as well. And/or, in fact that's an interesting thing to try, whether that color chooser dialog would work??? If not, can you close it with the "x" shaped icon in upper right corner? (the initial color pick dialog CAN'T be closed that way, or rather, if one does, it reappears immediately.) So, sure, I'd like to continue troubleshoot this. Let's try that above for now, have to bring kids to bed now. -Cle. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 18:17 Message: So I've been running through this... moving, recruiting, etc... then I came to a point where it won't let me pick again. :/ Says: kevinnew: Pick Recruiter in Brush hex17 There is more than one way you can recruit this. Current content of legion Gr05: There is a Titan, Cyclops, Gargoyle, Gargoyle, Centaur, Centaur Pick the creature type you want to reveal: There is a Cyclops, Gargoyle I can't pick anything. Tried clicking on it numerous times. Nothing will select and it is stuck on this dialog box. Not sure why this happening... but thank you for sticking it out with me. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 18:12 Message: You are correct. I typed the name in, it found it and ran fine. Well.. I can play now. yay! ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 18:08 Message: K so, I opened the default kevin.cfg and added those lines to it: Auto\ pick\ markers=true Auto\ pick\ color=true Favorite\ colors=Green And it worked. The game started. Made me green in fact. So far so good to, I was able to split a stack. Move the unit. Recruit. And watched the computer take it's move as well. So not sure why it wasn't working but it is now. Want to continue to troubleshoot? I guess I can always play green. :p ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 18:06 Message: No, you cannot "pick" the name kevinnew - it does not offer all "names that may exist". You choose the name on "Players" tab, On left side, Choose HUman, on right side type the name. 2nd Line, choose e.g. "SimpleAI", it fills right side with <byColor> or something, thats ok, Type there in first line the name kevinnew, and when game starts, it goes looking for a file Colossus-kewvinnew.cfg [and if it wouldn't exist, create it, sooner or later, after GUI / preferences changes]. Now we pre-create that file, so that it skips the color picking dialog because it would find a value to say "auto pick" from the file. -Cle. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 17:59 Message: btw, I did try and run the Colossus.jnlp stand alone and brings up the welcome screen, I hit ok, and the Game setup screen appears. I still can't choose newkevin and when I run it, once again I can not pick any of the colors. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 17:57 Message: I'll start from the beginning: • I open a folder I extracted all the files to from the .zip • I double click on run.bat A cmd window pops up with: C:\Documents and Settings\kevin\Desktop\collossus>cd "c:\Documents and Settings\kevin\Desktop\collossus\" C:\Documents and Settings\kevin\Desktop\collossus>java -Djava.util.logging.config.file=logging.properties -XMx256M -jar Colossus.jar Then what looks like the main program appears. It is the game setup screen. I make player one a human player and choose Kevin as the type. I make the 2nd player a SimpleAI and choose <By color> for the type. I leave everything else as is. (btw the top says Running Colossus Version 0.12.0-beta1 (revision 4970) on etc...) • I pick New game. The game appears to start, I can see the grid in the background with all the hills, deserts, etc. A small box with Pick a Color appears. I can move this box around. But I can not pick a color. I've tried clicking on every single one. I've tried pressing G, e, o, etc. I've tried Ctrl/Alt combinations, nothing. I can not close it either. I have to force it to shutdown. In Task Manager it shows that it is still running... so I don't THINK it is locked up. I do NOT see any other windows anywhere that I might need to click. I've even tried Alt+Tab and Ctrl+Tab to check. • I went ahead and did a search for the .colossus folder. I found it. It has 5 files in it. Colossus-netclient.cfg Colossus-red.cfg Colossus-server.cfg Colossus-kevin.cfg Colossus-kevin1.cfg • I went ahead and created a new .cfg file. I named it Colossus-kevinnew.cfg. I added these lines to it: Auto\ pick\ markers=true Auto\ pick\ color=true Favorite\ colors=Green Interestingly here, when I started the program, I could not choose kevinnew. I could only still see kevin. I searched my entire computer to see if the .cfg files might also be somewhere else but I could only find them under \\documents and settings\kevin\desktop\collossus • Ok so I tried your command prompt idea. I even ran the command from within the path and I kept getting this error... Unable to access jarfile Colossus.jar I can't imagine it being a graphical error... the program still seems to be running fine, I just can't select any color. In Task Manager it doesn't say "not responding". So I will wait for your reply. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 17:06 Message: ok, XP with SP3 and Sun Java 6 ( 1.6.x ). All right, that should work. ( I may have in use SP2 but still). E.g. "Windows Vista" or "Windows 7" are more "exotic" for me. Sun Java is good also. Did you get the "Welcome to Release 0.12.0" dialog and click it away? (if not, it might have lurked around in the background hidden behind some other window and block the mouse/keyboard input or whatever ("modal dialog"). Should technically not happen/be possible, but one has seen stranger things happen.... The History.java is one of the source files, not relevant. > The only .cf files I could find are WebServer.cf, WebServer_unix.cf, > and WebServer_win.cf. Do you want me to add a line into one of these? No. They are part of the "sources" as well, in some sense. Once started, Colossus will create a directory ".colossus" (and 2 files in it) "somewhere on your computer" - in what it considers to be "your home directory". What that exactly is, might vary... The home directory is under Windows _often_ something like: C:\Documents and Settings\Mike if you logged in to the computer with username Mike. Often you get there with right-click on Start button => Explore => opens an explorer e.g. to C:\Documents and Settings\katzer\Start Menu for me as user katzer. So katzer would be my home dir. However on my computer it's configured differently, so my home directory is D:\katzer You can take an explorer (the Start => right-click => Explore thing) and type in the "path"/adress line in the top "%HOME%" and press return. (you may need to make it visible first with View => Toolbars => Address bar ). Inside there should be .colossus. Once you found that we are much further :) (normally, once masterboardboard is open, Help => About would tell the location but you don't even get there yet :-/ ) Inside there will be eventually several .cfg files (and perhaps a "saves" directory). Directory of D:\katzer\.colossus 07.02.2011 10:06 <DIR> . 07.02.2011 10:06 <DIR> .. 07.02.2011 15:12 1 997 Colossus-clemens.cfg 08.02.2011 19:49 4 425 Colossus-katzer.cfg 08.02.2011 19:49 2 069 Colossus-katzer1.cfg 28.07.2010 17:18 276 Colossus-netclient.cfg 08.02.2011 19:49 900 Colossus-server.cfg 07.02.2011 15:12 2 059 Colossus-test1.cfg 07.02.2011 22:00 586 Colossus-webclient.cfg 07.02.2011 10:56 <DIR> saves 7 File(s) 12 312 bytes 3 Dir(s) 21 313 040 384 bytes free D:\katzer\.colossus> You can ignore the "-server", -webclient and -netclient files for now - they are "internal". -katzer and -clemens etc. are "client preferences" files. Like, I played once a game as clemens, and when changed preferences such as the various auto-<do something>, position and size of windows etc., Colossus would save those to a file with that name. (some other, like Variant, type and names of players, Options in Startup dialog, are stored to the Colossus-server.cfg file). Usually when you get the Game Setup dialog (where you choose variant, count and type of players etc), first of them you make "Human" and name is initialized with the name you are logged on to the computer. Thus created with some text editor (notepad, if necessary), a textfile named Colossus-Mike.cfg (replace your name, of course). (if necessaary, right click in the right side of explorer, where the files are shown => New => Text Document => then there exists a file "New File.txt" (or similar). Click it, or F2 on it, change name to above. Put into that file the following three lines: Auto\ pick\ markers=true Auto\ pick\ color=true Favorite\ colors=Green Note the "backslash" ( \ ) in front of the space. Now if you start a game with your player name set to "Mike" the Pick... dialogs should not appear. So question is, what will get stuck then :) The other interesting thing to try is, if you can run from commandline (by typing that command, which will make the java command shown): java -Djava.util.logging.config.file=file=logging.properties -Xmx256M -jar Colossus.jar While Colossus runs, eventually happening warnings etc. would be printed to that Command window. But if it's a total "Graphics stuff somehow freezes" (like it sounds, that it does not accept click or key on any of the colors) ... hm. Tricky. Might be no warning/exception, just the graphics thread (EDT, Event Dispatcher Thread, techno babble... ;-) hangs. Let's see so far, how far we get with above. If we get that, I've already some ideas how to proceed. BR, Clemens ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 15:15 Message: Not sure if this will help... I found a file called History.java under my recent documents. It's pretty lengthy but it is listed below: package net.sf.colossus.server; import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import net.sf.colossus.common.Constants; import net.sf.colossus.game.Creature; import net.sf.colossus.game.EntrySide; import net.sf.colossus.game.Legion; import net.sf.colossus.game.Player; import net.sf.colossus.game.actions.AddCreatureAction; import net.sf.colossus.game.actions.Recruitment; import net.sf.colossus.util.Glob; import net.sf.colossus.variant.CreatureType; import net.sf.colossus.variant.MasterHex; import org.jdom.Element; /** * Stores game history as XML. * * @author David Ripton */ public class History { private static final Logger LOGGER = Logger.getLogger(History.class .getName()); /** * History: events that happened before last commit point */ private final Element root; /** * History elements/events that happened since the last commit/"snapshot". */ private final List<Element> recentEvents = new LinkedList<Element>(); /** * Set to true during the processing of {@link #fireEventsFromXML(Server)} * to avoid triggering events we just restored again. */ private boolean loading = false; /** * */ private final Element loadedRedoLog; private boolean isRedo = false; /** * Stores the surviving legions (this variable is not needed any more) * * While the history should contain all information to reproduce the game * state, the last set of legions is currently still loaded upfront since * they contain the battle-specific information. This collides with * replaying the game from history... * Now, since 08/2008, they are not stored as "survivorlegions" any more. * Instead, they are backed up internally (done inside PlayerServerSide), * all the history is replayed. This creates proper split prediction data * in all clients. After that, backup data is compared with result of * replay. * E.g. Legion count, their content, players eliminated must be in sync. * Then the replayed ones are discarded and the backedup ones restored * - which have the right legion state (moved, donor, summoned, ...) * * TODO align the history replay more with the original gameplay so we * don't need this anymore; * 08/2008:==> this is now to some part done. Still replay * events could be closer to original events (split, summon, * acquire, teleport, ...) , not just the "result" of that * event (reveal,add,remove effects). * * TODO instead: model the actual events instead of just result, * or at least add relevant info to history elements, so that all * replayed events carry all needed data so that they could also be * processed by event viewer (currently EV does not process anything * during replay). */ public History() { root = new Element("History"); // Dummy: loadedRedoLog = new Element("LoadedRedoLog"); } /** * Constructor used by "LoadGame" */ public History(Element loadGameRoot) { // Get the history elements and store them to "root" root = (Element)loadGameRoot.getChild("History").clone(); // Get the redo log content loadedRedoLog = (Element)loadGameRoot.getChild("Redo").clone(); } /** * All events before last commit */ Element getCopy() { return (Element)root.clone(); } /** * Reached a commit point: append all recent events to the history, * clear list of recent events; caller should do this together with creating * the next snapshot. */ void flushRecentToRoot() { for (Element el : recentEvents) { el.detach(); String name = el.getName(); // TODO later, when this are proper events (not XML elements), // ask rather from the Event whether it belongs copied to // history or not. // TODO At some point in future, put also those Move events // that reveal something to history, and make either the history // replay only send the relevant reveal messages, or make the // Clients during replay (but not redo part) ignore the "move" // and just process the revealing part. // Preferrably the latter, so that proper events show up in the // EventViewer. if (name.equals("Move") || name.equals("UndoMove")) { LOGGER.finest("Flush Redo to History: skipping " + name); } else if (name.equals("Recruit") || name.equals("UndoRecruit")) { // Skipping for now, because there are also the addCreature, // removeCreature and reveal Events still in history. // TODO make the Recruit/UndoRecruit history events during // replay properly, get rid of the "side effect" type of // entries in save game. LOGGER.finest("Flush Redo to History: skipping " + name); } else { root.addContent(el); } } recentEvents.clear(); } /** * @return A Redo Element, containing all events since last commit * i.e. which need to be REDOne on top of last commit point/snapshot */ Element getNewRedoLogElement() { Element redoLogElement = new Element("Redo"); for (Element el : recentEvents) { el.detach(); redoLogElement.addContent(el); } return redoLogElement; } /** * TODO reconsider name * TODO decide if we should move it all into one big handleEvent(GameEvent) method */ void addCreatureEvent(AddCreatureAction event, int turn, String reason) { if (loading) { return; } Element element = new Element("AddCreature"); element.setAttribute("markerId", event.getLegion().getMarkerId()); element.setAttribute("creatureName", event.getAddedCreatureType() .getName()); element.setAttribute("turn", "" + turn); element.setAttribute("reason", reason); recentEvents.add(element); } void removeCreatureEvent(Legion legion, CreatureType creature, int turn, String reason) { if (loading) { return; } Element event = new Element("RemoveCreature"); event.setAttribute("markerId", legion.getMarkerId()); event.setAttribute("creatureName", creature.getName()); event.setAttribute("turn", "" + turn); event.setAttribute("reason", reason); recentEvents.add(event); } void splitEvent(Legion parent, Legion child, List<CreatureType> splitoffs, int turn) { if (loading) { return; } Element event = new Element("Split"); event.setAttribute("parentId", parent.getMarkerId()); event.setAttribute("childId", child.getMarkerId()); event.setAttribute("turn", "" + turn); Element creatures = new Element("splitoffs"); event.addContent(creatures); for (CreatureType creatureType : splitoffs) { Element cr = new Element("creature"); cr.addContent(creatureType.getName()); creatures.addContent(cr); } recentEvents.add(event); } void mergeEvent(String splitoffId, String survivorId, int turn) { if (loading) { return; } Element event = new Element("Merge"); event.setAttribute("splitoffId", splitoffId); event.setAttribute("survivorId", survivorId); event.setAttribute("turn", "" + turn); recentEvents.add(event); } void revealEvent(boolean allPlayers, List<Player> players, Legion legion, List<CreatureType> creatures, int turn, String reason) { if (loading) { return; } if (creatures.isEmpty()) { // this happens e.g. when in final battle (titan vs. titan) // angel was called out of legion which was then empty, // and in the final updateAllLegionContents there is then // this empty legion... // TODO if this case can happen in a regular game no warning // should be logged LOGGER.log(Level.WARNING, "Called revealEvent(" + allPlayers + ", " + (players != null ? players.toString() : "-null-") + ", " + legion + ", " + creatures.toString() + ", " + turn + ") with empty creatureNames"); return; } Element event = new Element("Reveal"); event.setAttribute("markerId", legion.getMarkerId()); event.setAttribute("allPlayers", "" + allPlayers); event.setAttribute("turn", "" + turn); event.setAttribute("reason", reason); if (!allPlayers) { Element viewers = new Element("viewers"); event.addContent(viewers); Iterator<Player> it = players.iterator(); while (it.hasNext()) { String playerName = it.next().getName(); Element viewer = new Element("viewer"); viewer.addContent(playerName); viewers.addContent(viewer); } } Element creaturesElem = new Element("creatures"); event.addContent(creaturesElem); for (CreatureType creatureType : creatures) { Element creatureElem = new Element("creature"); creatureElem.addContent(creatureType.getName()); creaturesElem.addContent(creatureElem); } recentEvents.add(event); } void playerElimEvent(Player player, Player slayer, int turn) { if (loading) { return; } Element event = new Element("PlayerElim"); event.setAttribute("name", player.getName()); if (slayer != null) { event.setAttribute("slayer", slayer.getName()); } event.setAttribute("turn", "" + turn); recentEvents.add(event); } void movementRollEvent(Player player, int roll) { if (loading) { return; } Element event = new Element("MovementRoll"); event.setAttribute("playerName", player.getName()); event.setAttribute("roll", "" + roll); recentEvents.add(event); } void legionMoveEvent(Legion legion, MasterHex newHex, EntrySide entrySide, boolean teleport, CreatureType lord) { if (loading) { return; } Element event = new Element("Move"); event.setAttribute("markerId", legion.getMarkerId()); event.setAttribute("newHex", newHex.getLabel()); event.setAttribute("entrySide", entrySide.getLabel()); event.setAttribute("teleport", "" + teleport); String creNameOrTextNull = lord == null ? "null" : lord.getName(); event.setAttribute("revealedLord", creNameOrTextNull); recentEvents.add(event); } void legionUndoMoveEvent(Legion legion) { if (loading) { return; } Element event = new Element("UndoMove"); event.setAttribute("markerId", legion.getMarkerId()); recentEvents.add(event); } void recruitEvent(Legion legion, CreatureType recruit, CreatureType recruiter) { if (loading) { return; } Element event = new Element("Recruit"); event.setAttribute("markerId", legion.getMarkerId()); event.setAttribute("recruit", recruit.getName()); event.setAttribute("recruiter", recruiter == null ? "null" : recruiter .getName()); recentEvents.add(event); } void undoRecruitEvent(Legion legion) { if (loading) { return; } Element event = new Element("UndoRecruit"); event.setAttribute("markerId", legion.getMarkerId()); recentEvents.add(event); } /** * Fire all events from redoLog. * Elements from RedoLog are processed one by one and the corresponding * method is called on the Server object, pretty much as if a * ClientHandler would call it when receiving such a request from Client. * Note that in some cases overriding the processingCH is necessary * (because technically, this all currently happens while still the * connecting of last joining player is processed, so processingCH is * set to his ClientHandler). * * Note that "loading" is not set to true, so they DO GET ADDED to the * recentEvents list again. * * @param server The server on which to call all the actions to be redone */ void processRedoLog(Server server) { assert loadedRedoLog != null : "Loaded RedoLog should always " + "have a JDOM root element as backing store"; LOGGER.info("History: Start processing redo log"); isRedo = true; for (Object obj : loadedRedoLog.getChildren()) { Element el = (Element)obj; LOGGER.info("processing redo event " + el.getName()); fireEventFromElement(server, el); } isRedo = false; // TODO clear loadedRedoLog? LOGGER.info("Completed processing redo log"); } // unchecked conversions from JDOM @SuppressWarnings("unchecked") void fireEventsFromXML(Server server) { this.loading = true; assert root != null : "History should always have a " + " JDOM root element as backing store"; List<Element> kids = root.getChildren(); Iterator<Element> it = kids.iterator(); while (it.hasNext()) { Element el = it.next(); fireEventFromElement(server, el); } this.loading = false; } // unchecked conversions from JDOM @SuppressWarnings("unchecked") void fireEventFromElement(Server server, Element el) { GameServerSide game = server.getGame(); String eventName = el.getName(); String reasonPerhaps = el.getAttributeValue("reason"); String reason = (reasonPerhaps != null && !reasonPerhaps .equals("null")) ? reasonPerhaps : "<undefinedReason>"; if (eventName.equals("Reveal") && isRedo && reason.equals(Constants.reasonRecruiter)) { // Skip this because we redo the full recruit event // TODO LOGGER.finest("Skipping Reveal event (reason " + reason + ") during redo."); } else if (eventName.equals("AddCreature") && isRedo && reason.equals(Constants.reasonRecruited)) { // Skip this because we redo the full recruit event LOGGER.finest("Skipping AddCreature event (reason " + reason + ") during redo."); } else if (eventName.equals("RemoveCreature") && isRedo && reason.equals(Constants.reasonRecruited)) { // Skip this because we redo the full recruit event LOGGER.finest("Skipping RemoveCreature event (reason " + reason + ") during redo."); } else if (eventName.equals("Reveal")) { String allPlayers = el.getAttributeValue("allPlayers"); boolean all = allPlayers != null && allPlayers.equals("true"); String markerId = el.getAttributeValue("markerId"); List<String> playerNames = new ArrayList<String>(); Element viewEl = el.getChild("viewers"); int turn = Integer.parseInt(el.getAttributeValue("turn")); String playerName = null; if (viewEl != null) { List<Element> viewers = viewEl.getChildren(); Iterator<Element> it = viewers.iterator(); while (it.hasNext()) { Element viewer = it.next(); playerName = viewer.getTextNormalize(); playerNames.add(playerName); } } List<Element> creatureElements = el.getChild("creatures") .getChildren(); List<CreatureType> creatures = new ArrayList<CreatureType>(); for (Element creature : creatureElements) { String creatureName = creature.getTextNormalize(); creatures.add(game.getVariant() .getCreatureByName(creatureName)); } Player player = game.getPlayerByMarkerId(markerId); Legion legion; if (turn == 1 && player.getLegionByMarkerId(markerId) == null) { // there is no create event for the startup legions, // so we might need to create them for the reveal event legion = new LegionServerSide(markerId, null, player .getStartingTower(), player.getStartingTower(), player, game, creatures .toArray(new CreatureType[creatures.size()])); player.addLegion(legion); } else { legion = player.getLegionByMarkerId(markerId); } // TODO Now we get the reason from history element - does this // change effect/break anything? // String reason = "<unknown>"; if (((PlayerServerSide)player).getDeadBeforeSave()) { // Skip for players that will be dead by end of replay } else if (all) { server.allRevealCreatures(legion, creatures, reason); } else { server.oneRevealLegion(game.getPlayerByName(playerName), legion, creatures, reason); } } else if (eventName.equals("Split")) { String parentId = el.getAttributeValue("parentId"); String childId = el.getAttributeValue("childId"); String turnString = el.getAttributeValue("turn"); int turn = Integer.parseInt(turnString); List<String> creatureNames = new ArrayList<String>(); List<CreatureType> creatures = new ArrayList<CreatureType>(); List<Element> splitoffs = el.getChild("splitoffs").getChildren(); Iterator<Element> it = splitoffs.iterator(); while (it.hasNext()) { Element creature = it.next(); String creatureName = creature.getTextNormalize(); creatureNames.add(creatureName); creatures.add(game.getVariant() .getCreatureByName(creatureName)); } LegionServerSide parentLegion = game.getLegionByMarkerId(parentId); if (isRedo) { server.overrideProcessingCH(parentLegion.getPlayer()); server.doSplit(parentLegion, childId, creatures); server.overrideProcessingCH(parentLegion.getPlayer()); return; } // LegionServerSide.split(..) doesn't like us here since the parent // legion can't remove creatures (not there?) -- create child directly // instead PlayerServerSide player = parentLegion.getPlayer(); LegionServerSide childLegion; if (player.hasLegion(childId)) { childLegion = game.getLegionByMarkerId(childId); LOGGER.severe("During replay of history: child legion " + childId + " should not " + "exist yet (turn=" + turn + ")!!\n" + "Exists already with: " + Glob.glob(",", childLegion.getCreatureTypes()) + " but " + "should now be created with creatures: " + creatures); childLegion.remove(); } childLegion = new LegionServerSide(childId, null, parentLegion .getCurrentHex(), parentLegion.getCurrentHex(), player, game, creatures.toArray(new CreatureType[creatures.size()])); player.addLegion(childLegion); for (CreatureType creature : creatures) { parentLegion.removeCreature(creature, false, false); } // Skip for players that will be dead by end of replay if (!player.getDeadBeforeSave()) { server.allTellDidSplit(parentLegion, childLegion, turn, false); } } else if (eventName.equals("Merge")) { String splitoffId = el.getAttributeValue("splitoffId"); String survivorId = el.getAttributeValue("survivorId"); String turnString = el.getAttributeValue("turn"); int turn = Integer.parseInt(turnString); LegionServerSide splitoff = game.getLegionByMarkerId(splitoffId); LegionServerSide survivor = game.getLegionByMarkerId(survivorId); // Skip for players that will be dead by end of replay if (!survivor.getPlayer().getDeadBeforeSave()) { server.undidSplit(splitoff, survivor, false, turn); } // Add them back to parent: while (splitoff.getHeight() > 0) { CreatureType type = splitoff.removeCreature(0, false, false); survivor.addCreature(type, false); } splitoff.remove(false, false); } else if (eventName.equals("AddCreature")) { String markerId = el.getAttributeValue("markerId"); String creatureName = el.getAttributeValue("creatureName"); // TODO Now we get the reason from history element - does this // change effect/break anything? // String reason = "<unknown>"; LOGGER.finer("Adding creature '" + creatureName + "' to legion with markerId '" + markerId + "', reason '" + reason + "'"); LegionServerSide legion = game.getLegionByMarkerId(markerId); CreatureType creatureType = game.getVariant().getCreatureByName( creatureName); legion.addCreature(creatureType, false); // Skip for players that will be dead by end of replay if (!legion.getPlayer().getDeadBeforeSave()) { server.allTellAddCreature(new AddCreatureAction(legion, creatureType), false, reason); } LOGGER.finest("Legion '" + markerId + "' now contains " + legion.getCreatures()); } else if (eventName.equals("RemoveCreature")) { String markerId = el.getAttributeValue("markerId"); String creatureName = el.getAttributeValue("creatureName"); // TODO Now we get the reason from history element - does this // change effect/break anything? // String reason = "<unknown>"; LOGGER.finer("Removing creature '" + creatureName + "' from legion with markerId '" + markerId + "', reason '" + reason + "'"); LegionServerSide legion = game.getLegionByMarkerId(markerId); if (legion == null) { LOGGER.warning("removeCreature " + creatureName + " from legion " + markerId + ", legion is null"); return; } else { List<? extends Creature> cres = legion.getCreatures(); List<String> crenames = new ArrayList<String>(); for (Creature c : cres) { crenames.add(c.getName()); } } // don't use disbandIfEmpty parameter since that'll fire another history event CreatureType removedCritter = legion.removeCreature(game .getVariant().getCreatureByName(creatureName), false, false); // Skip for players that will be dead by end of replay // Skip if removedCritter is null => removeCreature did not find it, // so there is something wrong with the save game. No use to bother // all the clients with it. if (removedCritter != null && !legion.getPlayer().getDeadBeforeSave()) { server.allTellRemoveCreature(legion, removedCritter, false, reason); } LOGGER.finest("Legion '" + markerId + "' now contains " + legion.getCreatures()); if (legion.getHeight() == 0) { legion.remove(false, false); LOGGER.finer("Legion '" + markerId + "' removed"); } } else if (eventName.equals("PlayerElim")) { String playerName = el.getAttributeValue("name"); String slayerName = el.getAttributeValue("slayer"); Player player = game.getPlayerByName(playerName); Player slayer = game.getPlayerByNameIgnoreNull(slayerName); // Record the slayer and give him this player's legion markers. if (slayer != null) { ((PlayerServerSide)player).handleSlaying(slayer); } player.setDead(true); server.allUpdatePlayerInfo(); server.allTellPlayerElim(player, slayer, false); } else if (eventName.equals("MovementRoll")) { String playerName = el.getAttributeValue("playerName"); Player player = game.getPlayerByName(playerName); int roll = Integer.parseInt(el.getAttributeValue("roll")); ((PlayerServerSide)player).setMovementRoll(roll); game.movementRollEvent(player, roll); server.allTellMovementRoll(roll); } else if (eventName.equals("Move")) { String markerId = el.getAttributeValue("markerId"); String lordName = el.getAttributeValue("revealedLord"); String tele = el.getAttributeValue("teleport"); String newHexLabel = el.getAttributeValue("newHex"); String entrySideName = el.getAttributeValue("entrySide"); LegionServerSide legion = game.getLegionByMarkerId(markerId); CreatureType revealedLord = lordName.equals("null") ? null : game .getVariant().getCreatureByName(lordName); MasterHex newHex = server.getGame().getVariant().getMasterBoard() .getHexByLabel(newHexLabel); EntrySide entrySide = EntrySide.fromLabel(entrySideName); boolean teleport = tele != null && tele.equals("true"); LOGGER.finest("Legion Move redo event: \n" + " marker " + markerId + ", lordName " + revealedLord + " teleported " + teleport + " to hex " + newHex.getLabel() + " entrySide " + entrySide.toString()); server.overrideProcessingCH(legion.getPlayer()); server.doMove(legion, newHex, entrySide, teleport, revealedLord); server.restoreProcessingCH(); } else if (eventName.equals("UndoMove")) { String markerId = el.getAttributeValue("markerId"); LegionServerSide legion = game.getLegionByMarkerId(markerId); LOGGER.finest("Legion Undo Move redo event: \n" + " marker " + markerId); server.overrideProcessingCH(legion.getPlayer()); server.undoMove(legion); server.restoreProcessingCH(); } else if (eventName.equals("Recruit")) { String markerId = el.getAttributeValue("markerId"); String recruitName = el.getAttributeValue("recruit"); String recruiterName = el.getAttributeValue("recruiter"); LegionServerSide legion = game.getLegionByMarkerId(markerId); CreatureType recruit = game.getVariant().getCreatureByName( recruitName); CreatureType recruiter = recruiterName.equals("null") ? null : game.getVariant().getCreatureByName(recruiterName); LOGGER.finest("Recruit redo event: \n" + " marker " + markerId + " recruit " + recruit + " recruiter " + recruiter); server.overrideProcessingCH(legion.getPlayer()); server.doRecruit(new Recruitment(legion, recruit, recruiter)); server.restoreProcessingCH(); } else if (eventName.equals("UndoRecruit")) { String markerId = el.getAttributeValue("markerId"); LegionServerSide legion = game.getLegionByMarkerId(markerId); LOGGER .finest("UndoRecruit redo event: \n" + " marker " + markerId); server.overrideProcessingCH(legion.getPlayer()); server.undoRecruit(legion); server.restoreProcessingCH(); } else { LOGGER.warning("Unknown Redo element " + eventName); } } } ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 15:10 Message: Btw, it says Sun Java ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 14:20 Message: Ok, I'll try and answer as best I can... I'm not too sure how to get all of this but here goes: • I am running Windows XP Pro SP3. • When it first starts up it opens a dialog box for Java that says Java 6. • Sorry not sure about how to check the log. :/ • Commandline... is this what you are looking for? -- java -Djava.util.logging.config.file=file=logging.properties -Xmx256M -jar Colossus.jar • The only .cf files I could find are WebServer.cf, WebServer_unix.cf, and WebServer_win.cf. Do you want me to add a line into one of these? Thank you for your assistance. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 13:53 Message: Hm, yes, some more info is needed. For example, which OS and version (Linux, Win, Mac, ...), Which java (Sun, Openjdk, ...) and which version of it (1.5.x, 1.6.x, ...) do you use? Do you have access to the log / do you know how to configure Java Web Start logging? Or run it from commandline (DOS box, Terminal window, ...) with "start.sh" or "start.bat", than some warnings/errors/exceptions would be written to the commandline window. Sorry I was not able to answer so far, busy day; will try to come back to you today evening or tomorrow or weekend. Otherwise ping me again :) For first aid, you could put "auto pick color" and "marker" into the cf file and see whether anything else works, but I suspect any other GUI dialog might get stuck as well. I provide instruction to do that ASAP. Since I haven't heard of any such case before, I suspect it's rather a specific "OS + java version" problem than generic problem in Colossus, although I of course am interested to make it work whereever. BR, Clemens ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 12:42 Message: Do you need more information? Be happy to provide it. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101939&aid=3177305&group_id=1939 |
|
From: SourceForge.net <no...@so...> - 2011-02-10 20:06:50
|
Bugs item #3177305, was opened at 2011-02-10 12:40 Message generated for change (Comment added) made by nobody You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101939&aid=3177305&group_id=1939 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: GUI Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Nobody/Anonymous (nobody) Assigned to: Clemens Katzer (cleka) Summary: Can not pick color to start game Initial Comment: Recently tried to play this game. I downloaded both the java version and the zip file. Both seem to start up just fine. The board will appear and another small window with choose a color pops up. I can not click on any color. I've tried pressing the letters that correspond to the colors. I've tried alt and ctrl combinations. Nothing works. I have to force the program to quit. Ideas? ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2011-02-10 20:06 Message: Ran java -version from command window: java version "1.6.0_17" Java(TM) SE Runtime Environment (build 1.6.0_17-b04) Java HotSpot(TM) Client VM (build 14.3-b01, mixed mode) I figured out how to get into the Java Options. Logging was turned off. So now I have a Java Console window when the program opens. So I tried a game, and it got stuck after 2nd time I tried to add a recruit. Btw, I notice it seems to do it when I can choose more than one recruit. Here is the last few lines of the log: (man... this is a lot of typing and I'm not sure it is really showing any errors. It just shows the last step before it "froze". INFO: Legion Gr09 (Lobster) in Tower hex 600 moves to Jungle hex 135 entering on RIGHT Feb 10, 2011 2:00:47 PM net.sf.colossus.server.GameServerSide$GamePhaseAdvancer advancePhaseInternal INFO:Phase advances to Muster Feb 10, 2011 2:00:49 PM net.sf.colossus.server.LegionServerSide addCreature INFO: Added Ceentaur -now there are 20 left. Feb 10, 2011 2:00:49 PM net.sf.colossus.server.GameServerSide doRecruit INFO: Legion Gr05 in Woods hex 39 recruits Centaur with 1 Centaur ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 19:37 Message: > It is a quad core system. hm. That might be part of the reason. I have some wild guess what it could be... Can you tell me exact java version? Help => About tells it. It tells also Log directory, there would be a file Colossus0.log. (The *0,log is always the newest; if new starts, it renames 1 to 2, 0 to 1nd creates new 0.log file). Sorry you have to type the stuff from Help => About, no copy paste. Or make a screenshot if you know how. If you wish you can also send it to me via mail (my SF username, i.e. the "cleka", then the magic a-like character, then users.sourceforge.net . Can you tune your system to use one CPU only? ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 19:15 Message: We were at a party and someone brought the board game Titan over. It confused the heck out of us (never even made it around once) but it seemed interesting. I did a search and found you making an app for it. So I thought I'd try it out. I am definitely brand new to Titan, so I expect to actually be the only player on here that gets defeated by your "dumb" AI. It is a quad core system. No I can not close the the dialog box with the small "X". In fact I can't do anything except shut it down. I selected Auto Pick Recruiters... and now I think it hangs up on actual recruiting now. It appears random too. Sometimes I can recruit a whole stack (7) without "locking up" and other times it will do it after the first recruit. (btw... sometimes I can't move a stack. That just a rule I'm not aware of?) ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 18:50 Message: Do you happen to know, do you have more than one CPU or CPU core? ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 18:43 Message: BTW, are you "well familiar with Titan, just new to use Colossus, or need to learn also "how game works, rules, strategy, etc." first? Once you are familar with the game and the usage, you could even try the public game server (by clicking the "WebClient" button), where you could find other "real people" to play against. (in contrast to the AI ("Artificial Intelligence") i.e. Robot players... However to notice is, people are usually online in afternoon/evening for US time. At other time you might log in there and be alone 30 or 60 mins before any other drop by. However, that's anyway more recommded only a) it does not hang for you any more and b) once you are "fluent" in playing. It's annoying for others when you need, let's say, 1.5 minutes for each individual move, split, recruit etc.... => Practicing to get faster better with AI players.They are all in all rather dump, but for first few weeks ok. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 18:35 Message: okay (or not okay), but that's something. In worst case I have to make you a special version which prints something to screen for every line of code before and around where it calls that "Pick Recruiter" dialog :)) That's what I meant, you might run into a "block" somewhat later with some other dialog. But the recruit dialog itself worked?? Strange; they are very similarly programmed. Some more "smalltalk" :o) > Made me green in fact. > I guess I can always play green. :p :) You can try: Window => Preferences => "Color" tab. Click on "Select" and choose another color. Next time you START a game it would choose that color for you automatically. (all those "Autoplay" options do certain things for you. So in fact you could enable "Auto Pick Recruiter", since that one is rather unimportant, as long as you can choose an actual Recruit. (so we can circumvent THIS cliff for now). But there might be other dialogs later to block you as well. And/or, in fact that's an interesting thing to try, whether that color chooser dialog would work??? If not, can you close it with the "x" shaped icon in upper right corner? (the initial color pick dialog CAN'T be closed that way, or rather, if one does, it reappears immediately.) So, sure, I'd like to continue troubleshoot this. Let's try that above for now, have to bring kids to bed now. -Cle. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 18:17 Message: So I've been running through this... moving, recruiting, etc... then I came to a point where it won't let me pick again. :/ Says: kevinnew: Pick Recruiter in Brush hex17 There is more than one way you can recruit this. Current content of legion Gr05: There is a Titan, Cyclops, Gargoyle, Gargoyle, Centaur, Centaur Pick the creature type you want to reveal: There is a Cyclops, Gargoyle I can't pick anything. Tried clicking on it numerous times. Nothing will select and it is stuck on this dialog box. Not sure why this happening... but thank you for sticking it out with me. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 18:12 Message: You are correct. I typed the name in, it found it and ran fine. Well.. I can play now. yay! ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 18:08 Message: K so, I opened the default kevin.cfg and added those lines to it: Auto\ pick\ markers=true Auto\ pick\ color=true Favorite\ colors=Green And it worked. The game started. Made me green in fact. So far so good to, I was able to split a stack. Move the unit. Recruit. And watched the computer take it's move as well. So not sure why it wasn't working but it is now. Want to continue to troubleshoot? I guess I can always play green. :p ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 18:06 Message: No, you cannot "pick" the name kevinnew - it does not offer all "names that may exist". You choose the name on "Players" tab, On left side, Choose HUman, on right side type the name. 2nd Line, choose e.g. "SimpleAI", it fills right side with <byColor> or something, thats ok, Type there in first line the name kevinnew, and when game starts, it goes looking for a file Colossus-kewvinnew.cfg [and if it wouldn't exist, create it, sooner or later, after GUI / preferences changes]. Now we pre-create that file, so that it skips the color picking dialog because it would find a value to say "auto pick" from the file. -Cle. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 17:59 Message: btw, I did try and run the Colossus.jnlp stand alone and brings up the welcome screen, I hit ok, and the Game setup screen appears. I still can't choose newkevin and when I run it, once again I can not pick any of the colors. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 17:57 Message: I'll start from the beginning: • I open a folder I extracted all the files to from the .zip • I double click on run.bat A cmd window pops up with: C:\Documents and Settings\kevin\Desktop\collossus>cd "c:\Documents and Settings\kevin\Desktop\collossus\" C:\Documents and Settings\kevin\Desktop\collossus>java -Djava.util.logging.config.file=logging.properties -XMx256M -jar Colossus.jar Then what looks like the main program appears. It is the game setup screen. I make player one a human player and choose Kevin as the type. I make the 2nd player a SimpleAI and choose <By color> for the type. I leave everything else as is. (btw the top says Running Colossus Version 0.12.0-beta1 (revision 4970) on etc...) • I pick New game. The game appears to start, I can see the grid in the background with all the hills, deserts, etc. A small box with Pick a Color appears. I can move this box around. But I can not pick a color. I've tried clicking on every single one. I've tried pressing G, e, o, etc. I've tried Ctrl/Alt combinations, nothing. I can not close it either. I have to force it to shutdown. In Task Manager it shows that it is still running... so I don't THINK it is locked up. I do NOT see any other windows anywhere that I might need to click. I've even tried Alt+Tab and Ctrl+Tab to check. • I went ahead and did a search for the .colossus folder. I found it. It has 5 files in it. Colossus-netclient.cfg Colossus-red.cfg Colossus-server.cfg Colossus-kevin.cfg Colossus-kevin1.cfg • I went ahead and created a new .cfg file. I named it Colossus-kevinnew.cfg. I added these lines to it: Auto\ pick\ markers=true Auto\ pick\ color=true Favorite\ colors=Green Interestingly here, when I started the program, I could not choose kevinnew. I could only still see kevin. I searched my entire computer to see if the .cfg files might also be somewhere else but I could only find them under \\documents and settings\kevin\desktop\collossus • Ok so I tried your command prompt idea. I even ran the command from within the path and I kept getting this error... Unable to access jarfile Colossus.jar I can't imagine it being a graphical error... the program still seems to be running fine, I just can't select any color. In Task Manager it doesn't say "not responding". So I will wait for your reply. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 17:06 Message: ok, XP with SP3 and Sun Java 6 ( 1.6.x ). All right, that should work. ( I may have in use SP2 but still). E.g. "Windows Vista" or "Windows 7" are more "exotic" for me. Sun Java is good also. Did you get the "Welcome to Release 0.12.0" dialog and click it away? (if not, it might have lurked around in the background hidden behind some other window and block the mouse/keyboard input or whatever ("modal dialog"). Should technically not happen/be possible, but one has seen stranger things happen.... The History.java is one of the source files, not relevant. > The only .cf files I could find are WebServer.cf, WebServer_unix.cf, > and WebServer_win.cf. Do you want me to add a line into one of these? No. They are part of the "sources" as well, in some sense. Once started, Colossus will create a directory ".colossus" (and 2 files in it) "somewhere on your computer" - in what it considers to be "your home directory". What that exactly is, might vary... The home directory is under Windows _often_ something like: C:\Documents and Settings\Mike if you logged in to the computer with username Mike. Often you get there with right-click on Start button => Explore => opens an explorer e.g. to C:\Documents and Settings\katzer\Start Menu for me as user katzer. So katzer would be my home dir. However on my computer it's configured differently, so my home directory is D:\katzer You can take an explorer (the Start => right-click => Explore thing) and type in the "path"/adress line in the top "%HOME%" and press return. (you may need to make it visible first with View => Toolbars => Address bar ). Inside there should be .colossus. Once you found that we are much further :) (normally, once masterboardboard is open, Help => About would tell the location but you don't even get there yet :-/ ) Inside there will be eventually several .cfg files (and perhaps a "saves" directory). Directory of D:\katzer\.colossus 07.02.2011 10:06 <DIR> . 07.02.2011 10:06 <DIR> .. 07.02.2011 15:12 1 997 Colossus-clemens.cfg 08.02.2011 19:49 4 425 Colossus-katzer.cfg 08.02.2011 19:49 2 069 Colossus-katzer1.cfg 28.07.2010 17:18 276 Colossus-netclient.cfg 08.02.2011 19:49 900 Colossus-server.cfg 07.02.2011 15:12 2 059 Colossus-test1.cfg 07.02.2011 22:00 586 Colossus-webclient.cfg 07.02.2011 10:56 <DIR> saves 7 File(s) 12 312 bytes 3 Dir(s) 21 313 040 384 bytes free D:\katzer\.colossus> You can ignore the "-server", -webclient and -netclient files for now - they are "internal". -katzer and -clemens etc. are "client preferences" files. Like, I played once a game as clemens, and when changed preferences such as the various auto-<do something>, position and size of windows etc., Colossus would save those to a file with that name. (some other, like Variant, type and names of players, Options in Startup dialog, are stored to the Colossus-server.cfg file). Usually when you get the Game Setup dialog (where you choose variant, count and type of players etc), first of them you make "Human" and name is initialized with the name you are logged on to the computer. Thus created with some text editor (notepad, if necessary), a textfile named Colossus-Mike.cfg (replace your name, of course). (if necessaary, right click in the right side of explorer, where the files are shown => New => Text Document => then there exists a file "New File.txt" (or similar). Click it, or F2 on it, change name to above. Put into that file the following three lines: Auto\ pick\ markers=true Auto\ pick\ color=true Favorite\ colors=Green Note the "backslash" ( \ ) in front of the space. Now if you start a game with your player name set to "Mike" the Pick... dialogs should not appear. So question is, what will get stuck then :) The other interesting thing to try is, if you can run from commandline (by typing that command, which will make the java command shown): java -Djava.util.logging.config.file=file=logging.properties -Xmx256M -jar Colossus.jar While Colossus runs, eventually happening warnings etc. would be printed to that Command window. But if it's a total "Graphics stuff somehow freezes" (like it sounds, that it does not accept click or key on any of the colors) ... hm. Tricky. Might be no warning/exception, just the graphics thread (EDT, Event Dispatcher Thread, techno babble... ;-) hangs. Let's see so far, how far we get with above. If we get that, I've already some ideas how to proceed. BR, Clemens ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 15:15 Message: Not sure if this will help... I found a file called History.java under my recent documents. It's pretty lengthy but it is listed below: package net.sf.colossus.server; import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import net.sf.colossus.common.Constants; import net.sf.colossus.game.Creature; import net.sf.colossus.game.EntrySide; import net.sf.colossus.game.Legion; import net.sf.colossus.game.Player; import net.sf.colossus.game.actions.AddCreatureAction; import net.sf.colossus.game.actions.Recruitment; import net.sf.colossus.util.Glob; import net.sf.colossus.variant.CreatureType; import net.sf.colossus.variant.MasterHex; import org.jdom.Element; /** * Stores game history as XML. * * @author David Ripton */ public class History { private static final Logger LOGGER = Logger.getLogger(History.class .getName()); /** * History: events that happened before last commit point */ private final Element root; /** * History elements/events that happened since the last commit/"snapshot". */ private final List<Element> recentEvents = new LinkedList<Element>(); /** * Set to true during the processing of {@link #fireEventsFromXML(Server)} * to avoid triggering events we just restored again. */ private boolean loading = false; /** * */ private final Element loadedRedoLog; private boolean isRedo = false; /** * Stores the surviving legions (this variable is not needed any more) * * While the history should contain all information to reproduce the game * state, the last set of legions is currently still loaded upfront since * they contain the battle-specific information. This collides with * replaying the game from history... * Now, since 08/2008, they are not stored as "survivorlegions" any more. * Instead, they are backed up internally (done inside PlayerServerSide), * all the history is replayed. This creates proper split prediction data * in all clients. After that, backup data is compared with result of * replay. * E.g. Legion count, their content, players eliminated must be in sync. * Then the replayed ones are discarded and the backedup ones restored * - which have the right legion state (moved, donor, summoned, ...) * * TODO align the history replay more with the original gameplay so we * don't need this anymore; * 08/2008:==> this is now to some part done. Still replay * events could be closer to original events (split, summon, * acquire, teleport, ...) , not just the "result" of that * event (reveal,add,remove effects). * * TODO instead: model the actual events instead of just result, * or at least add relevant info to history elements, so that all * replayed events carry all needed data so that they could also be * processed by event viewer (currently EV does not process anything * during replay). */ public History() { root = new Element("History"); // Dummy: loadedRedoLog = new Element("LoadedRedoLog"); } /** * Constructor used by "LoadGame" */ public History(Element loadGameRoot) { // Get the history elements and store them to "root" root = (Element)loadGameRoot.getChild("History").clone(); // Get the redo log content loadedRedoLog = (Element)loadGameRoot.getChild("Redo").clone(); } /** * All events before last commit */ Element getCopy() { return (Element)root.clone(); } /** * Reached a commit point: append all recent events to the history, * clear list of recent events; caller should do this together with creating * the next snapshot. */ void flushRecentToRoot() { for (Element el : recentEvents) { el.detach(); String name = el.getName(); // TODO later, when this are proper events (not XML elements), // ask rather from the Event whether it belongs copied to // history or not. // TODO At some point in future, put also those Move events // that reveal something to history, and make either the history // replay only send the relevant reveal messages, or make the // Clients during replay (but not redo part) ignore the "move" // and just process the revealing part. // Preferrably the latter, so that proper events show up in the // EventViewer. if (name.equals("Move") || name.equals("UndoMove")) { LOGGER.finest("Flush Redo to History: skipping " + name); } else if (name.equals("Recruit") || name.equals("UndoRecruit")) { // Skipping for now, because there are also the addCreature, // removeCreature and reveal Events still in history. // TODO make the Recruit/UndoRecruit history events during // replay properly, get rid of the "side effect" type of // entries in save game. LOGGER.finest("Flush Redo to History: skipping " + name); } else { root.addContent(el); } } recentEvents.clear(); } /** * @return A Redo Element, containing all events since last commit * i.e. which need to be REDOne on top of last commit point/snapshot */ Element getNewRedoLogElement() { Element redoLogElement = new Element("Redo"); for (Element el : recentEvents) { el.detach(); redoLogElement.addContent(el); } return redoLogElement; } /** * TODO reconsider name * TODO decide if we should move it all into one big handleEvent(GameEvent) method */ void addCreatureEvent(AddCreatureAction event, int turn, String reason) { if (loading) { return; } Element element = new Element("AddCreature"); element.setAttribute("markerId", event.getLegion().getMarkerId()); element.setAttribute("creatureName", event.getAddedCreatureType() .getName()); element.setAttribute("turn", "" + turn); element.setAttribute("reason", reason); recentEvents.add(element); } void removeCreatureEvent(Legion legion, CreatureType creature, int turn, String reason) { if (loading) { return; } Element event = new Element("RemoveCreature"); event.setAttribute("markerId", legion.getMarkerId()); event.setAttribute("creatureName", creature.getName()); event.setAttribute("turn", "" + turn); event.setAttribute("reason", reason); recentEvents.add(event); } void splitEvent(Legion parent, Legion child, List<CreatureType> splitoffs, int turn) { if (loading) { return; } Element event = new Element("Split"); event.setAttribute("parentId", parent.getMarkerId()); event.setAttribute("childId", child.getMarkerId()); event.setAttribute("turn", "" + turn); Element creatures = new Element("splitoffs"); event.addContent(creatures); for (CreatureType creatureType : splitoffs) { Element cr = new Element("creature"); cr.addContent(creatureType.getName()); creatures.addContent(cr); } recentEvents.add(event); } void mergeEvent(String splitoffId, String survivorId, int turn) { if (loading) { return; } Element event = new Element("Merge"); event.setAttribute("splitoffId", splitoffId); event.setAttribute("survivorId", survivorId); event.setAttribute("turn", "" + turn); recentEvents.add(event); } void revealEvent(boolean allPlayers, List<Player> players, Legion legion, List<CreatureType> creatures, int turn, String reason) { if (loading) { return; } if (creatures.isEmpty()) { // this happens e.g. when in final battle (titan vs. titan) // angel was called out of legion which was then empty, // and in the final updateAllLegionContents there is then // this empty legion... // TODO if this case can happen in a regular game no warning // should be logged LOGGER.log(Level.WARNING, "Called revealEvent(" + allPlayers + ", " + (players != null ? players.toString() : "-null-") + ", " + legion + ", " + creatures.toString() + ", " + turn + ") with empty creatureNames"); return; } Element event = new Element("Reveal"); event.setAttribute("markerId", legion.getMarkerId()); event.setAttribute("allPlayers", "" + allPlayers); event.setAttribute("turn", "" + turn); event.setAttribute("reason", reason); if (!allPlayers) { Element viewers = new Element("viewers"); event.addContent(viewers); Iterator<Player> it = players.iterator(); while (it.hasNext()) { String playerName = it.next().getName(); Element viewer = new Element("viewer"); viewer.addContent(playerName); viewers.addContent(viewer); } } Element creaturesElem = new Element("creatures"); event.addContent(creaturesElem); for (CreatureType creatureType : creatures) { Element creatureElem = new Element("creature"); creatureElem.addContent(creatureType.getName()); creaturesElem.addContent(creatureElem); } recentEvents.add(event); } void playerElimEvent(Player player, Player slayer, int turn) { if (loading) { return; } Element event = new Element("PlayerElim"); event.setAttribute("name", player.getName()); if (slayer != null) { event.setAttribute("slayer", slayer.getName()); } event.setAttribute("turn", "" + turn); recentEvents.add(event); } void movementRollEvent(Player player, int roll) { if (loading) { return; } Element event = new Element("MovementRoll"); event.setAttribute("playerName", player.getName()); event.setAttribute("roll", "" + roll); recentEvents.add(event); } void legionMoveEvent(Legion legion, MasterHex newHex, EntrySide entrySide, boolean teleport, CreatureType lord) { if (loading) { return; } Element event = new Element("Move"); event.setAttribute("markerId", legion.getMarkerId()); event.setAttribute("newHex", newHex.getLabel()); event.setAttribute("entrySide", entrySide.getLabel()); event.setAttribute("teleport", "" + teleport); String creNameOrTextNull = lord == null ? "null" : lord.getName(); event.setAttribute("revealedLord", creNameOrTextNull); recentEvents.add(event); } void legionUndoMoveEvent(Legion legion) { if (loading) { return; } Element event = new Element("UndoMove"); event.setAttribute("markerId", legion.getMarkerId()); recentEvents.add(event); } void recruitEvent(Legion legion, CreatureType recruit, CreatureType recruiter) { if (loading) { return; } Element event = new Element("Recruit"); event.setAttribute("markerId", legion.getMarkerId()); event.setAttribute("recruit", recruit.getName()); event.setAttribute("recruiter", recruiter == null ? "null" : recruiter .getName()); recentEvents.add(event); } void undoRecruitEvent(Legion legion) { if (loading) { return; } Element event = new Element("UndoRecruit"); event.setAttribute("markerId", legion.getMarkerId()); recentEvents.add(event); } /** * Fire all events from redoLog. * Elements from RedoLog are processed one by one and the corresponding * method is called on the Server object, pretty much as if a * ClientHandler would call it when receiving such a request from Client. * Note that in some cases overriding the processingCH is necessary * (because technically, this all currently happens while still the * connecting of last joining player is processed, so processingCH is * set to his ClientHandler). * * Note that "loading" is not set to true, so they DO GET ADDED to the * recentEvents list again. * * @param server The server on which to call all the actions to be redone */ void processRedoLog(Server server) { assert loadedRedoLog != null : "Loaded RedoLog should always " + "have a JDOM root element as backing store"; LOGGER.info("History: Start processing redo log"); isRedo = true; for (Object obj : loadedRedoLog.getChildren()) { Element el = (Element)obj; LOGGER.info("processing redo event " + el.getName()); fireEventFromElement(server, el); } isRedo = false; // TODO clear loadedRedoLog? LOGGER.info("Completed processing redo log"); } // unchecked conversions from JDOM @SuppressWarnings("unchecked") void fireEventsFromXML(Server server) { this.loading = true; assert root != null : "History should always have a " + " JDOM root element as backing store"; List<Element> kids = root.getChildren(); Iterator<Element> it = kids.iterator(); while (it.hasNext()) { Element el = it.next(); fireEventFromElement(server, el); } this.loading = false; } // unchecked conversions from JDOM @SuppressWarnings("unchecked") void fireEventFromElement(Server server, Element el) { GameServerSide game = server.getGame(); String eventName = el.getName(); String reasonPerhaps = el.getAttributeValue("reason"); String reason = (reasonPerhaps != null && !reasonPerhaps .equals("null")) ? reasonPerhaps : "<undefinedReason>"; if (eventName.equals("Reveal") && isRedo && reason.equals(Constants.reasonRecruiter)) { // Skip this because we redo the full recruit event // TODO LOGGER.finest("Skipping Reveal event (reason " + reason + ") during redo."); } else if (eventName.equals("AddCreature") && isRedo && reason.equals(Constants.reasonRecruited)) { // Skip this because we redo the full recruit event LOGGER.finest("Skipping AddCreature event (reason " + reason + ") during redo."); } else if (eventName.equals("RemoveCreature") && isRedo && reason.equals(Constants.reasonRecruited)) { // Skip this because we redo the full recruit event LOGGER.finest("Skipping RemoveCreature event (reason " + reason + ") during redo."); } else if (eventName.equals("Reveal")) { String allPlayers = el.getAttributeValue("allPlayers"); boolean all = allPlayers != null && allPlayers.equals("true"); String markerId = el.getAttributeValue("markerId"); List<String> playerNames = new ArrayList<String>(); Element viewEl = el.getChild("viewers"); int turn = Integer.parseInt(el.getAttributeValue("turn")); String playerName = null; if (viewEl != null) { List<Element> viewers = viewEl.getChildren(); Iterator<Element> it = viewers.iterator(); while (it.hasNext()) { Element viewer = it.next(); playerName = viewer.getTextNormalize(); playerNames.add(playerName); } } List<Element> creatureElements = el.getChild("creatures") .getChildren(); List<CreatureType> creatures = new ArrayList<CreatureType>(); for (Element creature : creatureElements) { String creatureName = creature.getTextNormalize(); creatures.add(game.getVariant() .getCreatureByName(creatureName)); } Player player = game.getPlayerByMarkerId(markerId); Legion legion; if (turn == 1 && player.getLegionByMarkerId(markerId) == null) { // there is no create event for the startup legions, // so we might need to create them for the reveal event legion = new LegionServerSide(markerId, null, player .getStartingTower(), player.getStartingTower(), player, game, creatures .toArray(new CreatureType[creatures.size()])); player.addLegion(legion); } else { legion = player.getLegionByMarkerId(markerId); } // TODO Now we get the reason from history element - does this // change effect/break anything? // String reason = "<unknown>"; if (((PlayerServerSide)player).getDeadBeforeSave()) { // Skip for players that will be dead by end of replay } else if (all) { server.allRevealCreatures(legion, creatures, reason); } else { server.oneRevealLegion(game.getPlayerByName(playerName), legion, creatures, reason); } } else if (eventName.equals("Split")) { String parentId = el.getAttributeValue("parentId"); String childId = el.getAttributeValue("childId"); String turnString = el.getAttributeValue("turn"); int turn = Integer.parseInt(turnString); List<String> creatureNames = new ArrayList<String>(); List<CreatureType> creatures = new ArrayList<CreatureType>(); List<Element> splitoffs = el.getChild("splitoffs").getChildren(); Iterator<Element> it = splitoffs.iterator(); while (it.hasNext()) { Element creature = it.next(); String creatureName = creature.getTextNormalize(); creatureNames.add(creatureName); creatures.add(game.getVariant() .getCreatureByName(creatureName)); } LegionServerSide parentLegion = game.getLegionByMarkerId(parentId); if (isRedo) { server.overrideProcessingCH(parentLegion.getPlayer()); server.doSplit(parentLegion, childId, creatures); server.overrideProcessingCH(parentLegion.getPlayer()); return; } // LegionServerSide.split(..) doesn't like us here since the parent // legion can't remove creatures (not there?) -- create child directly // instead PlayerServerSide player = parentLegion.getPlayer(); LegionServerSide childLegion; if (player.hasLegion(childId)) { childLegion = game.getLegionByMarkerId(childId); LOGGER.severe("During replay of history: child legion " + childId + " should not " + "exist yet (turn=" + turn + ")!!\n" + "Exists already with: " + Glob.glob(",", childLegion.getCreatureTypes()) + " but " + "should now be created with creatures: " + creatures); childLegion.remove(); } childLegion = new LegionServerSide(childId, null, parentLegion .getCurrentHex(), parentLegion.getCurrentHex(), player, game, creatures.toArray(new CreatureType[creatures.size()])); player.addLegion(childLegion); for (CreatureType creature : creatures) { parentLegion.removeCreature(creature, false, false); } // Skip for players that will be dead by end of replay if (!player.getDeadBeforeSave()) { server.allTellDidSplit(parentLegion, childLegion, turn, false); } } else if (eventName.equals("Merge")) { String splitoffId = el.getAttributeValue("splitoffId"); String survivorId = el.getAttributeValue("survivorId"); String turnString = el.getAttributeValue("turn"); int turn = Integer.parseInt(turnString); LegionServerSide splitoff = game.getLegionByMarkerId(splitoffId); LegionServerSide survivor = game.getLegionByMarkerId(survivorId); // Skip for players that will be dead by end of replay if (!survivor.getPlayer().getDeadBeforeSave()) { server.undidSplit(splitoff, survivor, false, turn); } // Add them back to parent: while (splitoff.getHeight() > 0) { CreatureType type = splitoff.removeCreature(0, false, false); survivor.addCreature(type, false); } splitoff.remove(false, false); } else if (eventName.equals("AddCreature")) { String markerId = el.getAttributeValue("markerId"); String creatureName = el.getAttributeValue("creatureName"); // TODO Now we get the reason from history element - does this // change effect/break anything? // String reason = "<unknown>"; LOGGER.finer("Adding creature '" + creatureName + "' to legion with markerId '" + markerId + "', reason '" + reason + "'"); LegionServerSide legion = game.getLegionByMarkerId(markerId); CreatureType creatureType = game.getVariant().getCreatureByName( creatureName); legion.addCreature(creatureType, false); // Skip for players that will be dead by end of replay if (!legion.getPlayer().getDeadBeforeSave()) { server.allTellAddCreature(new AddCreatureAction(legion, creatureType), false, reason); } LOGGER.finest("Legion '" + markerId + "' now contains " + legion.getCreatures()); } else if (eventName.equals("RemoveCreature")) { String markerId = el.getAttributeValue("markerId"); String creatureName = el.getAttributeValue("creatureName"); // TODO Now we get the reason from history element - does this // change effect/break anything? // String reason = "<unknown>"; LOGGER.finer("Removing creature '" + creatureName + "' from legion with markerId '" + markerId + "', reason '" + reason + "'"); LegionServerSide legion = game.getLegionByMarkerId(markerId); if (legion == null) { LOGGER.warning("removeCreature " + creatureName + " from legion " + markerId + ", legion is null"); return; } else { List<? extends Creature> cres = legion.getCreatures(); List<String> crenames = new ArrayList<String>(); for (Creature c : cres) { crenames.add(c.getName()); } } // don't use disbandIfEmpty parameter since that'll fire another history event CreatureType removedCritter = legion.removeCreature(game .getVariant().getCreatureByName(creatureName), false, false); // Skip for players that will be dead by end of replay // Skip if removedCritter is null => removeCreature did not find it, // so there is something wrong with the save game. No use to bother // all the clients with it. if (removedCritter != null && !legion.getPlayer().getDeadBeforeSave()) { server.allTellRemoveCreature(legion, removedCritter, false, reason); } LOGGER.finest("Legion '" + markerId + "' now contains " + legion.getCreatures()); if (legion.getHeight() == 0) { legion.remove(false, false); LOGGER.finer("Legion '" + markerId + "' removed"); } } else if (eventName.equals("PlayerElim")) { String playerName = el.getAttributeValue("name"); String slayerName = el.getAttributeValue("slayer"); Player player = game.getPlayerByName(playerName); Player slayer = game.getPlayerByNameIgnoreNull(slayerName); // Record the slayer and give him this player's legion markers. if (slayer != null) { ((PlayerServerSide)player).handleSlaying(slayer); } player.setDead(true); server.allUpdatePlayerInfo(); server.allTellPlayerElim(player, slayer, false); } else if (eventName.equals("MovementRoll")) { String playerName = el.getAttributeValue("playerName"); Player player = game.getPlayerByName(playerName); int roll = Integer.parseInt(el.getAttributeValue("roll")); ((PlayerServerSide)player).setMovementRoll(roll); game.movementRollEvent(player, roll); server.allTellMovementRoll(roll); } else if (eventName.equals("Move")) { String markerId = el.getAttributeValue("markerId"); String lordName = el.getAttributeValue("revealedLord"); String tele = el.getAttributeValue("teleport"); String newHexLabel = el.getAttributeValue("newHex"); String entrySideName = el.getAttributeValue("entrySide"); LegionServerSide legion = game.getLegionByMarkerId(markerId); CreatureType revealedLord = lordName.equals("null") ? null : game .getVariant().getCreatureByName(lordName); MasterHex newHex = server.getGame().getVariant().getMasterBoard() .getHexByLabel(newHexLabel); EntrySide entrySide = EntrySide.fromLabel(entrySideName); boolean teleport = tele != null && tele.equals("true"); LOGGER.finest("Legion Move redo event: \n" + " marker " + markerId + ", lordName " + revealedLord + " teleported " + teleport + " to hex " + newHex.getLabel() + " entrySide " + entrySide.toString()); server.overrideProcessingCH(legion.getPlayer()); server.doMove(legion, newHex, entrySide, teleport, revealedLord); server.restoreProcessingCH(); } else if (eventName.equals("UndoMove")) { String markerId = el.getAttributeValue("markerId"); LegionServerSide legion = game.getLegionByMarkerId(markerId); LOGGER.finest("Legion Undo Move redo event: \n" + " marker " + markerId); server.overrideProcessingCH(legion.getPlayer()); server.undoMove(legion); server.restoreProcessingCH(); } else if (eventName.equals("Recruit")) { String markerId = el.getAttributeValue("markerId"); String recruitName = el.getAttributeValue("recruit"); String recruiterName = el.getAttributeValue("recruiter"); LegionServerSide legion = game.getLegionByMarkerId(markerId); CreatureType recruit = game.getVariant().getCreatureByName( recruitName); CreatureType recruiter = recruiterName.equals("null") ? null : game.getVariant().getCreatureByName(recruiterName); LOGGER.finest("Recruit redo event: \n" + " marker " + markerId + " recruit " + recruit + " recruiter " + recruiter); server.overrideProcessingCH(legion.getPlayer()); server.doRecruit(new Recruitment(legion, recruit, recruiter)); server.restoreProcessingCH(); } else if (eventName.equals("UndoRecruit")) { String markerId = el.getAttributeValue("markerId"); LegionServerSide legion = game.getLegionByMarkerId(markerId); LOGGER .finest("UndoRecruit redo event: \n" + " marker " + markerId); server.overrideProcessingCH(legion.getPlayer()); server.undoRecruit(legion); server.restoreProcessingCH(); } else { LOGGER.warning("Unknown Redo element " + eventName); } } } ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 15:10 Message: Btw, it says Sun Java ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 14:20 Message: Ok, I'll try and answer as best I can... I'm not too sure how to get all of this but here goes: • I am running Windows XP Pro SP3. • When it first starts up it opens a dialog box for Java that says Java 6. • Sorry not sure about how to check the log. :/ • Commandline... is this what you are looking for? -- java -Djava.util.logging.config.file=file=logging.properties -Xmx256M -jar Colossus.jar • The only .cf files I could find are WebServer.cf, WebServer_unix.cf, and WebServer_win.cf. Do you want me to add a line into one of these? Thank you for your assistance. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 13:53 Message: Hm, yes, some more info is needed. For example, which OS and version (Linux, Win, Mac, ...), Which java (Sun, Openjdk, ...) and which version of it (1.5.x, 1.6.x, ...) do you use? Do you have access to the log / do you know how to configure Java Web Start logging? Or run it from commandline (DOS box, Terminal window, ...) with "start.sh" or "start.bat", than some warnings/errors/exceptions would be written to the commandline window. Sorry I was not able to answer so far, busy day; will try to come back to you today evening or tomorrow or weekend. Otherwise ping me again :) For first aid, you could put "auto pick color" and "marker" into the cf file and see whether anything else works, but I suspect any other GUI dialog might get stuck as well. I provide instruction to do that ASAP. Since I haven't heard of any such case before, I suspect it's rather a specific "OS + java version" problem than generic problem in Colossus, although I of course am interested to make it work whereever. BR, Clemens ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 12:42 Message: Do you need more information? Be happy to provide it. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101939&aid=3177305&group_id=1939 |
|
From: SourceForge.net <no...@so...> - 2011-02-10 19:37:04
|
Bugs item #3177305, was opened at 2011-02-10 14:40 Message generated for change (Comment added) made by cleka You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101939&aid=3177305&group_id=1939 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: GUI Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Nobody/Anonymous (nobody) Assigned to: Clemens Katzer (cleka) Summary: Can not pick color to start game Initial Comment: Recently tried to play this game. I downloaded both the java version and the zip file. Both seem to start up just fine. The board will appear and another small window with choose a color pops up. I can not click on any color. I've tried pressing the letters that correspond to the colors. I've tried alt and ctrl combinations. Nothing works. I have to force the program to quit. Ideas? ---------------------------------------------------------------------- >Comment By: Clemens Katzer (cleka) Date: 2011-02-10 21:37 Message: > It is a quad core system. hm. That might be part of the reason. I have some wild guess what it could be... Can you tell me exact java version? Help => About tells it. It tells also Log directory, there would be a file Colossus0.log. (The *0,log is always the newest; if new starts, it renames 1 to 2, 0 to 1nd creates new 0.log file). Sorry you have to type the stuff from Help => About, no copy paste. Or make a screenshot if you know how. If you wish you can also send it to me via mail (my SF username, i.e. the "cleka", then the magic a-like character, then users.sourceforge.net . Can you tune your system to use one CPU only? ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 21:15 Message: We were at a party and someone brought the board game Titan over. It confused the heck out of us (never even made it around once) but it seemed interesting. I did a search and found you making an app for it. So I thought I'd try it out. I am definitely brand new to Titan, so I expect to actually be the only player on here that gets defeated by your "dumb" AI. It is a quad core system. No I can not close the the dialog box with the small "X". In fact I can't do anything except shut it down. I selected Auto Pick Recruiters... and now I think it hangs up on actual recruiting now. It appears random too. Sometimes I can recruit a whole stack (7) without "locking up" and other times it will do it after the first recruit. (btw... sometimes I can't move a stack. That just a rule I'm not aware of?) ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:50 Message: Do you happen to know, do you have more than one CPU or CPU core? ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:43 Message: BTW, are you "well familiar with Titan, just new to use Colossus, or need to learn also "how game works, rules, strategy, etc." first? Once you are familar with the game and the usage, you could even try the public game server (by clicking the "WebClient" button), where you could find other "real people" to play against. (in contrast to the AI ("Artificial Intelligence") i.e. Robot players... However to notice is, people are usually online in afternoon/evening for US time. At other time you might log in there and be alone 30 or 60 mins before any other drop by. However, that's anyway more recommded only a) it does not hang for you any more and b) once you are "fluent" in playing. It's annoying for others when you need, let's say, 1.5 minutes for each individual move, split, recruit etc.... => Practicing to get faster better with AI players.They are all in all rather dump, but for first few weeks ok. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:35 Message: okay (or not okay), but that's something. In worst case I have to make you a special version which prints something to screen for every line of code before and around where it calls that "Pick Recruiter" dialog :)) That's what I meant, you might run into a "block" somewhat later with some other dialog. But the recruit dialog itself worked?? Strange; they are very similarly programmed. Some more "smalltalk" :o) > Made me green in fact. > I guess I can always play green. :p :) You can try: Window => Preferences => "Color" tab. Click on "Select" and choose another color. Next time you START a game it would choose that color for you automatically. (all those "Autoplay" options do certain things for you. So in fact you could enable "Auto Pick Recruiter", since that one is rather unimportant, as long as you can choose an actual Recruit. (so we can circumvent THIS cliff for now). But there might be other dialogs later to block you as well. And/or, in fact that's an interesting thing to try, whether that color chooser dialog would work??? If not, can you close it with the "x" shaped icon in upper right corner? (the initial color pick dialog CAN'T be closed that way, or rather, if one does, it reappears immediately.) So, sure, I'd like to continue troubleshoot this. Let's try that above for now, have to bring kids to bed now. -Cle. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 20:17 Message: So I've been running through this... moving, recruiting, etc... then I came to a point where it won't let me pick again. :/ Says: kevinnew: Pick Recruiter in Brush hex17 There is more than one way you can recruit this. Current content of legion Gr05: There is a Titan, Cyclops, Gargoyle, Gargoyle, Centaur, Centaur Pick the creature type you want to reveal: There is a Cyclops, Gargoyle I can't pick anything. Tried clicking on it numerous times. Nothing will select and it is stuck on this dialog box. Not sure why this happening... but thank you for sticking it out with me. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 20:12 Message: You are correct. I typed the name in, it found it and ran fine. Well.. I can play now. yay! ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 20:08 Message: K so, I opened the default kevin.cfg and added those lines to it: Auto\ pick\ markers=true Auto\ pick\ color=true Favorite\ colors=Green And it worked. The game started. Made me green in fact. So far so good to, I was able to split a stack. Move the unit. Recruit. And watched the computer take it's move as well. So not sure why it wasn't working but it is now. Want to continue to troubleshoot? I guess I can always play green. :p ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:06 Message: No, you cannot "pick" the name kevinnew - it does not offer all "names that may exist". You choose the name on "Players" tab, On left side, Choose HUman, on right side type the name. 2nd Line, choose e.g. "SimpleAI", it fills right side with <byColor> or something, thats ok, Type there in first line the name kevinnew, and when game starts, it goes looking for a file Colossus-kewvinnew.cfg [and if it wouldn't exist, create it, sooner or later, after GUI / preferences changes]. Now we pre-create that file, so that it skips the color picking dialog because it would find a value to say "auto pick" from the file. -Cle. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 19:59 Message: btw, I did try and run the Colossus.jnlp stand alone and brings up the welcome screen, I hit ok, and the Game setup screen appears. I still can't choose newkevin and when I run it, once again I can not pick any of the colors. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 19:57 Message: I'll start from the beginning: • I open a folder I extracted all the files to from the .zip • I double click on run.bat A cmd window pops up with: C:\Documents and Settings\kevin\Desktop\collossus>cd "c:\Documents and Settings\kevin\Desktop\collossus\" C:\Documents and Settings\kevin\Desktop\collossus>java -Djava.util.logging.config.file=logging.properties -XMx256M -jar Colossus.jar Then what looks like the main program appears. It is the game setup screen. I make player one a human player and choose Kevin as the type. I make the 2nd player a SimpleAI and choose <By color> for the type. I leave everything else as is. (btw the top says Running Colossus Version 0.12.0-beta1 (revision 4970) on etc...) • I pick New game. The game appears to start, I can see the grid in the background with all the hills, deserts, etc. A small box with Pick a Color appears. I can move this box around. But I can not pick a color. I've tried clicking on every single one. I've tried pressing G, e, o, etc. I've tried Ctrl/Alt combinations, nothing. I can not close it either. I have to force it to shutdown. In Task Manager it shows that it is still running... so I don't THINK it is locked up. I do NOT see any other windows anywhere that I might need to click. I've even tried Alt+Tab and Ctrl+Tab to check. • I went ahead and did a search for the .colossus folder. I found it. It has 5 files in it. Colossus-netclient.cfg Colossus-red.cfg Colossus-server.cfg Colossus-kevin.cfg Colossus-kevin1.cfg • I went ahead and created a new .cfg file. I named it Colossus-kevinnew.cfg. I added these lines to it: Auto\ pick\ markers=true Auto\ pick\ color=true Favorite\ colors=Green Interestingly here, when I started the program, I could not choose kevinnew. I could only still see kevin. I searched my entire computer to see if the .cfg files might also be somewhere else but I could only find them under \\documents and settings\kevin\desktop\collossus • Ok so I tried your command prompt idea. I even ran the command from within the path and I kept getting this error... Unable to access jarfile Colossus.jar I can't imagine it being a graphical error... the program still seems to be running fine, I just can't select any color. In Task Manager it doesn't say "not responding". So I will wait for your reply. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 19:06 Message: ok, XP with SP3 and Sun Java 6 ( 1.6.x ). All right, that should work. ( I may have in use SP2 but still). E.g. "Windows Vista" or "Windows 7" are more "exotic" for me. Sun Java is good also. Did you get the "Welcome to Release 0.12.0" dialog and click it away? (if not, it might have lurked around in the background hidden behind some other window and block the mouse/keyboard input or whatever ("modal dialog"). Should technically not happen/be possible, but one has seen stranger things happen.... The History.java is one of the source files, not relevant. > The only .cf files I could find are WebServer.cf, WebServer_unix.cf, > and WebServer_win.cf. Do you want me to add a line into one of these? No. They are part of the "sources" as well, in some sense. Once started, Colossus will create a directory ".colossus" (and 2 files in it) "somewhere on your computer" - in what it considers to be "your home directory". What that exactly is, might vary... The home directory is under Windows _often_ something like: C:\Documents and Settings\Mike if you logged in to the computer with username Mike. Often you get there with right-click on Start button => Explore => opens an explorer e.g. to C:\Documents and Settings\katzer\Start Menu for me as user katzer. So katzer would be my home dir. However on my computer it's configured differently, so my home directory is D:\katzer You can take an explorer (the Start => right-click => Explore thing) and type in the "path"/adress line in the top "%HOME%" and press return. (you may need to make it visible first with View => Toolbars => Address bar ). Inside there should be .colossus. Once you found that we are much further :) (normally, once masterboardboard is open, Help => About would tell the location but you don't even get there yet :-/ ) Inside there will be eventually several .cfg files (and perhaps a "saves" directory). Directory of D:\katzer\.colossus 07.02.2011 10:06 <DIR> . 07.02.2011 10:06 <DIR> .. 07.02.2011 15:12 1 997 Colossus-clemens.cfg 08.02.2011 19:49 4 425 Colossus-katzer.cfg 08.02.2011 19:49 2 069 Colossus-katzer1.cfg 28.07.2010 17:18 276 Colossus-netclient.cfg 08.02.2011 19:49 900 Colossus-server.cfg 07.02.2011 15:12 2 059 Colossus-test1.cfg 07.02.2011 22:00 586 Colossus-webclient.cfg 07.02.2011 10:56 <DIR> saves 7 File(s) 12 312 bytes 3 Dir(s) 21 313 040 384 bytes free D:\katzer\.colossus> You can ignore the "-server", -webclient and -netclient files for now - they are "internal". -katzer and -clemens etc. are "client preferences" files. Like, I played once a game as clemens, and when changed preferences such as the various auto-<do something>, position and size of windows etc., Colossus would save those to a file with that name. (some other, like Variant, type and names of players, Options in Startup dialog, are stored to the Colossus-server.cfg file). Usually when you get the Game Setup dialog (where you choose variant, count and type of players etc), first of them you make "Human" and name is initialized with the name you are logged on to the computer. Thus created with some text editor (notepad, if necessary), a textfile named Colossus-Mike.cfg (replace your name, of course). (if necessaary, right click in the right side of explorer, where the files are shown => New => Text Document => then there exists a file "New File.txt" (or similar). Click it, or F2 on it, change name to above. Put into that file the following three lines: Auto\ pick\ markers=true Auto\ pick\ color=true Favorite\ colors=Green Note the "backslash" ( \ ) in front of the space. Now if you start a game with your player name set to "Mike" the Pick... dialogs should not appear. So question is, what will get stuck then :) The other interesting thing to try is, if you can run from commandline (by typing that command, which will make the java command shown): java -Djava.util.logging.config.file=file=logging.properties -Xmx256M -jar Colossus.jar While Colossus runs, eventually happening warnings etc. would be printed to that Command window. But if it's a total "Graphics stuff somehow freezes" (like it sounds, that it does not accept click or key on any of the colors) ... hm. Tricky. Might be no warning/exception, just the graphics thread (EDT, Event Dispatcher Thread, techno babble... ;-) hangs. Let's see so far, how far we get with above. If we get that, I've already some ideas how to proceed. BR, Clemens ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 17:15 Message: Not sure if this will help... I found a file called History.java under my recent documents. It's pretty lengthy but it is listed below: package net.sf.colossus.server; import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import net.sf.colossus.common.Constants; import net.sf.colossus.game.Creature; import net.sf.colossus.game.EntrySide; import net.sf.colossus.game.Legion; import net.sf.colossus.game.Player; import net.sf.colossus.game.actions.AddCreatureAction; import net.sf.colossus.game.actions.Recruitment; import net.sf.colossus.util.Glob; import net.sf.colossus.variant.CreatureType; import net.sf.colossus.variant.MasterHex; import org.jdom.Element; /** * Stores game history as XML. * * @author David Ripton */ public class History { private static final Logger LOGGER = Logger.getLogger(History.class .getName()); /** * History: events that happened before last commit point */ private final Element root; /** * History elements/events that happened since the last commit/"snapshot". */ private final List<Element> recentEvents = new LinkedList<Element>(); /** * Set to true during the processing of {@link #fireEventsFromXML(Server)} * to avoid triggering events we just restored again. */ private boolean loading = false; /** * */ private final Element loadedRedoLog; private boolean isRedo = false; /** * Stores the surviving legions (this variable is not needed any more) * * While the history should contain all information to reproduce the game * state, the last set of legions is currently still loaded upfront since * they contain the battle-specific information. This collides with * replaying the game from history... * Now, since 08/2008, they are not stored as "survivorlegions" any more. * Instead, they are backed up internally (done inside PlayerServerSide), * all the history is replayed. This creates proper split prediction data * in all clients. After that, backup data is compared with result of * replay. * E.g. Legion count, their content, players eliminated must be in sync. * Then the replayed ones are discarded and the backedup ones restored * - which have the right legion state (moved, donor, summoned, ...) * * TODO align the history replay more with the original gameplay so we * don't need this anymore; * 08/2008:==> this is now to some part done. Still replay * events could be closer to original events (split, summon, * acquire, teleport, ...) , not just the "result" of that * event (reveal,add,remove effects). * * TODO instead: model the actual events instead of just result, * or at least add relevant info to history elements, so that all * replayed events carry all needed data so that they could also be * processed by event viewer (currently EV does not process anything * during replay). */ public History() { root = new Element("History"); // Dummy: loadedRedoLog = new Element("LoadedRedoLog"); } /** * Constructor used by "LoadGame" */ public History(Element loadGameRoot) { // Get the history elements and store them to "root" root = (Element)loadGameRoot.getChild("History").clone(); // Get the redo log content loadedRedoLog = (Element)loadGameRoot.getChild("Redo").clone(); } /** * All events before last commit */ Element getCopy() { return (Element)root.clone(); } /** * Reached a commit point: append all recent events to the history, * clear list of recent events; caller should do this together with creating * the next snapshot. */ void flushRecentToRoot() { for (Element el : recentEvents) { el.detach(); String name = el.getName(); // TODO later, when this are proper events (not XML elements), // ask rather from the Event whether it belongs copied to // history or not. // TODO At some point in future, put also those Move events // that reveal something to history, and make either the history // replay only send the relevant reveal messages, or make the // Clients during replay (but not redo part) ignore the "move" // and just process the revealing part. // Preferrably the latter, so that proper events show up in the // EventViewer. if (name.equals("Move") || name.equals("UndoMove")) { LOGGER.finest("Flush Redo to History: skipping " + name); } else if (name.equals("Recruit") || name.equals("UndoRecruit")) { // Skipping for now, because there are also the addCreature, // removeCreature and reveal Events still in history. // TODO make the Recruit/UndoRecruit history events during // replay properly, get rid of the "side effect" type of // entries in save game. LOGGER.finest("Flush Redo to History: skipping " + name); } else { root.addContent(el); } } recentEvents.clear(); } /** * @return A Redo Element, containing all events since last commit * i.e. which need to be REDOne on top of last commit point/snapshot */ Element getNewRedoLogElement() { Element redoLogElement = new Element("Redo"); for (Element el : recentEvents) { el.detach(); redoLogElement.addContent(el); } return redoLogElement; } /** * TODO reconsider name * TODO decide if we should move it all into one big handleEvent(GameEvent) method */ void addCreatureEvent(AddCreatureAction event, int turn, String reason) { if (loading) { return; } Element element = new Element("AddCreature"); element.setAttribute("markerId", event.getLegion().getMarkerId()); element.setAttribute("creatureName", event.getAddedCreatureType() .getName()); element.setAttribute("turn", "" + turn); element.setAttribute("reason", reason); recentEvents.add(element); } void removeCreatureEvent(Legion legion, CreatureType creature, int turn, String reason) { if (loading) { return; } Element event = new Element("RemoveCreature"); event.setAttribute("markerId", legion.getMarkerId()); event.setAttribute("creatureName", creature.getName()); event.setAttribute("turn", "" + turn); event.setAttribute("reason", reason); recentEvents.add(event); } void splitEvent(Legion parent, Legion child, List<CreatureType> splitoffs, int turn) { if (loading) { return; } Element event = new Element("Split"); event.setAttribute("parentId", parent.getMarkerId()); event.setAttribute("childId", child.getMarkerId()); event.setAttribute("turn", "" + turn); Element creatures = new Element("splitoffs"); event.addContent(creatures); for (CreatureType creatureType : splitoffs) { Element cr = new Element("creature"); cr.addContent(creatureType.getName()); creatures.addContent(cr); } recentEvents.add(event); } void mergeEvent(String splitoffId, String survivorId, int turn) { if (loading) { return; } Element event = new Element("Merge"); event.setAttribute("splitoffId", splitoffId); event.setAttribute("survivorId", survivorId); event.setAttribute("turn", "" + turn); recentEvents.add(event); } void revealEvent(boolean allPlayers, List<Player> players, Legion legion, List<CreatureType> creatures, int turn, String reason) { if (loading) { return; } if (creatures.isEmpty()) { // this happens e.g. when in final battle (titan vs. titan) // angel was called out of legion which was then empty, // and in the final updateAllLegionContents there is then // this empty legion... // TODO if this case can happen in a regular game no warning // should be logged LOGGER.log(Level.WARNING, "Called revealEvent(" + allPlayers + ", " + (players != null ? players.toString() : "-null-") + ", " + legion + ", " + creatures.toString() + ", " + turn + ") with empty creatureNames"); return; } Element event = new Element("Reveal"); event.setAttribute("markerId", legion.getMarkerId()); event.setAttribute("allPlayers", "" + allPlayers); event.setAttribute("turn", "" + turn); event.setAttribute("reason", reason); if (!allPlayers) { Element viewers = new Element("viewers"); event.addContent(viewers); Iterator<Player> it = players.iterator(); while (it.hasNext()) { String playerName = it.next().getName(); Element viewer = new Element("viewer"); viewer.addContent(playerName); viewers.addContent(viewer); } } Element creaturesElem = new Element("creatures"); event.addContent(creaturesElem); for (CreatureType creatureType : creatures) { Element creatureElem = new Element("creature"); creatureElem.addContent(creatureType.getName()); creaturesElem.addContent(creatureElem); } recentEvents.add(event); } void playerElimEvent(Player player, Player slayer, int turn) { if (loading) { return; } Element event = new Element("PlayerElim"); event.setAttribute("name", player.getName()); if (slayer != null) { event.setAttribute("slayer", slayer.getName()); } event.setAttribute("turn", "" + turn); recentEvents.add(event); } void movementRollEvent(Player player, int roll) { if (loading) { return; } Element event = new Element("MovementRoll"); event.setAttribute("playerName", player.getName()); event.setAttribute("roll", "" + roll); recentEvents.add(event); } void legionMoveEvent(Legion legion, MasterHex newHex, EntrySide entrySide, boolean teleport, CreatureType lord) { if (loading) { return; } Element event = new Element("Move"); event.setAttribute("markerId", legion.getMarkerId()); event.setAttribute("newHex", newHex.getLabel()); event.setAttribute("entrySide", entrySide.getLabel()); event.setAttribute("teleport", "" + teleport); String creNameOrTextNull = lord == null ? "null" : lord.getName(); event.setAttribute("revealedLord", creNameOrTextNull); recentEvents.add(event); } void legionUndoMoveEvent(Legion legion) { if (loading) { return; } Element event = new Element("UndoMove"); event.setAttribute("markerId", legion.getMarkerId()); recentEvents.add(event); } void recruitEvent(Legion legion, CreatureType recruit, CreatureType recruiter) { if (loading) { return; } Element event = new Element("Recruit"); event.setAttribute("markerId", legion.getMarkerId()); event.setAttribute("recruit", recruit.getName()); event.setAttribute("recruiter", recruiter == null ? "null" : recruiter .getName()); recentEvents.add(event); } void undoRecruitEvent(Legion legion) { if (loading) { return; } Element event = new Element("UndoRecruit"); event.setAttribute("markerId", legion.getMarkerId()); recentEvents.add(event); } /** * Fire all events from redoLog. * Elements from RedoLog are processed one by one and the corresponding * method is called on the Server object, pretty much as if a * ClientHandler would call it when receiving such a request from Client. * Note that in some cases overriding the processingCH is necessary * (because technically, this all currently happens while still the * connecting of last joining player is processed, so processingCH is * set to his ClientHandler). * * Note that "loading" is not set to true, so they DO GET ADDED to the * recentEvents list again. * * @param server The server on which to call all the actions to be redone */ void processRedoLog(Server server) { assert loadedRedoLog != null : "Loaded RedoLog should always " + "have a JDOM root element as backing store"; LOGGER.info("History: Start processing redo log"); isRedo = true; for (Object obj : loadedRedoLog.getChildren()) { Element el = (Element)obj; LOGGER.info("processing redo event " + el.getName()); fireEventFromElement(server, el); } isRedo = false; // TODO clear loadedRedoLog? LOGGER.info("Completed processing redo log"); } // unchecked conversions from JDOM @SuppressWarnings("unchecked") void fireEventsFromXML(Server server) { this.loading = true; assert root != null : "History should always have a " + " JDOM root element as backing store"; List<Element> kids = root.getChildren(); Iterator<Element> it = kids.iterator(); while (it.hasNext()) { Element el = it.next(); fireEventFromElement(server, el); } this.loading = false; } // unchecked conversions from JDOM @SuppressWarnings("unchecked") void fireEventFromElement(Server server, Element el) { GameServerSide game = server.getGame(); String eventName = el.getName(); String reasonPerhaps = el.getAttributeValue("reason"); String reason = (reasonPerhaps != null && !reasonPerhaps .equals("null")) ? reasonPerhaps : "<undefinedReason>"; if (eventName.equals("Reveal") && isRedo && reason.equals(Constants.reasonRecruiter)) { // Skip this because we redo the full recruit event // TODO LOGGER.finest("Skipping Reveal event (reason " + reason + ") during redo."); } else if (eventName.equals("AddCreature") && isRedo && reason.equals(Constants.reasonRecruited)) { // Skip this because we redo the full recruit event LOGGER.finest("Skipping AddCreature event (reason " + reason + ") during redo."); } else if (eventName.equals("RemoveCreature") && isRedo && reason.equals(Constants.reasonRecruited)) { // Skip this because we redo the full recruit event LOGGER.finest("Skipping RemoveCreature event (reason " + reason + ") during redo."); } else if (eventName.equals("Reveal")) { String allPlayers = el.getAttributeValue("allPlayers"); boolean all = allPlayers != null && allPlayers.equals("true"); String markerId = el.getAttributeValue("markerId"); List<String> playerNames = new ArrayList<String>(); Element viewEl = el.getChild("viewers"); int turn = Integer.parseInt(el.getAttributeValue("turn")); String playerName = null; if (viewEl != null) { List<Element> viewers = viewEl.getChildren(); Iterator<Element> it = viewers.iterator(); while (it.hasNext()) { Element viewer = it.next(); playerName = viewer.getTextNormalize(); playerNames.add(playerName); } } List<Element> creatureElements = el.getChild("creatures") .getChildren(); List<CreatureType> creatures = new ArrayList<CreatureType>(); for (Element creature : creatureElements) { String creatureName = creature.getTextNormalize(); creatures.add(game.getVariant() .getCreatureByName(creatureName)); } Player player = game.getPlayerByMarkerId(markerId); Legion legion; if (turn == 1 && player.getLegionByMarkerId(markerId) == null) { // there is no create event for the startup legions, // so we might need to create them for the reveal event legion = new LegionServerSide(markerId, null, player .getStartingTower(), player.getStartingTower(), player, game, creatures .toArray(new CreatureType[creatures.size()])); player.addLegion(legion); } else { legion = player.getLegionByMarkerId(markerId); } // TODO Now we get the reason from history element - does this // change effect/break anything? // String reason = "<unknown>"; if (((PlayerServerSide)player).getDeadBeforeSave()) { // Skip for players that will be dead by end of replay } else if (all) { server.allRevealCreatures(legion, creatures, reason); } else { server.oneRevealLegion(game.getPlayerByName(playerName), legion, creatures, reason); } } else if (eventName.equals("Split")) { String parentId = el.getAttributeValue("parentId"); String childId = el.getAttributeValue("childId"); String turnString = el.getAttributeValue("turn"); int turn = Integer.parseInt(turnString); List<String> creatureNames = new ArrayList<String>(); List<CreatureType> creatures = new ArrayList<CreatureType>(); List<Element> splitoffs = el.getChild("splitoffs").getChildren(); Iterator<Element> it = splitoffs.iterator(); while (it.hasNext()) { Element creature = it.next(); String creatureName = creature.getTextNormalize(); creatureNames.add(creatureName); creatures.add(game.getVariant() .getCreatureByName(creatureName)); } LegionServerSide parentLegion = game.getLegionByMarkerId(parentId); if (isRedo) { server.overrideProcessingCH(parentLegion.getPlayer()); server.doSplit(parentLegion, childId, creatures); server.overrideProcessingCH(parentLegion.getPlayer()); return; } // LegionServerSide.split(..) doesn't like us here since the parent // legion can't remove creatures (not there?) -- create child directly // instead PlayerServerSide player = parentLegion.getPlayer(); LegionServerSide childLegion; if (player.hasLegion(childId)) { childLegion = game.getLegionByMarkerId(childId); LOGGER.severe("During replay of history: child legion " + childId + " should not " + "exist yet (turn=" + turn + ")!!\n" + "Exists already with: " + Glob.glob(",", childLegion.getCreatureTypes()) + " but " + "should now be created with creatures: " + creatures); childLegion.remove(); } childLegion = new LegionServerSide(childId, null, parentLegion .getCurrentHex(), parentLegion.getCurrentHex(), player, game, creatures.toArray(new CreatureType[creatures.size()])); player.addLegion(childLegion); for (CreatureType creature : creatures) { parentLegion.removeCreature(creature, false, false); } // Skip for players that will be dead by end of replay if (!player.getDeadBeforeSave()) { server.allTellDidSplit(parentLegion, childLegion, turn, false); } } else if (eventName.equals("Merge")) { String splitoffId = el.getAttributeValue("splitoffId"); String survivorId = el.getAttributeValue("survivorId"); String turnString = el.getAttributeValue("turn"); int turn = Integer.parseInt(turnString); LegionServerSide splitoff = game.getLegionByMarkerId(splitoffId); LegionServerSide survivor = game.getLegionByMarkerId(survivorId); // Skip for players that will be dead by end of replay if (!survivor.getPlayer().getDeadBeforeSave()) { server.undidSplit(splitoff, survivor, false, turn); } // Add them back to parent: while (splitoff.getHeight() > 0) { CreatureType type = splitoff.removeCreature(0, false, false); survivor.addCreature(type, false); } splitoff.remove(false, false); } else if (eventName.equals("AddCreature")) { String markerId = el.getAttributeValue("markerId"); String creatureName = el.getAttributeValue("creatureName"); // TODO Now we get the reason from history element - does this // change effect/break anything? // String reason = "<unknown>"; LOGGER.finer("Adding creature '" + creatureName + "' to legion with markerId '" + markerId + "', reason '" + reason + "'"); LegionServerSide legion = game.getLegionByMarkerId(markerId); CreatureType creatureType = game.getVariant().getCreatureByName( creatureName); legion.addCreature(creatureType, false); // Skip for players that will be dead by end of replay if (!legion.getPlayer().getDeadBeforeSave()) { server.allTellAddCreature(new AddCreatureAction(legion, creatureType), false, reason); } LOGGER.finest("Legion '" + markerId + "' now contains " + legion.getCreatures()); } else if (eventName.equals("RemoveCreature")) { String markerId = el.getAttributeValue("markerId"); String creatureName = el.getAttributeValue("creatureName"); // TODO Now we get the reason from history element - does this // change effect/break anything? // String reason = "<unknown>"; LOGGER.finer("Removing creature '" + creatureName + "' from legion with markerId '" + markerId + "', reason '" + reason + "'"); LegionServerSide legion = game.getLegionByMarkerId(markerId); if (legion == null) { LOGGER.warning("removeCreature " + creatureName + " from legion " + markerId + ", legion is null"); return; } else { List<? extends Creature> cres = legion.getCreatures(); List<String> crenames = new ArrayList<String>(); for (Creature c : cres) { crenames.add(c.getName()); } } // don't use disbandIfEmpty parameter since that'll fire another history event CreatureType removedCritter = legion.removeCreature(game .getVariant().getCreatureByName(creatureName), false, false); // Skip for players that will be dead by end of replay // Skip if removedCritter is null => removeCreature did not find it, // so there is something wrong with the save game. No use to bother // all the clients with it. if (removedCritter != null && !legion.getPlayer().getDeadBeforeSave()) { server.allTellRemoveCreature(legion, removedCritter, false, reason); } LOGGER.finest("Legion '" + markerId + "' now contains " + legion.getCreatures()); if (legion.getHeight() == 0) { legion.remove(false, false); LOGGER.finer("Legion '" + markerId + "' removed"); } } else if (eventName.equals("PlayerElim")) { String playerName = el.getAttributeValue("name"); String slayerName = el.getAttributeValue("slayer"); Player player = game.getPlayerByName(playerName); Player slayer = game.getPlayerByNameIgnoreNull(slayerName); // Record the slayer and give him this player's legion markers. if (slayer != null) { ((PlayerServerSide)player).handleSlaying(slayer); } player.setDead(true); server.allUpdatePlayerInfo(); server.allTellPlayerElim(player, slayer, false); } else if (eventName.equals("MovementRoll")) { String playerName = el.getAttributeValue("playerName"); Player player = game.getPlayerByName(playerName); int roll = Integer.parseInt(el.getAttributeValue("roll")); ((PlayerServerSide)player).setMovementRoll(roll); game.movementRollEvent(player, roll); server.allTellMovementRoll(roll); } else if (eventName.equals("Move")) { String markerId = el.getAttributeValue("markerId"); String lordName = el.getAttributeValue("revealedLord"); String tele = el.getAttributeValue("teleport"); String newHexLabel = el.getAttributeValue("newHex"); String entrySideName = el.getAttributeValue("entrySide"); LegionServerSide legion = game.getLegionByMarkerId(markerId); CreatureType revealedLord = lordName.equals("null") ? null : game .getVariant().getCreatureByName(lordName); MasterHex newHex = server.getGame().getVariant().getMasterBoard() .getHexByLabel(newHexLabel); EntrySide entrySide = EntrySide.fromLabel(entrySideName); boolean teleport = tele != null && tele.equals("true"); LOGGER.finest("Legion Move redo event: \n" + " marker " + markerId + ", lordName " + revealedLord + " teleported " + teleport + " to hex " + newHex.getLabel() + " entrySide " + entrySide.toString()); server.overrideProcessingCH(legion.getPlayer()); server.doMove(legion, newHex, entrySide, teleport, revealedLord); server.restoreProcessingCH(); } else if (eventName.equals("UndoMove")) { String markerId = el.getAttributeValue("markerId"); LegionServerSide legion = game.getLegionByMarkerId(markerId); LOGGER.finest("Legion Undo Move redo event: \n" + " marker " + markerId); server.overrideProcessingCH(legion.getPlayer()); server.undoMove(legion); server.restoreProcessingCH(); } else if (eventName.equals("Recruit")) { String markerId = el.getAttributeValue("markerId"); String recruitName = el.getAttributeValue("recruit"); String recruiterName = el.getAttributeValue("recruiter"); LegionServerSide legion = game.getLegionByMarkerId(markerId); CreatureType recruit = game.getVariant().getCreatureByName( recruitName); CreatureType recruiter = recruiterName.equals("null") ? null : game.getVariant().getCreatureByName(recruiterName); LOGGER.finest("Recruit redo event: \n" + " marker " + markerId + " recruit " + recruit + " recruiter " + recruiter); server.overrideProcessingCH(legion.getPlayer()); server.doRecruit(new Recruitment(legion, recruit, recruiter)); server.restoreProcessingCH(); } else if (eventName.equals("UndoRecruit")) { String markerId = el.getAttributeValue("markerId"); LegionServerSide legion = game.getLegionByMarkerId(markerId); LOGGER .finest("UndoRecruit redo event: \n" + " marker " + markerId); server.overrideProcessingCH(legion.getPlayer()); server.undoRecruit(legion); server.restoreProcessingCH(); } else { LOGGER.warning("Unknown Redo element " + eventName); } } } ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 17:10 Message: Btw, it says Sun Java ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 16:20 Message: Ok, I'll try and answer as best I can... I'm not too sure how to get all of this but here goes: • I am running Windows XP Pro SP3. • When it first starts up it opens a dialog box for Java that says Java 6. • Sorry not sure about how to check the log. :/ • Commandline... is this what you are looking for? -- java -Djava.util.logging.config.file=file=logging.properties -Xmx256M -jar Colossus.jar • The only .cf files I could find are WebServer.cf, WebServer_unix.cf, and WebServer_win.cf. Do you want me to add a line into one of these? Thank you for your assistance. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 15:53 Message: Hm, yes, some more info is needed. For example, which OS and version (Linux, Win, Mac, ...), Which java (Sun, Openjdk, ...) and which version of it (1.5.x, 1.6.x, ...) do you use? Do you have access to the log / do you know how to configure Java Web Start logging? Or run it from commandline (DOS box, Terminal window, ...) with "start.sh" or "start.bat", than some warnings/errors/exceptions would be written to the commandline window. Sorry I was not able to answer so far, busy day; will try to come back to you today evening or tomorrow or weekend. Otherwise ping me again :) For first aid, you could put "auto pick color" and "marker" into the cf file and see whether anything else works, but I suspect any other GUI dialog might get stuck as well. I provide instruction to do that ASAP. Since I haven't heard of any such case before, I suspect it's rather a specific "OS + java version" problem than generic problem in Colossus, although I of course am interested to make it work whereever. BR, Clemens ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 14:42 Message: Do you need more information? Be happy to provide it. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101939&aid=3177305&group_id=1939 |
|
From: SourceForge.net <no...@so...> - 2011-02-10 19:15:47
|
Bugs item #3177305, was opened at 2011-02-10 12:40 Message generated for change (Comment added) made by You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101939&aid=3177305&group_id=1939 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: GUI Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Nobody/Anonymous (nobody) Assigned to: Clemens Katzer (cleka) Summary: Can not pick color to start game Initial Comment: Recently tried to play this game. I downloaded both the java version and the zip file. Both seem to start up just fine. The board will appear and another small window with choose a color pops up. I can not click on any color. I've tried pressing the letters that correspond to the colors. I've tried alt and ctrl combinations. Nothing works. I have to force the program to quit. Ideas? ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 19:15 Message: We were at a party and someone brought the board game Titan over. It confused the heck out of us (never even made it around once) but it seemed interesting. I did a search and found you making an app for it. So I thought I'd try it out. I am definitely brand new to Titan, so I expect to actually be the only player on here that gets defeated by your "dumb" AI. It is a quad core system. No I can not close the the dialog box with the small "X". In fact I can't do anything except shut it down. I selected Auto Pick Recruiters... and now I think it hangs up on actual recruiting now. It appears random too. Sometimes I can recruit a whole stack (7) without "locking up" and other times it will do it after the first recruit. (btw... sometimes I can't move a stack. That just a rule I'm not aware of?) ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 18:50 Message: Do you happen to know, do you have more than one CPU or CPU core? ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 18:43 Message: BTW, are you "well familiar with Titan, just new to use Colossus, or need to learn also "how game works, rules, strategy, etc." first? Once you are familar with the game and the usage, you could even try the public game server (by clicking the "WebClient" button), where you could find other "real people" to play against. (in contrast to the AI ("Artificial Intelligence") i.e. Robot players... However to notice is, people are usually online in afternoon/evening for US time. At other time you might log in there and be alone 30 or 60 mins before any other drop by. However, that's anyway more recommded only a) it does not hang for you any more and b) once you are "fluent" in playing. It's annoying for others when you need, let's say, 1.5 minutes for each individual move, split, recruit etc.... => Practicing to get faster better with AI players.They are all in all rather dump, but for first few weeks ok. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 18:35 Message: okay (or not okay), but that's something. In worst case I have to make you a special version which prints something to screen for every line of code before and around where it calls that "Pick Recruiter" dialog :)) That's what I meant, you might run into a "block" somewhat later with some other dialog. But the recruit dialog itself worked?? Strange; they are very similarly programmed. Some more "smalltalk" :o) > Made me green in fact. > I guess I can always play green. :p :) You can try: Window => Preferences => "Color" tab. Click on "Select" and choose another color. Next time you START a game it would choose that color for you automatically. (all those "Autoplay" options do certain things for you. So in fact you could enable "Auto Pick Recruiter", since that one is rather unimportant, as long as you can choose an actual Recruit. (so we can circumvent THIS cliff for now). But there might be other dialogs later to block you as well. And/or, in fact that's an interesting thing to try, whether that color chooser dialog would work??? If not, can you close it with the "x" shaped icon in upper right corner? (the initial color pick dialog CAN'T be closed that way, or rather, if one does, it reappears immediately.) So, sure, I'd like to continue troubleshoot this. Let's try that above for now, have to bring kids to bed now. -Cle. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 18:17 Message: So I've been running through this... moving, recruiting, etc... then I came to a point where it won't let me pick again. :/ Says: kevinnew: Pick Recruiter in Brush hex17 There is more than one way you can recruit this. Current content of legion Gr05: There is a Titan, Cyclops, Gargoyle, Gargoyle, Centaur, Centaur Pick the creature type you want to reveal: There is a Cyclops, Gargoyle I can't pick anything. Tried clicking on it numerous times. Nothing will select and it is stuck on this dialog box. Not sure why this happening... but thank you for sticking it out with me. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 18:12 Message: You are correct. I typed the name in, it found it and ran fine. Well.. I can play now. yay! ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 18:08 Message: K so, I opened the default kevin.cfg and added those lines to it: Auto\ pick\ markers=true Auto\ pick\ color=true Favorite\ colors=Green And it worked. The game started. Made me green in fact. So far so good to, I was able to split a stack. Move the unit. Recruit. And watched the computer take it's move as well. So not sure why it wasn't working but it is now. Want to continue to troubleshoot? I guess I can always play green. :p ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 18:06 Message: No, you cannot "pick" the name kevinnew - it does not offer all "names that may exist". You choose the name on "Players" tab, On left side, Choose HUman, on right side type the name. 2nd Line, choose e.g. "SimpleAI", it fills right side with <byColor> or something, thats ok, Type there in first line the name kevinnew, and when game starts, it goes looking for a file Colossus-kewvinnew.cfg [and if it wouldn't exist, create it, sooner or later, after GUI / preferences changes]. Now we pre-create that file, so that it skips the color picking dialog because it would find a value to say "auto pick" from the file. -Cle. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 17:59 Message: btw, I did try and run the Colossus.jnlp stand alone and brings up the welcome screen, I hit ok, and the Game setup screen appears. I still can't choose newkevin and when I run it, once again I can not pick any of the colors. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 17:57 Message: I'll start from the beginning: • I open a folder I extracted all the files to from the .zip • I double click on run.bat A cmd window pops up with: C:\Documents and Settings\kevin\Desktop\collossus>cd "c:\Documents and Settings\kevin\Desktop\collossus\" C:\Documents and Settings\kevin\Desktop\collossus>java -Djava.util.logging.config.file=logging.properties -XMx256M -jar Colossus.jar Then what looks like the main program appears. It is the game setup screen. I make player one a human player and choose Kevin as the type. I make the 2nd player a SimpleAI and choose <By color> for the type. I leave everything else as is. (btw the top says Running Colossus Version 0.12.0-beta1 (revision 4970) on etc...) • I pick New game. The game appears to start, I can see the grid in the background with all the hills, deserts, etc. A small box with Pick a Color appears. I can move this box around. But I can not pick a color. I've tried clicking on every single one. I've tried pressing G, e, o, etc. I've tried Ctrl/Alt combinations, nothing. I can not close it either. I have to force it to shutdown. In Task Manager it shows that it is still running... so I don't THINK it is locked up. I do NOT see any other windows anywhere that I might need to click. I've even tried Alt+Tab and Ctrl+Tab to check. • I went ahead and did a search for the .colossus folder. I found it. It has 5 files in it. Colossus-netclient.cfg Colossus-red.cfg Colossus-server.cfg Colossus-kevin.cfg Colossus-kevin1.cfg • I went ahead and created a new .cfg file. I named it Colossus-kevinnew.cfg. I added these lines to it: Auto\ pick\ markers=true Auto\ pick\ color=true Favorite\ colors=Green Interestingly here, when I started the program, I could not choose kevinnew. I could only still see kevin. I searched my entire computer to see if the .cfg files might also be somewhere else but I could only find them under \\documents and settings\kevin\desktop\collossus • Ok so I tried your command prompt idea. I even ran the command from within the path and I kept getting this error... Unable to access jarfile Colossus.jar I can't imagine it being a graphical error... the program still seems to be running fine, I just can't select any color. In Task Manager it doesn't say "not responding". So I will wait for your reply. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 17:06 Message: ok, XP with SP3 and Sun Java 6 ( 1.6.x ). All right, that should work. ( I may have in use SP2 but still). E.g. "Windows Vista" or "Windows 7" are more "exotic" for me. Sun Java is good also. Did you get the "Welcome to Release 0.12.0" dialog and click it away? (if not, it might have lurked around in the background hidden behind some other window and block the mouse/keyboard input or whatever ("modal dialog"). Should technically not happen/be possible, but one has seen stranger things happen.... The History.java is one of the source files, not relevant. > The only .cf files I could find are WebServer.cf, WebServer_unix.cf, > and WebServer_win.cf. Do you want me to add a line into one of these? No. They are part of the "sources" as well, in some sense. Once started, Colossus will create a directory ".colossus" (and 2 files in it) "somewhere on your computer" - in what it considers to be "your home directory". What that exactly is, might vary... The home directory is under Windows _often_ something like: C:\Documents and Settings\Mike if you logged in to the computer with username Mike. Often you get there with right-click on Start button => Explore => opens an explorer e.g. to C:\Documents and Settings\katzer\Start Menu for me as user katzer. So katzer would be my home dir. However on my computer it's configured differently, so my home directory is D:\katzer You can take an explorer (the Start => right-click => Explore thing) and type in the "path"/adress line in the top "%HOME%" and press return. (you may need to make it visible first with View => Toolbars => Address bar ). Inside there should be .colossus. Once you found that we are much further :) (normally, once masterboardboard is open, Help => About would tell the location but you don't even get there yet :-/ ) Inside there will be eventually several .cfg files (and perhaps a "saves" directory). Directory of D:\katzer\.colossus 07.02.2011 10:06 <DIR> . 07.02.2011 10:06 <DIR> .. 07.02.2011 15:12 1 997 Colossus-clemens.cfg 08.02.2011 19:49 4 425 Colossus-katzer.cfg 08.02.2011 19:49 2 069 Colossus-katzer1.cfg 28.07.2010 17:18 276 Colossus-netclient.cfg 08.02.2011 19:49 900 Colossus-server.cfg 07.02.2011 15:12 2 059 Colossus-test1.cfg 07.02.2011 22:00 586 Colossus-webclient.cfg 07.02.2011 10:56 <DIR> saves 7 File(s) 12 312 bytes 3 Dir(s) 21 313 040 384 bytes free D:\katzer\.colossus> You can ignore the "-server", -webclient and -netclient files for now - they are "internal". -katzer and -clemens etc. are "client preferences" files. Like, I played once a game as clemens, and when changed preferences such as the various auto-<do something>, position and size of windows etc., Colossus would save those to a file with that name. (some other, like Variant, type and names of players, Options in Startup dialog, are stored to the Colossus-server.cfg file). Usually when you get the Game Setup dialog (where you choose variant, count and type of players etc), first of them you make "Human" and name is initialized with the name you are logged on to the computer. Thus created with some text editor (notepad, if necessary), a textfile named Colossus-Mike.cfg (replace your name, of course). (if necessaary, right click in the right side of explorer, where the files are shown => New => Text Document => then there exists a file "New File.txt" (or similar). Click it, or F2 on it, change name to above. Put into that file the following three lines: Auto\ pick\ markers=true Auto\ pick\ color=true Favorite\ colors=Green Note the "backslash" ( \ ) in front of the space. Now if you start a game with your player name set to "Mike" the Pick... dialogs should not appear. So question is, what will get stuck then :) The other interesting thing to try is, if you can run from commandline (by typing that command, which will make the java command shown): java -Djava.util.logging.config.file=file=logging.properties -Xmx256M -jar Colossus.jar While Colossus runs, eventually happening warnings etc. would be printed to that Command window. But if it's a total "Graphics stuff somehow freezes" (like it sounds, that it does not accept click or key on any of the colors) ... hm. Tricky. Might be no warning/exception, just the graphics thread (EDT, Event Dispatcher Thread, techno babble... ;-) hangs. Let's see so far, how far we get with above. If we get that, I've already some ideas how to proceed. BR, Clemens ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 15:15 Message: Not sure if this will help... I found a file called History.java under my recent documents. It's pretty lengthy but it is listed below: package net.sf.colossus.server; import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import net.sf.colossus.common.Constants; import net.sf.colossus.game.Creature; import net.sf.colossus.game.EntrySide; import net.sf.colossus.game.Legion; import net.sf.colossus.game.Player; import net.sf.colossus.game.actions.AddCreatureAction; import net.sf.colossus.game.actions.Recruitment; import net.sf.colossus.util.Glob; import net.sf.colossus.variant.CreatureType; import net.sf.colossus.variant.MasterHex; import org.jdom.Element; /** * Stores game history as XML. * * @author David Ripton */ public class History { private static final Logger LOGGER = Logger.getLogger(History.class .getName()); /** * History: events that happened before last commit point */ private final Element root; /** * History elements/events that happened since the last commit/"snapshot". */ private final List<Element> recentEvents = new LinkedList<Element>(); /** * Set to true during the processing of {@link #fireEventsFromXML(Server)} * to avoid triggering events we just restored again. */ private boolean loading = false; /** * */ private final Element loadedRedoLog; private boolean isRedo = false; /** * Stores the surviving legions (this variable is not needed any more) * * While the history should contain all information to reproduce the game * state, the last set of legions is currently still loaded upfront since * they contain the battle-specific information. This collides with * replaying the game from history... * Now, since 08/2008, they are not stored as "survivorlegions" any more. * Instead, they are backed up internally (done inside PlayerServerSide), * all the history is replayed. This creates proper split prediction data * in all clients. After that, backup data is compared with result of * replay. * E.g. Legion count, their content, players eliminated must be in sync. * Then the replayed ones are discarded and the backedup ones restored * - which have the right legion state (moved, donor, summoned, ...) * * TODO align the history replay more with the original gameplay so we * don't need this anymore; * 08/2008:==> this is now to some part done. Still replay * events could be closer to original events (split, summon, * acquire, teleport, ...) , not just the "result" of that * event (reveal,add,remove effects). * * TODO instead: model the actual events instead of just result, * or at least add relevant info to history elements, so that all * replayed events carry all needed data so that they could also be * processed by event viewer (currently EV does not process anything * during replay). */ public History() { root = new Element("History"); // Dummy: loadedRedoLog = new Element("LoadedRedoLog"); } /** * Constructor used by "LoadGame" */ public History(Element loadGameRoot) { // Get the history elements and store them to "root" root = (Element)loadGameRoot.getChild("History").clone(); // Get the redo log content loadedRedoLog = (Element)loadGameRoot.getChild("Redo").clone(); } /** * All events before last commit */ Element getCopy() { return (Element)root.clone(); } /** * Reached a commit point: append all recent events to the history, * clear list of recent events; caller should do this together with creating * the next snapshot. */ void flushRecentToRoot() { for (Element el : recentEvents) { el.detach(); String name = el.getName(); // TODO later, when this are proper events (not XML elements), // ask rather from the Event whether it belongs copied to // history or not. // TODO At some point in future, put also those Move events // that reveal something to history, and make either the history // replay only send the relevant reveal messages, or make the // Clients during replay (but not redo part) ignore the "move" // and just process the revealing part. // Preferrably the latter, so that proper events show up in the // EventViewer. if (name.equals("Move") || name.equals("UndoMove")) { LOGGER.finest("Flush Redo to History: skipping " + name); } else if (name.equals("Recruit") || name.equals("UndoRecruit")) { // Skipping for now, because there are also the addCreature, // removeCreature and reveal Events still in history. // TODO make the Recruit/UndoRecruit history events during // replay properly, get rid of the "side effect" type of // entries in save game. LOGGER.finest("Flush Redo to History: skipping " + name); } else { root.addContent(el); } } recentEvents.clear(); } /** * @return A Redo Element, containing all events since last commit * i.e. which need to be REDOne on top of last commit point/snapshot */ Element getNewRedoLogElement() { Element redoLogElement = new Element("Redo"); for (Element el : recentEvents) { el.detach(); redoLogElement.addContent(el); } return redoLogElement; } /** * TODO reconsider name * TODO decide if we should move it all into one big handleEvent(GameEvent) method */ void addCreatureEvent(AddCreatureAction event, int turn, String reason) { if (loading) { return; } Element element = new Element("AddCreature"); element.setAttribute("markerId", event.getLegion().getMarkerId()); element.setAttribute("creatureName", event.getAddedCreatureType() .getName()); element.setAttribute("turn", "" + turn); element.setAttribute("reason", reason); recentEvents.add(element); } void removeCreatureEvent(Legion legion, CreatureType creature, int turn, String reason) { if (loading) { return; } Element event = new Element("RemoveCreature"); event.setAttribute("markerId", legion.getMarkerId()); event.setAttribute("creatureName", creature.getName()); event.setAttribute("turn", "" + turn); event.setAttribute("reason", reason); recentEvents.add(event); } void splitEvent(Legion parent, Legion child, List<CreatureType> splitoffs, int turn) { if (loading) { return; } Element event = new Element("Split"); event.setAttribute("parentId", parent.getMarkerId()); event.setAttribute("childId", child.getMarkerId()); event.setAttribute("turn", "" + turn); Element creatures = new Element("splitoffs"); event.addContent(creatures); for (CreatureType creatureType : splitoffs) { Element cr = new Element("creature"); cr.addContent(creatureType.getName()); creatures.addContent(cr); } recentEvents.add(event); } void mergeEvent(String splitoffId, String survivorId, int turn) { if (loading) { return; } Element event = new Element("Merge"); event.setAttribute("splitoffId", splitoffId); event.setAttribute("survivorId", survivorId); event.setAttribute("turn", "" + turn); recentEvents.add(event); } void revealEvent(boolean allPlayers, List<Player> players, Legion legion, List<CreatureType> creatures, int turn, String reason) { if (loading) { return; } if (creatures.isEmpty()) { // this happens e.g. when in final battle (titan vs. titan) // angel was called out of legion which was then empty, // and in the final updateAllLegionContents there is then // this empty legion... // TODO if this case can happen in a regular game no warning // should be logged LOGGER.log(Level.WARNING, "Called revealEvent(" + allPlayers + ", " + (players != null ? players.toString() : "-null-") + ", " + legion + ", " + creatures.toString() + ", " + turn + ") with empty creatureNames"); return; } Element event = new Element("Reveal"); event.setAttribute("markerId", legion.getMarkerId()); event.setAttribute("allPlayers", "" + allPlayers); event.setAttribute("turn", "" + turn); event.setAttribute("reason", reason); if (!allPlayers) { Element viewers = new Element("viewers"); event.addContent(viewers); Iterator<Player> it = players.iterator(); while (it.hasNext()) { String playerName = it.next().getName(); Element viewer = new Element("viewer"); viewer.addContent(playerName); viewers.addContent(viewer); } } Element creaturesElem = new Element("creatures"); event.addContent(creaturesElem); for (CreatureType creatureType : creatures) { Element creatureElem = new Element("creature"); creatureElem.addContent(creatureType.getName()); creaturesElem.addContent(creatureElem); } recentEvents.add(event); } void playerElimEvent(Player player, Player slayer, int turn) { if (loading) { return; } Element event = new Element("PlayerElim"); event.setAttribute("name", player.getName()); if (slayer != null) { event.setAttribute("slayer", slayer.getName()); } event.setAttribute("turn", "" + turn); recentEvents.add(event); } void movementRollEvent(Player player, int roll) { if (loading) { return; } Element event = new Element("MovementRoll"); event.setAttribute("playerName", player.getName()); event.setAttribute("roll", "" + roll); recentEvents.add(event); } void legionMoveEvent(Legion legion, MasterHex newHex, EntrySide entrySide, boolean teleport, CreatureType lord) { if (loading) { return; } Element event = new Element("Move"); event.setAttribute("markerId", legion.getMarkerId()); event.setAttribute("newHex", newHex.getLabel()); event.setAttribute("entrySide", entrySide.getLabel()); event.setAttribute("teleport", "" + teleport); String creNameOrTextNull = lord == null ? "null" : lord.getName(); event.setAttribute("revealedLord", creNameOrTextNull); recentEvents.add(event); } void legionUndoMoveEvent(Legion legion) { if (loading) { return; } Element event = new Element("UndoMove"); event.setAttribute("markerId", legion.getMarkerId()); recentEvents.add(event); } void recruitEvent(Legion legion, CreatureType recruit, CreatureType recruiter) { if (loading) { return; } Element event = new Element("Recruit"); event.setAttribute("markerId", legion.getMarkerId()); event.setAttribute("recruit", recruit.getName()); event.setAttribute("recruiter", recruiter == null ? "null" : recruiter .getName()); recentEvents.add(event); } void undoRecruitEvent(Legion legion) { if (loading) { return; } Element event = new Element("UndoRecruit"); event.setAttribute("markerId", legion.getMarkerId()); recentEvents.add(event); } /** * Fire all events from redoLog. * Elements from RedoLog are processed one by one and the corresponding * method is called on the Server object, pretty much as if a * ClientHandler would call it when receiving such a request from Client. * Note that in some cases overriding the processingCH is necessary * (because technically, this all currently happens while still the * connecting of last joining player is processed, so processingCH is * set to his ClientHandler). * * Note that "loading" is not set to true, so they DO GET ADDED to the * recentEvents list again. * * @param server The server on which to call all the actions to be redone */ void processRedoLog(Server server) { assert loadedRedoLog != null : "Loaded RedoLog should always " + "have a JDOM root element as backing store"; LOGGER.info("History: Start processing redo log"); isRedo = true; for (Object obj : loadedRedoLog.getChildren()) { Element el = (Element)obj; LOGGER.info("processing redo event " + el.getName()); fireEventFromElement(server, el); } isRedo = false; // TODO clear loadedRedoLog? LOGGER.info("Completed processing redo log"); } // unchecked conversions from JDOM @SuppressWarnings("unchecked") void fireEventsFromXML(Server server) { this.loading = true; assert root != null : "History should always have a " + " JDOM root element as backing store"; List<Element> kids = root.getChildren(); Iterator<Element> it = kids.iterator(); while (it.hasNext()) { Element el = it.next(); fireEventFromElement(server, el); } this.loading = false; } // unchecked conversions from JDOM @SuppressWarnings("unchecked") void fireEventFromElement(Server server, Element el) { GameServerSide game = server.getGame(); String eventName = el.getName(); String reasonPerhaps = el.getAttributeValue("reason"); String reason = (reasonPerhaps != null && !reasonPerhaps .equals("null")) ? reasonPerhaps : "<undefinedReason>"; if (eventName.equals("Reveal") && isRedo && reason.equals(Constants.reasonRecruiter)) { // Skip this because we redo the full recruit event // TODO LOGGER.finest("Skipping Reveal event (reason " + reason + ") during redo."); } else if (eventName.equals("AddCreature") && isRedo && reason.equals(Constants.reasonRecruited)) { // Skip this because we redo the full recruit event LOGGER.finest("Skipping AddCreature event (reason " + reason + ") during redo."); } else if (eventName.equals("RemoveCreature") && isRedo && reason.equals(Constants.reasonRecruited)) { // Skip this because we redo the full recruit event LOGGER.finest("Skipping RemoveCreature event (reason " + reason + ") during redo."); } else if (eventName.equals("Reveal")) { String allPlayers = el.getAttributeValue("allPlayers"); boolean all = allPlayers != null && allPlayers.equals("true"); String markerId = el.getAttributeValue("markerId"); List<String> playerNames = new ArrayList<String>(); Element viewEl = el.getChild("viewers"); int turn = Integer.parseInt(el.getAttributeValue("turn")); String playerName = null; if (viewEl != null) { List<Element> viewers = viewEl.getChildren(); Iterator<Element> it = viewers.iterator(); while (it.hasNext()) { Element viewer = it.next(); playerName = viewer.getTextNormalize(); playerNames.add(playerName); } } List<Element> creatureElements = el.getChild("creatures") .getChildren(); List<CreatureType> creatures = new ArrayList<CreatureType>(); for (Element creature : creatureElements) { String creatureName = creature.getTextNormalize(); creatures.add(game.getVariant() .getCreatureByName(creatureName)); } Player player = game.getPlayerByMarkerId(markerId); Legion legion; if (turn == 1 && player.getLegionByMarkerId(markerId) == null) { // there is no create event for the startup legions, // so we might need to create them for the reveal event legion = new LegionServerSide(markerId, null, player .getStartingTower(), player.getStartingTower(), player, game, creatures .toArray(new CreatureType[creatures.size()])); player.addLegion(legion); } else { legion = player.getLegionByMarkerId(markerId); } // TODO Now we get the reason from history element - does this // change effect/break anything? // String reason = "<unknown>"; if (((PlayerServerSide)player).getDeadBeforeSave()) { // Skip for players that will be dead by end of replay } else if (all) { server.allRevealCreatures(legion, creatures, reason); } else { server.oneRevealLegion(game.getPlayerByName(playerName), legion, creatures, reason); } } else if (eventName.equals("Split")) { String parentId = el.getAttributeValue("parentId"); String childId = el.getAttributeValue("childId"); String turnString = el.getAttributeValue("turn"); int turn = Integer.parseInt(turnString); List<String> creatureNames = new ArrayList<String>(); List<CreatureType> creatures = new ArrayList<CreatureType>(); List<Element> splitoffs = el.getChild("splitoffs").getChildren(); Iterator<Element> it = splitoffs.iterator(); while (it.hasNext()) { Element creature = it.next(); String creatureName = creature.getTextNormalize(); creatureNames.add(creatureName); creatures.add(game.getVariant() .getCreatureByName(creatureName)); } LegionServerSide parentLegion = game.getLegionByMarkerId(parentId); if (isRedo) { server.overrideProcessingCH(parentLegion.getPlayer()); server.doSplit(parentLegion, childId, creatures); server.overrideProcessingCH(parentLegion.getPlayer()); return; } // LegionServerSide.split(..) doesn't like us here since the parent // legion can't remove creatures (not there?) -- create child directly // instead PlayerServerSide player = parentLegion.getPlayer(); LegionServerSide childLegion; if (player.hasLegion(childId)) { childLegion = game.getLegionByMarkerId(childId); LOGGER.severe("During replay of history: child legion " + childId + " should not " + "exist yet (turn=" + turn + ")!!\n" + "Exists already with: " + Glob.glob(",", childLegion.getCreatureTypes()) + " but " + "should now be created with creatures: " + creatures); childLegion.remove(); } childLegion = new LegionServerSide(childId, null, parentLegion .getCurrentHex(), parentLegion.getCurrentHex(), player, game, creatures.toArray(new CreatureType[creatures.size()])); player.addLegion(childLegion); for (CreatureType creature : creatures) { parentLegion.removeCreature(creature, false, false); } // Skip for players that will be dead by end of replay if (!player.getDeadBeforeSave()) { server.allTellDidSplit(parentLegion, childLegion, turn, false); } } else if (eventName.equals("Merge")) { String splitoffId = el.getAttributeValue("splitoffId"); String survivorId = el.getAttributeValue("survivorId"); String turnString = el.getAttributeValue("turn"); int turn = Integer.parseInt(turnString); LegionServerSide splitoff = game.getLegionByMarkerId(splitoffId); LegionServerSide survivor = game.getLegionByMarkerId(survivorId); // Skip for players that will be dead by end of replay if (!survivor.getPlayer().getDeadBeforeSave()) { server.undidSplit(splitoff, survivor, false, turn); } // Add them back to parent: while (splitoff.getHeight() > 0) { CreatureType type = splitoff.removeCreature(0, false, false); survivor.addCreature(type, false); } splitoff.remove(false, false); } else if (eventName.equals("AddCreature")) { String markerId = el.getAttributeValue("markerId"); String creatureName = el.getAttributeValue("creatureName"); // TODO Now we get the reason from history element - does this // change effect/break anything? // String reason = "<unknown>"; LOGGER.finer("Adding creature '" + creatureName + "' to legion with markerId '" + markerId + "', reason '" + reason + "'"); LegionServerSide legion = game.getLegionByMarkerId(markerId); CreatureType creatureType = game.getVariant().getCreatureByName( creatureName); legion.addCreature(creatureType, false); // Skip for players that will be dead by end of replay if (!legion.getPlayer().getDeadBeforeSave()) { server.allTellAddCreature(new AddCreatureAction(legion, creatureType), false, reason); } LOGGER.finest("Legion '" + markerId + "' now contains " + legion.getCreatures()); } else if (eventName.equals("RemoveCreature")) { String markerId = el.getAttributeValue("markerId"); String creatureName = el.getAttributeValue("creatureName"); // TODO Now we get the reason from history element - does this // change effect/break anything? // String reason = "<unknown>"; LOGGER.finer("Removing creature '" + creatureName + "' from legion with markerId '" + markerId + "', reason '" + reason + "'"); LegionServerSide legion = game.getLegionByMarkerId(markerId); if (legion == null) { LOGGER.warning("removeCreature " + creatureName + " from legion " + markerId + ", legion is null"); return; } else { List<? extends Creature> cres = legion.getCreatures(); List<String> crenames = new ArrayList<String>(); for (Creature c : cres) { crenames.add(c.getName()); } } // don't use disbandIfEmpty parameter since that'll fire another history event CreatureType removedCritter = legion.removeCreature(game .getVariant().getCreatureByName(creatureName), false, false); // Skip for players that will be dead by end of replay // Skip if removedCritter is null => removeCreature did not find it, // so there is something wrong with the save game. No use to bother // all the clients with it. if (removedCritter != null && !legion.getPlayer().getDeadBeforeSave()) { server.allTellRemoveCreature(legion, removedCritter, false, reason); } LOGGER.finest("Legion '" + markerId + "' now contains " + legion.getCreatures()); if (legion.getHeight() == 0) { legion.remove(false, false); LOGGER.finer("Legion '" + markerId + "' removed"); } } else if (eventName.equals("PlayerElim")) { String playerName = el.getAttributeValue("name"); String slayerName = el.getAttributeValue("slayer"); Player player = game.getPlayerByName(playerName); Player slayer = game.getPlayerByNameIgnoreNull(slayerName); // Record the slayer and give him this player's legion markers. if (slayer != null) { ((PlayerServerSide)player).handleSlaying(slayer); } player.setDead(true); server.allUpdatePlayerInfo(); server.allTellPlayerElim(player, slayer, false); } else if (eventName.equals("MovementRoll")) { String playerName = el.getAttributeValue("playerName"); Player player = game.getPlayerByName(playerName); int roll = Integer.parseInt(el.getAttributeValue("roll")); ((PlayerServerSide)player).setMovementRoll(roll); game.movementRollEvent(player, roll); server.allTellMovementRoll(roll); } else if (eventName.equals("Move")) { String markerId = el.getAttributeValue("markerId"); String lordName = el.getAttributeValue("revealedLord"); String tele = el.getAttributeValue("teleport"); String newHexLabel = el.getAttributeValue("newHex"); String entrySideName = el.getAttributeValue("entrySide"); LegionServerSide legion = game.getLegionByMarkerId(markerId); CreatureType revealedLord = lordName.equals("null") ? null : game .getVariant().getCreatureByName(lordName); MasterHex newHex = server.getGame().getVariant().getMasterBoard() .getHexByLabel(newHexLabel); EntrySide entrySide = EntrySide.fromLabel(entrySideName); boolean teleport = tele != null && tele.equals("true"); LOGGER.finest("Legion Move redo event: \n" + " marker " + markerId + ", lordName " + revealedLord + " teleported " + teleport + " to hex " + newHex.getLabel() + " entrySide " + entrySide.toString()); server.overrideProcessingCH(legion.getPlayer()); server.doMove(legion, newHex, entrySide, teleport, revealedLord); server.restoreProcessingCH(); } else if (eventName.equals("UndoMove")) { String markerId = el.getAttributeValue("markerId"); LegionServerSide legion = game.getLegionByMarkerId(markerId); LOGGER.finest("Legion Undo Move redo event: \n" + " marker " + markerId); server.overrideProcessingCH(legion.getPlayer()); server.undoMove(legion); server.restoreProcessingCH(); } else if (eventName.equals("Recruit")) { String markerId = el.getAttributeValue("markerId"); String recruitName = el.getAttributeValue("recruit"); String recruiterName = el.getAttributeValue("recruiter"); LegionServerSide legion = game.getLegionByMarkerId(markerId); CreatureType recruit = game.getVariant().getCreatureByName( recruitName); CreatureType recruiter = recruiterName.equals("null") ? null : game.getVariant().getCreatureByName(recruiterName); LOGGER.finest("Recruit redo event: \n" + " marker " + markerId + " recruit " + recruit + " recruiter " + recruiter); server.overrideProcessingCH(legion.getPlayer()); server.doRecruit(new Recruitment(legion, recruit, recruiter)); server.restoreProcessingCH(); } else if (eventName.equals("UndoRecruit")) { String markerId = el.getAttributeValue("markerId"); LegionServerSide legion = game.getLegionByMarkerId(markerId); LOGGER .finest("UndoRecruit redo event: \n" + " marker " + markerId); server.overrideProcessingCH(legion.getPlayer()); server.undoRecruit(legion); server.restoreProcessingCH(); } else { LOGGER.warning("Unknown Redo element " + eventName); } } } ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 15:10 Message: Btw, it says Sun Java ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 14:20 Message: Ok, I'll try and answer as best I can... I'm not too sure how to get all of this but here goes: • I am running Windows XP Pro SP3. • When it first starts up it opens a dialog box for Java that says Java 6. • Sorry not sure about how to check the log. :/ • Commandline... is this what you are looking for? -- java -Djava.util.logging.config.file=file=logging.properties -Xmx256M -jar Colossus.jar • The only .cf files I could find are WebServer.cf, WebServer_unix.cf, and WebServer_win.cf. Do you want me to add a line into one of these? Thank you for your assistance. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 13:53 Message: Hm, yes, some more info is needed. For example, which OS and version (Linux, Win, Mac, ...), Which java (Sun, Openjdk, ...) and which version of it (1.5.x, 1.6.x, ...) do you use? Do you have access to the log / do you know how to configure Java Web Start logging? Or run it from commandline (DOS box, Terminal window, ...) with "start.sh" or "start.bat", than some warnings/errors/exceptions would be written to the commandline window. Sorry I was not able to answer so far, busy day; will try to come back to you today evening or tomorrow or weekend. Otherwise ping me again :) For first aid, you could put "auto pick color" and "marker" into the cf file and see whether anything else works, but I suspect any other GUI dialog might get stuck as well. I provide instruction to do that ASAP. Since I haven't heard of any such case before, I suspect it's rather a specific "OS + java version" problem than generic problem in Colossus, although I of course am interested to make it work whereever. BR, Clemens ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 12:42 Message: Do you need more information? Be happy to provide it. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101939&aid=3177305&group_id=1939 |
|
From: SourceForge.net <no...@so...> - 2011-02-10 18:50:17
|
Bugs item #3177305, was opened at 2011-02-10 14:40 Message generated for change (Comment added) made by cleka You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101939&aid=3177305&group_id=1939 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: GUI Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Nobody/Anonymous (nobody) Assigned to: Clemens Katzer (cleka) Summary: Can not pick color to start game Initial Comment: Recently tried to play this game. I downloaded both the java version and the zip file. Both seem to start up just fine. The board will appear and another small window with choose a color pops up. I can not click on any color. I've tried pressing the letters that correspond to the colors. I've tried alt and ctrl combinations. Nothing works. I have to force the program to quit. Ideas? ---------------------------------------------------------------------- >Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:50 Message: Do you happen to know, do you have more than one CPU or CPU core? ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:43 Message: BTW, are you "well familiar with Titan, just new to use Colossus, or need to learn also "how game works, rules, strategy, etc." first? Once you are familar with the game and the usage, you could even try the public game server (by clicking the "WebClient" button), where you could find other "real people" to play against. (in contrast to the AI ("Artificial Intelligence") i.e. Robot players... However to notice is, people are usually online in afternoon/evening for US time. At other time you might log in there and be alone 30 or 60 mins before any other drop by. However, that's anyway more recommded only a) it does not hang for you any more and b) once you are "fluent" in playing. It's annoying for others when you need, let's say, 1.5 minutes for each individual move, split, recruit etc.... => Practicing to get faster better with AI players.They are all in all rather dump, but for first few weeks ok. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:35 Message: okay (or not okay), but that's something. In worst case I have to make you a special version which prints something to screen for every line of code before and around where it calls that "Pick Recruiter" dialog :)) That's what I meant, you might run into a "block" somewhat later with some other dialog. But the recruit dialog itself worked?? Strange; they are very similarly programmed. Some more "smalltalk" :o) > Made me green in fact. > I guess I can always play green. :p :) You can try: Window => Preferences => "Color" tab. Click on "Select" and choose another color. Next time you START a game it would choose that color for you automatically. (all those "Autoplay" options do certain things for you. So in fact you could enable "Auto Pick Recruiter", since that one is rather unimportant, as long as you can choose an actual Recruit. (so we can circumvent THIS cliff for now). But there might be other dialogs later to block you as well. And/or, in fact that's an interesting thing to try, whether that color chooser dialog would work??? If not, can you close it with the "x" shaped icon in upper right corner? (the initial color pick dialog CAN'T be closed that way, or rather, if one does, it reappears immediately.) So, sure, I'd like to continue troubleshoot this. Let's try that above for now, have to bring kids to bed now. -Cle. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 20:17 Message: So I've been running through this... moving, recruiting, etc... then I came to a point where it won't let me pick again. :/ Says: kevinnew: Pick Recruiter in Brush hex17 There is more than one way you can recruit this. Current content of legion Gr05: There is a Titan, Cyclops, Gargoyle, Gargoyle, Centaur, Centaur Pick the creature type you want to reveal: There is a Cyclops, Gargoyle I can't pick anything. Tried clicking on it numerous times. Nothing will select and it is stuck on this dialog box. Not sure why this happening... but thank you for sticking it out with me. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 20:12 Message: You are correct. I typed the name in, it found it and ran fine. Well.. I can play now. yay! ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 20:08 Message: K so, I opened the default kevin.cfg and added those lines to it: Auto\ pick\ markers=true Auto\ pick\ color=true Favorite\ colors=Green And it worked. The game started. Made me green in fact. So far so good to, I was able to split a stack. Move the unit. Recruit. And watched the computer take it's move as well. So not sure why it wasn't working but it is now. Want to continue to troubleshoot? I guess I can always play green. :p ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 20:06 Message: No, you cannot "pick" the name kevinnew - it does not offer all "names that may exist". You choose the name on "Players" tab, On left side, Choose HUman, on right side type the name. 2nd Line, choose e.g. "SimpleAI", it fills right side with <byColor> or something, thats ok, Type there in first line the name kevinnew, and when game starts, it goes looking for a file Colossus-kewvinnew.cfg [and if it wouldn't exist, create it, sooner or later, after GUI / preferences changes]. Now we pre-create that file, so that it skips the color picking dialog because it would find a value to say "auto pick" from the file. -Cle. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 19:59 Message: btw, I did try and run the Colossus.jnlp stand alone and brings up the welcome screen, I hit ok, and the Game setup screen appears. I still can't choose newkevin and when I run it, once again I can not pick any of the colors. ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 19:57 Message: I'll start from the beginning: • I open a folder I extracted all the files to from the .zip • I double click on run.bat A cmd window pops up with: C:\Documents and Settings\kevin\Desktop\collossus>cd "c:\Documents and Settings\kevin\Desktop\collossus\" C:\Documents and Settings\kevin\Desktop\collossus>java -Djava.util.logging.config.file=logging.properties -XMx256M -jar Colossus.jar Then what looks like the main program appears. It is the game setup screen. I make player one a human player and choose Kevin as the type. I make the 2nd player a SimpleAI and choose <By color> for the type. I leave everything else as is. (btw the top says Running Colossus Version 0.12.0-beta1 (revision 4970) on etc...) • I pick New game. The game appears to start, I can see the grid in the background with all the hills, deserts, etc. A small box with Pick a Color appears. I can move this box around. But I can not pick a color. I've tried clicking on every single one. I've tried pressing G, e, o, etc. I've tried Ctrl/Alt combinations, nothing. I can not close it either. I have to force it to shutdown. In Task Manager it shows that it is still running... so I don't THINK it is locked up. I do NOT see any other windows anywhere that I might need to click. I've even tried Alt+Tab and Ctrl+Tab to check. • I went ahead and did a search for the .colossus folder. I found it. It has 5 files in it. Colossus-netclient.cfg Colossus-red.cfg Colossus-server.cfg Colossus-kevin.cfg Colossus-kevin1.cfg • I went ahead and created a new .cfg file. I named it Colossus-kevinnew.cfg. I added these lines to it: Auto\ pick\ markers=true Auto\ pick\ color=true Favorite\ colors=Green Interestingly here, when I started the program, I could not choose kevinnew. I could only still see kevin. I searched my entire computer to see if the .cfg files might also be somewhere else but I could only find them under \\documents and settings\kevin\desktop\collossus • Ok so I tried your command prompt idea. I even ran the command from within the path and I kept getting this error... Unable to access jarfile Colossus.jar I can't imagine it being a graphical error... the program still seems to be running fine, I just can't select any color. In Task Manager it doesn't say "not responding". So I will wait for your reply. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 19:06 Message: ok, XP with SP3 and Sun Java 6 ( 1.6.x ). All right, that should work. ( I may have in use SP2 but still). E.g. "Windows Vista" or "Windows 7" are more "exotic" for me. Sun Java is good also. Did you get the "Welcome to Release 0.12.0" dialog and click it away? (if not, it might have lurked around in the background hidden behind some other window and block the mouse/keyboard input or whatever ("modal dialog"). Should technically not happen/be possible, but one has seen stranger things happen.... The History.java is one of the source files, not relevant. > The only .cf files I could find are WebServer.cf, WebServer_unix.cf, > and WebServer_win.cf. Do you want me to add a line into one of these? No. They are part of the "sources" as well, in some sense. Once started, Colossus will create a directory ".colossus" (and 2 files in it) "somewhere on your computer" - in what it considers to be "your home directory". What that exactly is, might vary... The home directory is under Windows _often_ something like: C:\Documents and Settings\Mike if you logged in to the computer with username Mike. Often you get there with right-click on Start button => Explore => opens an explorer e.g. to C:\Documents and Settings\katzer\Start Menu for me as user katzer. So katzer would be my home dir. However on my computer it's configured differently, so my home directory is D:\katzer You can take an explorer (the Start => right-click => Explore thing) and type in the "path"/adress line in the top "%HOME%" and press return. (you may need to make it visible first with View => Toolbars => Address bar ). Inside there should be .colossus. Once you found that we are much further :) (normally, once masterboardboard is open, Help => About would tell the location but you don't even get there yet :-/ ) Inside there will be eventually several .cfg files (and perhaps a "saves" directory). Directory of D:\katzer\.colossus 07.02.2011 10:06 <DIR> . 07.02.2011 10:06 <DIR> .. 07.02.2011 15:12 1 997 Colossus-clemens.cfg 08.02.2011 19:49 4 425 Colossus-katzer.cfg 08.02.2011 19:49 2 069 Colossus-katzer1.cfg 28.07.2010 17:18 276 Colossus-netclient.cfg 08.02.2011 19:49 900 Colossus-server.cfg 07.02.2011 15:12 2 059 Colossus-test1.cfg 07.02.2011 22:00 586 Colossus-webclient.cfg 07.02.2011 10:56 <DIR> saves 7 File(s) 12 312 bytes 3 Dir(s) 21 313 040 384 bytes free D:\katzer\.colossus> You can ignore the "-server", -webclient and -netclient files for now - they are "internal". -katzer and -clemens etc. are "client preferences" files. Like, I played once a game as clemens, and when changed preferences such as the various auto-<do something>, position and size of windows etc., Colossus would save those to a file with that name. (some other, like Variant, type and names of players, Options in Startup dialog, are stored to the Colossus-server.cfg file). Usually when you get the Game Setup dialog (where you choose variant, count and type of players etc), first of them you make "Human" and name is initialized with the name you are logged on to the computer. Thus created with some text editor (notepad, if necessary), a textfile named Colossus-Mike.cfg (replace your name, of course). (if necessaary, right click in the right side of explorer, where the files are shown => New => Text Document => then there exists a file "New File.txt" (or similar). Click it, or F2 on it, change name to above. Put into that file the following three lines: Auto\ pick\ markers=true Auto\ pick\ color=true Favorite\ colors=Green Note the "backslash" ( \ ) in front of the space. Now if you start a game with your player name set to "Mike" the Pick... dialogs should not appear. So question is, what will get stuck then :) The other interesting thing to try is, if you can run from commandline (by typing that command, which will make the java command shown): java -Djava.util.logging.config.file=file=logging.properties -Xmx256M -jar Colossus.jar While Colossus runs, eventually happening warnings etc. would be printed to that Command window. But if it's a total "Graphics stuff somehow freezes" (like it sounds, that it does not accept click or key on any of the colors) ... hm. Tricky. Might be no warning/exception, just the graphics thread (EDT, Event Dispatcher Thread, techno babble... ;-) hangs. Let's see so far, how far we get with above. If we get that, I've already some ideas how to proceed. BR, Clemens ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 17:15 Message: Not sure if this will help... I found a file called History.java under my recent documents. It's pretty lengthy but it is listed below: package net.sf.colossus.server; import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import net.sf.colossus.common.Constants; import net.sf.colossus.game.Creature; import net.sf.colossus.game.EntrySide; import net.sf.colossus.game.Legion; import net.sf.colossus.game.Player; import net.sf.colossus.game.actions.AddCreatureAction; import net.sf.colossus.game.actions.Recruitment; import net.sf.colossus.util.Glob; import net.sf.colossus.variant.CreatureType; import net.sf.colossus.variant.MasterHex; import org.jdom.Element; /** * Stores game history as XML. * * @author David Ripton */ public class History { private static final Logger LOGGER = Logger.getLogger(History.class .getName()); /** * History: events that happened before last commit point */ private final Element root; /** * History elements/events that happened since the last commit/"snapshot". */ private final List<Element> recentEvents = new LinkedList<Element>(); /** * Set to true during the processing of {@link #fireEventsFromXML(Server)} * to avoid triggering events we just restored again. */ private boolean loading = false; /** * */ private final Element loadedRedoLog; private boolean isRedo = false; /** * Stores the surviving legions (this variable is not needed any more) * * While the history should contain all information to reproduce the game * state, the last set of legions is currently still loaded upfront since * they contain the battle-specific information. This collides with * replaying the game from history... * Now, since 08/2008, they are not stored as "survivorlegions" any more. * Instead, they are backed up internally (done inside PlayerServerSide), * all the history is replayed. This creates proper split prediction data * in all clients. After that, backup data is compared with result of * replay. * E.g. Legion count, their content, players eliminated must be in sync. * Then the replayed ones are discarded and the backedup ones restored * - which have the right legion state (moved, donor, summoned, ...) * * TODO align the history replay more with the original gameplay so we * don't need this anymore; * 08/2008:==> this is now to some part done. Still replay * events could be closer to original events (split, summon, * acquire, teleport, ...) , not just the "result" of that * event (reveal,add,remove effects). * * TODO instead: model the actual events instead of just result, * or at least add relevant info to history elements, so that all * replayed events carry all needed data so that they could also be * processed by event viewer (currently EV does not process anything * during replay). */ public History() { root = new Element("History"); // Dummy: loadedRedoLog = new Element("LoadedRedoLog"); } /** * Constructor used by "LoadGame" */ public History(Element loadGameRoot) { // Get the history elements and store them to "root" root = (Element)loadGameRoot.getChild("History").clone(); // Get the redo log content loadedRedoLog = (Element)loadGameRoot.getChild("Redo").clone(); } /** * All events before last commit */ Element getCopy() { return (Element)root.clone(); } /** * Reached a commit point: append all recent events to the history, * clear list of recent events; caller should do this together with creating * the next snapshot. */ void flushRecentToRoot() { for (Element el : recentEvents) { el.detach(); String name = el.getName(); // TODO later, when this are proper events (not XML elements), // ask rather from the Event whether it belongs copied to // history or not. // TODO At some point in future, put also those Move events // that reveal something to history, and make either the history // replay only send the relevant reveal messages, or make the // Clients during replay (but not redo part) ignore the "move" // and just process the revealing part. // Preferrably the latter, so that proper events show up in the // EventViewer. if (name.equals("Move") || name.equals("UndoMove")) { LOGGER.finest("Flush Redo to History: skipping " + name); } else if (name.equals("Recruit") || name.equals("UndoRecruit")) { // Skipping for now, because there are also the addCreature, // removeCreature and reveal Events still in history. // TODO make the Recruit/UndoRecruit history events during // replay properly, get rid of the "side effect" type of // entries in save game. LOGGER.finest("Flush Redo to History: skipping " + name); } else { root.addContent(el); } } recentEvents.clear(); } /** * @return A Redo Element, containing all events since last commit * i.e. which need to be REDOne on top of last commit point/snapshot */ Element getNewRedoLogElement() { Element redoLogElement = new Element("Redo"); for (Element el : recentEvents) { el.detach(); redoLogElement.addContent(el); } return redoLogElement; } /** * TODO reconsider name * TODO decide if we should move it all into one big handleEvent(GameEvent) method */ void addCreatureEvent(AddCreatureAction event, int turn, String reason) { if (loading) { return; } Element element = new Element("AddCreature"); element.setAttribute("markerId", event.getLegion().getMarkerId()); element.setAttribute("creatureName", event.getAddedCreatureType() .getName()); element.setAttribute("turn", "" + turn); element.setAttribute("reason", reason); recentEvents.add(element); } void removeCreatureEvent(Legion legion, CreatureType creature, int turn, String reason) { if (loading) { return; } Element event = new Element("RemoveCreature"); event.setAttribute("markerId", legion.getMarkerId()); event.setAttribute("creatureName", creature.getName()); event.setAttribute("turn", "" + turn); event.setAttribute("reason", reason); recentEvents.add(event); } void splitEvent(Legion parent, Legion child, List<CreatureType> splitoffs, int turn) { if (loading) { return; } Element event = new Element("Split"); event.setAttribute("parentId", parent.getMarkerId()); event.setAttribute("childId", child.getMarkerId()); event.setAttribute("turn", "" + turn); Element creatures = new Element("splitoffs"); event.addContent(creatures); for (CreatureType creatureType : splitoffs) { Element cr = new Element("creature"); cr.addContent(creatureType.getName()); creatures.addContent(cr); } recentEvents.add(event); } void mergeEvent(String splitoffId, String survivorId, int turn) { if (loading) { return; } Element event = new Element("Merge"); event.setAttribute("splitoffId", splitoffId); event.setAttribute("survivorId", survivorId); event.setAttribute("turn", "" + turn); recentEvents.add(event); } void revealEvent(boolean allPlayers, List<Player> players, Legion legion, List<CreatureType> creatures, int turn, String reason) { if (loading) { return; } if (creatures.isEmpty()) { // this happens e.g. when in final battle (titan vs. titan) // angel was called out of legion which was then empty, // and in the final updateAllLegionContents there is then // this empty legion... // TODO if this case can happen in a regular game no warning // should be logged LOGGER.log(Level.WARNING, "Called revealEvent(" + allPlayers + ", " + (players != null ? players.toString() : "-null-") + ", " + legion + ", " + creatures.toString() + ", " + turn + ") with empty creatureNames"); return; } Element event = new Element("Reveal"); event.setAttribute("markerId", legion.getMarkerId()); event.setAttribute("allPlayers", "" + allPlayers); event.setAttribute("turn", "" + turn); event.setAttribute("reason", reason); if (!allPlayers) { Element viewers = new Element("viewers"); event.addContent(viewers); Iterator<Player> it = players.iterator(); while (it.hasNext()) { String playerName = it.next().getName(); Element viewer = new Element("viewer"); viewer.addContent(playerName); viewers.addContent(viewer); } } Element creaturesElem = new Element("creatures"); event.addContent(creaturesElem); for (CreatureType creatureType : creatures) { Element creatureElem = new Element("creature"); creatureElem.addContent(creatureType.getName()); creaturesElem.addContent(creatureElem); } recentEvents.add(event); } void playerElimEvent(Player player, Player slayer, int turn) { if (loading) { return; } Element event = new Element("PlayerElim"); event.setAttribute("name", player.getName()); if (slayer != null) { event.setAttribute("slayer", slayer.getName()); } event.setAttribute("turn", "" + turn); recentEvents.add(event); } void movementRollEvent(Player player, int roll) { if (loading) { return; } Element event = new Element("MovementRoll"); event.setAttribute("playerName", player.getName()); event.setAttribute("roll", "" + roll); recentEvents.add(event); } void legionMoveEvent(Legion legion, MasterHex newHex, EntrySide entrySide, boolean teleport, CreatureType lord) { if (loading) { return; } Element event = new Element("Move"); event.setAttribute("markerId", legion.getMarkerId()); event.setAttribute("newHex", newHex.getLabel()); event.setAttribute("entrySide", entrySide.getLabel()); event.setAttribute("teleport", "" + teleport); String creNameOrTextNull = lord == null ? "null" : lord.getName(); event.setAttribute("revealedLord", creNameOrTextNull); recentEvents.add(event); } void legionUndoMoveEvent(Legion legion) { if (loading) { return; } Element event = new Element("UndoMove"); event.setAttribute("markerId", legion.getMarkerId()); recentEvents.add(event); } void recruitEvent(Legion legion, CreatureType recruit, CreatureType recruiter) { if (loading) { return; } Element event = new Element("Recruit"); event.setAttribute("markerId", legion.getMarkerId()); event.setAttribute("recruit", recruit.getName()); event.setAttribute("recruiter", recruiter == null ? "null" : recruiter .getName()); recentEvents.add(event); } void undoRecruitEvent(Legion legion) { if (loading) { return; } Element event = new Element("UndoRecruit"); event.setAttribute("markerId", legion.getMarkerId()); recentEvents.add(event); } /** * Fire all events from redoLog. * Elements from RedoLog are processed one by one and the corresponding * method is called on the Server object, pretty much as if a * ClientHandler would call it when receiving such a request from Client. * Note that in some cases overriding the processingCH is necessary * (because technically, this all currently happens while still the * connecting of last joining player is processed, so processingCH is * set to his ClientHandler). * * Note that "loading" is not set to true, so they DO GET ADDED to the * recentEvents list again. * * @param server The server on which to call all the actions to be redone */ void processRedoLog(Server server) { assert loadedRedoLog != null : "Loaded RedoLog should always " + "have a JDOM root element as backing store"; LOGGER.info("History: Start processing redo log"); isRedo = true; for (Object obj : loadedRedoLog.getChildren()) { Element el = (Element)obj; LOGGER.info("processing redo event " + el.getName()); fireEventFromElement(server, el); } isRedo = false; // TODO clear loadedRedoLog? LOGGER.info("Completed processing redo log"); } // unchecked conversions from JDOM @SuppressWarnings("unchecked") void fireEventsFromXML(Server server) { this.loading = true; assert root != null : "History should always have a " + " JDOM root element as backing store"; List<Element> kids = root.getChildren(); Iterator<Element> it = kids.iterator(); while (it.hasNext()) { Element el = it.next(); fireEventFromElement(server, el); } this.loading = false; } // unchecked conversions from JDOM @SuppressWarnings("unchecked") void fireEventFromElement(Server server, Element el) { GameServerSide game = server.getGame(); String eventName = el.getName(); String reasonPerhaps = el.getAttributeValue("reason"); String reason = (reasonPerhaps != null && !reasonPerhaps .equals("null")) ? reasonPerhaps : "<undefinedReason>"; if (eventName.equals("Reveal") && isRedo && reason.equals(Constants.reasonRecruiter)) { // Skip this because we redo the full recruit event // TODO LOGGER.finest("Skipping Reveal event (reason " + reason + ") during redo."); } else if (eventName.equals("AddCreature") && isRedo && reason.equals(Constants.reasonRecruited)) { // Skip this because we redo the full recruit event LOGGER.finest("Skipping AddCreature event (reason " + reason + ") during redo."); } else if (eventName.equals("RemoveCreature") && isRedo && reason.equals(Constants.reasonRecruited)) { // Skip this because we redo the full recruit event LOGGER.finest("Skipping RemoveCreature event (reason " + reason + ") during redo."); } else if (eventName.equals("Reveal")) { String allPlayers = el.getAttributeValue("allPlayers"); boolean all = allPlayers != null && allPlayers.equals("true"); String markerId = el.getAttributeValue("markerId"); List<String> playerNames = new ArrayList<String>(); Element viewEl = el.getChild("viewers"); int turn = Integer.parseInt(el.getAttributeValue("turn")); String playerName = null; if (viewEl != null) { List<Element> viewers = viewEl.getChildren(); Iterator<Element> it = viewers.iterator(); while (it.hasNext()) { Element viewer = it.next(); playerName = viewer.getTextNormalize(); playerNames.add(playerName); } } List<Element> creatureElements = el.getChild("creatures") .getChildren(); List<CreatureType> creatures = new ArrayList<CreatureType>(); for (Element creature : creatureElements) { String creatureName = creature.getTextNormalize(); creatures.add(game.getVariant() .getCreatureByName(creatureName)); } Player player = game.getPlayerByMarkerId(markerId); Legion legion; if (turn == 1 && player.getLegionByMarkerId(markerId) == null) { // there is no create event for the startup legions, // so we might need to create them for the reveal event legion = new LegionServerSide(markerId, null, player .getStartingTower(), player.getStartingTower(), player, game, creatures .toArray(new CreatureType[creatures.size()])); player.addLegion(legion); } else { legion = player.getLegionByMarkerId(markerId); } // TODO Now we get the reason from history element - does this // change effect/break anything? // String reason = "<unknown>"; if (((PlayerServerSide)player).getDeadBeforeSave()) { // Skip for players that will be dead by end of replay } else if (all) { server.allRevealCreatures(legion, creatures, reason); } else { server.oneRevealLegion(game.getPlayerByName(playerName), legion, creatures, reason); } } else if (eventName.equals("Split")) { String parentId = el.getAttributeValue("parentId"); String childId = el.getAttributeValue("childId"); String turnString = el.getAttributeValue("turn"); int turn = Integer.parseInt(turnString); List<String> creatureNames = new ArrayList<String>(); List<CreatureType> creatures = new ArrayList<CreatureType>(); List<Element> splitoffs = el.getChild("splitoffs").getChildren(); Iterator<Element> it = splitoffs.iterator(); while (it.hasNext()) { Element creature = it.next(); String creatureName = creature.getTextNormalize(); creatureNames.add(creatureName); creatures.add(game.getVariant() .getCreatureByName(creatureName)); } LegionServerSide parentLegion = game.getLegionByMarkerId(parentId); if (isRedo) { server.overrideProcessingCH(parentLegion.getPlayer()); server.doSplit(parentLegion, childId, creatures); server.overrideProcessingCH(parentLegion.getPlayer()); return; } // LegionServerSide.split(..) doesn't like us here since the parent // legion can't remove creatures (not there?) -- create child directly // instead PlayerServerSide player = parentLegion.getPlayer(); LegionServerSide childLegion; if (player.hasLegion(childId)) { childLegion = game.getLegionByMarkerId(childId); LOGGER.severe("During replay of history: child legion " + childId + " should not " + "exist yet (turn=" + turn + ")!!\n" + "Exists already with: " + Glob.glob(",", childLegion.getCreatureTypes()) + " but " + "should now be created with creatures: " + creatures); childLegion.remove(); } childLegion = new LegionServerSide(childId, null, parentLegion .getCurrentHex(), parentLegion.getCurrentHex(), player, game, creatures.toArray(new CreatureType[creatures.size()])); player.addLegion(childLegion); for (CreatureType creature : creatures) { parentLegion.removeCreature(creature, false, false); } // Skip for players that will be dead by end of replay if (!player.getDeadBeforeSave()) { server.allTellDidSplit(parentLegion, childLegion, turn, false); } } else if (eventName.equals("Merge")) { String splitoffId = el.getAttributeValue("splitoffId"); String survivorId = el.getAttributeValue("survivorId"); String turnString = el.getAttributeValue("turn"); int turn = Integer.parseInt(turnString); LegionServerSide splitoff = game.getLegionByMarkerId(splitoffId); LegionServerSide survivor = game.getLegionByMarkerId(survivorId); // Skip for players that will be dead by end of replay if (!survivor.getPlayer().getDeadBeforeSave()) { server.undidSplit(splitoff, survivor, false, turn); } // Add them back to parent: while (splitoff.getHeight() > 0) { CreatureType type = splitoff.removeCreature(0, false, false); survivor.addCreature(type, false); } splitoff.remove(false, false); } else if (eventName.equals("AddCreature")) { String markerId = el.getAttributeValue("markerId"); String creatureName = el.getAttributeValue("creatureName"); // TODO Now we get the reason from history element - does this // change effect/break anything? // String reason = "<unknown>"; LOGGER.finer("Adding creature '" + creatureName + "' to legion with markerId '" + markerId + "', reason '" + reason + "'"); LegionServerSide legion = game.getLegionByMarkerId(markerId); CreatureType creatureType = game.getVariant().getCreatureByName( creatureName); legion.addCreature(creatureType, false); // Skip for players that will be dead by end of replay if (!legion.getPlayer().getDeadBeforeSave()) { server.allTellAddCreature(new AddCreatureAction(legion, creatureType), false, reason); } LOGGER.finest("Legion '" + markerId + "' now contains " + legion.getCreatures()); } else if (eventName.equals("RemoveCreature")) { String markerId = el.getAttributeValue("markerId"); String creatureName = el.getAttributeValue("creatureName"); // TODO Now we get the reason from history element - does this // change effect/break anything? // String reason = "<unknown>"; LOGGER.finer("Removing creature '" + creatureName + "' from legion with markerId '" + markerId + "', reason '" + reason + "'"); LegionServerSide legion = game.getLegionByMarkerId(markerId); if (legion == null) { LOGGER.warning("removeCreature " + creatureName + " from legion " + markerId + ", legion is null"); return; } else { List<? extends Creature> cres = legion.getCreatures(); List<String> crenames = new ArrayList<String>(); for (Creature c : cres) { crenames.add(c.getName()); } } // don't use disbandIfEmpty parameter since that'll fire another history event CreatureType removedCritter = legion.removeCreature(game .getVariant().getCreatureByName(creatureName), false, false); // Skip for players that will be dead by end of replay // Skip if removedCritter is null => removeCreature did not find it, // so there is something wrong with the save game. No use to bother // all the clients with it. if (removedCritter != null && !legion.getPlayer().getDeadBeforeSave()) { server.allTellRemoveCreature(legion, removedCritter, false, reason); } LOGGER.finest("Legion '" + markerId + "' now contains " + legion.getCreatures()); if (legion.getHeight() == 0) { legion.remove(false, false); LOGGER.finer("Legion '" + markerId + "' removed"); } } else if (eventName.equals("PlayerElim")) { String playerName = el.getAttributeValue("name"); String slayerName = el.getAttributeValue("slayer"); Player player = game.getPlayerByName(playerName); Player slayer = game.getPlayerByNameIgnoreNull(slayerName); // Record the slayer and give him this player's legion markers. if (slayer != null) { ((PlayerServerSide)player).handleSlaying(slayer); } player.setDead(true); server.allUpdatePlayerInfo(); server.allTellPlayerElim(player, slayer, false); } else if (eventName.equals("MovementRoll")) { String playerName = el.getAttributeValue("playerName"); Player player = game.getPlayerByName(playerName); int roll = Integer.parseInt(el.getAttributeValue("roll")); ((PlayerServerSide)player).setMovementRoll(roll); game.movementRollEvent(player, roll); server.allTellMovementRoll(roll); } else if (eventName.equals("Move")) { String markerId = el.getAttributeValue("markerId"); String lordName = el.getAttributeValue("revealedLord"); String tele = el.getAttributeValue("teleport"); String newHexLabel = el.getAttributeValue("newHex"); String entrySideName = el.getAttributeValue("entrySide"); LegionServerSide legion = game.getLegionByMarkerId(markerId); CreatureType revealedLord = lordName.equals("null") ? null : game .getVariant().getCreatureByName(lordName); MasterHex newHex = server.getGame().getVariant().getMasterBoard() .getHexByLabel(newHexLabel); EntrySide entrySide = EntrySide.fromLabel(entrySideName); boolean teleport = tele != null && tele.equals("true"); LOGGER.finest("Legion Move redo event: \n" + " marker " + markerId + ", lordName " + revealedLord + " teleported " + teleport + " to hex " + newHex.getLabel() + " entrySide " + entrySide.toString()); server.overrideProcessingCH(legion.getPlayer()); server.doMove(legion, newHex, entrySide, teleport, revealedLord); server.restoreProcessingCH(); } else if (eventName.equals("UndoMove")) { String markerId = el.getAttributeValue("markerId"); LegionServerSide legion = game.getLegionByMarkerId(markerId); LOGGER.finest("Legion Undo Move redo event: \n" + " marker " + markerId); server.overrideProcessingCH(legion.getPlayer()); server.undoMove(legion); server.restoreProcessingCH(); } else if (eventName.equals("Recruit")) { String markerId = el.getAttributeValue("markerId"); String recruitName = el.getAttributeValue("recruit"); String recruiterName = el.getAttributeValue("recruiter"); LegionServerSide legion = game.getLegionByMarkerId(markerId); CreatureType recruit = game.getVariant().getCreatureByName( recruitName); CreatureType recruiter = recruiterName.equals("null") ? null : game.getVariant().getCreatureByName(recruiterName); LOGGER.finest("Recruit redo event: \n" + " marker " + markerId + " recruit " + recruit + " recruiter " + recruiter); server.overrideProcessingCH(legion.getPlayer()); server.doRecruit(new Recruitment(legion, recruit, recruiter)); server.restoreProcessingCH(); } else if (eventName.equals("UndoRecruit")) { String markerId = el.getAttributeValue("markerId"); LegionServerSide legion = game.getLegionByMarkerId(markerId); LOGGER .finest("UndoRecruit redo event: \n" + " marker " + markerId); server.overrideProcessingCH(legion.getPlayer()); server.undoRecruit(legion); server.restoreProcessingCH(); } else { LOGGER.warning("Unknown Redo element " + eventName); } } } ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 17:10 Message: Btw, it says Sun Java ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 16:20 Message: Ok, I'll try and answer as best I can... I'm not too sure how to get all of this but here goes: • I am running Windows XP Pro SP3. • When it first starts up it opens a dialog box for Java that says Java 6. • Sorry not sure about how to check the log. :/ • Commandline... is this what you are looking for? -- java -Djava.util.logging.config.file=file=logging.properties -Xmx256M -jar Colossus.jar • The only .cf files I could find are WebServer.cf, WebServer_unix.cf, and WebServer_win.cf. Do you want me to add a line into one of these? Thank you for your assistance. ---------------------------------------------------------------------- Comment By: Clemens Katzer (cleka) Date: 2011-02-10 15:53 Message: Hm, yes, some more info is needed. For example, which OS and version (Linux, Win, Mac, ...), Which java (Sun, Openjdk, ...) and which version of it (1.5.x, 1.6.x, ...) do you use? Do you have access to the log / do you know how to configure Java Web Start logging? Or run it from commandline (DOS box, Terminal window, ...) with "start.sh" or "start.bat", than some warnings/errors/exceptions would be written to the commandline window. Sorry I was not able to answer so far, busy day; will try to come back to you today evening or tomorrow or weekend. Otherwise ping me again :) For first aid, you could put "auto pick color" and "marker" into the cf file and see whether anything else works, but I suspect any other GUI dialog might get stuck as well. I provide instruction to do that ASAP. Since I haven't heard of any such case before, I suspect it's rather a specific "OS + java version" problem than generic problem in Colossus, although I of course am interested to make it work whereever. BR, Clemens ---------------------------------------------------------------------- Comment By: https://me.yahoo.com/a/62Xw4SUZ () Date: 2011-02-10 14:42 Message: Do you need more information? Be happy to provide it. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101939&aid=3177305&group_id=1939 |