Developing Bugs
Post MTG Forge Related Programming Questions Here
Moderators: timmermac, Blacksmith, KrazyTheFox, Agetian, friarsol, CCGHQ Admins
Re: Developing Bugs
by Max mtg » 14 Apr 2013, 09:25
It looks so. I am sorry
Will we release a patch for 3.1.12 to fix this one and all the concurrent modification exceptions?
(Deploy only the jarfile and tell people to replace the old one with it)
Will we release a patch for 3.1.12 to fix this one and all the concurrent modification exceptions?
(Deploy only the jarfile and tell people to replace the old one with it)
Single class for single responsibility.
- Max mtg
- Programmer
- Posts: 1997
- Joined: 02 Jul 2011, 14:26
- Has thanked: 173 times
- Been thanked: 334 times
Re: Developing Bugs
by Chris H. » 14 Apr 2013, 11:45
Max mtg wrote:It looks so. I am sorry
Will we release a patch for 3.1.12 to fix this one and all the concurrent modification exceptions?
(Deploy only the jarfile and tell people to replace the old one with it)
I think that it might be best to post a link to the snapshot build.
-
Chris H. - Forge Moderator
- Posts: 6320
- Joined: 04 Nov 2008, 12:11
- Location: Mac OS X Yosemite
- Has thanked: 644 times
- Been thanked: 643 times
Re: Developing Bugs
by Max mtg » 14 Apr 2013, 12:00
Will be great, especially if it's easy enough for everyone to understand how to patch their installation.Chris H. wrote:I think that it might be best to post a link to the snapshot build.
I think it will be of help, if you also update the topmost message of the 3.12 announcement.
Single class for single responsibility.
- Max mtg
- Programmer
- Posts: 1997
- Joined: 02 Jul 2011, 14:26
- Has thanked: 173 times
- Been thanked: 334 times
Re: Developing Bugs
by Chris H. » 14 Apr 2013, 14:08
Max mtg wrote:Will be great, especially if it's easy enough for everyone to understand how to patch their installation.
I think it will be of help, if you also update the topmost message of the 3.12 announcement.
Yes, downloading a snapshot with a direct link to it's URL is probably easiest for the user base.
I made your URLs a little more user friendly and I also added them to the first message.

-
Chris H. - Forge Moderator
- Posts: 6320
- Joined: 04 Nov 2008, 12:11
- Location: Mac OS X Yosemite
- Has thanked: 644 times
- Been thanked: 643 times
Re: Developing Bugs
by Sloth » 08 May 2013, 20:24
This bug has been reported for 1.3.14, but is still there:
gos wrote:Description: I pressed cancel when prompted to sacrifice creatures for Phyrexian Dreadnought 's triggered ability.
- RuntimeException | Open
- Code: Select all
Forge Version: 1.3.14-r21289
Operating System: Windows 7 6.1 amd64
Java Version: 1.7.0_07 Oracle Corporation
java.lang.RuntimeException: Trying to unlock input which is not locked! Do check when your threads terminate!
at forge.control.input.InputControl.unlock(InputControl.java:208)
at forge.FThreads$1.run(FThreads.java:114)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
-
Sloth - Programmer
- Posts: 3498
- Joined: 23 Jun 2009, 19:40
- Has thanked: 125 times
- Been thanked: 507 times
Re: Developing Bugs
by Max mtg » 08 May 2013, 20:47
removed that excessive call in latest commit - r21396.
The very commit is hugely changing how match and UI interact.
[*] new MatchController is now created each time game is started.
[*] UI is considered to attach to a match and thus become able to display it. At the moment UI is attached to a match before the game starts, no guarantees it would correctly join at a different moment - but this can be improved, as well as UI can be made detacheable.
[*] Match is started completelly from EDT thread - that means no more black screens on game start. If anything is wrong user should see an exception. However, this should work even in a different way:
1. new MatchController(...) - no matter the thread.
2. currentGame = new GameState(...) - preferrably from nonEDT
3. attachToUi - called from EDT
4. GameNew.newGame - from non-EDT
--- but this is for a later time.
[*] Match is no longer avaliable in FModel class. So that this class retains only card/edition databases and assets like decks and quest -- that could become user account data once... Match instance is now found in FControl, meaning 'the match where gui player plays'. There could potentially exist more than one instances of MatchController (held in some collection somewhere near Lobby), but it is another future problem.
PS: I switched to Java 7 runtime (and still using jdk 6 to develop) - the ingame animations runs way smoother, so consider updating runtimes if you haven't done so yet.
The very commit is hugely changing how match and UI interact.
[*] new MatchController is now created each time game is started.
[*] UI is considered to attach to a match and thus become able to display it. At the moment UI is attached to a match before the game starts, no guarantees it would correctly join at a different moment - but this can be improved, as well as UI can be made detacheable.
[*] Match is started completelly from EDT thread - that means no more black screens on game start. If anything is wrong user should see an exception. However, this should work even in a different way:
1. new MatchController(...) - no matter the thread.
2. currentGame = new GameState(...) - preferrably from nonEDT
3. attachToUi - called from EDT
4. GameNew.newGame - from non-EDT
--- but this is for a later time.
[*] Match is no longer avaliable in FModel class. So that this class retains only card/edition databases and assets like decks and quest -- that could become user account data once... Match instance is now found in FControl, meaning 'the match where gui player plays'. There could potentially exist more than one instances of MatchController (held in some collection somewhere near Lobby), but it is another future problem.
PS: I switched to Java 7 runtime (and still using jdk 6 to develop) - the ingame animations runs way smoother, so consider updating runtimes if you haven't done so yet.
Single class for single responsibility.
- Max mtg
- Programmer
- Posts: 1997
- Joined: 02 Jul 2011, 14:26
- Has thanked: 173 times
- Been thanked: 334 times
Re: Developing Bugs
by Sloth » 12 May 2013, 12:36
@Max: getColorByProminence is broken (r21442), it always return Red and Green.
-
Sloth - Programmer
- Posts: 3498
- Joined: 23 Jun 2009, 19:40
- Has thanked: 125 times
- Been thanked: 507 times
Re: Developing Bugs
by Max mtg » 12 May 2013, 14:41
That's a regretable miss,Sloth wrote:@Max: getColorByProminence is broken (r21442), it always return Red and Green.
I've written a different method body for the r21451. UW deck has just received correct colors
Single class for single responsibility.
- Max mtg
- Programmer
- Posts: 1997
- Joined: 02 Jul 2011, 14:26
- Has thanked: 173 times
- Been thanked: 334 times
Re: Developing Bugs
by Sloth » 13 May 2013, 19:11
Description: AI had triggered an encoded Hands of Binding and two spell cast triggers went on the stack as well. The game continued normally.
- ConcurrentModificationException | Open
- Code: Select all
Forge Version: SVN
Operating System: Windows 7 6.1 amd64
Java Version: 1.6.0_38 Sun Microsystems Inc.
java.util.ConcurrentModificationException
at java.util.AbstractList$Itr.checkForComodification(Unknown Source)
at java.util.AbstractList$Itr.next(Unknown Source)
at forge.gui.match.views.VStack.updateStack(VStack.java:140)
at forge.gui.match.controllers.CStack$1.run(CStack.java:45)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$400(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(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)
-
Sloth - Programmer
- Posts: 3498
- Joined: 23 Jun 2009, 19:40
- Has thanked: 125 times
- Been thanked: 507 times
Re: Developing Bugs
by RedDeckWins » 14 May 2013, 04:40
xPaid seems to be broken in some cases. Not working for Crypt Rats at least.
EDIT:
Actually it may be the inputting of X that is broken.
EDIT:
Actually it may be the inputting of X that is broken.
-
RedDeckWins - Posts: 35
- Joined: 20 Apr 2013, 16:45
- Has thanked: 8 times
- Been thanked: 10 times
Re: Developing Bugs
by Max mtg » 14 May 2013, 05:59
That was the very input-related problem. Fixed in r21475.RedDeckWins wrote:xPaid seems to be broken in some cases. Not working for Crypt Rats at least.
EDIT:
Actually it may be the inputting of X that is broken.
Won't happen after 21472Sloth wrote:Description: AI had triggered an encoded Hands of Binding and two spell cast triggers went on the stack as well. The game continued normally.
Single class for single responsibility.
- Max mtg
- Programmer
- Posts: 1997
- Joined: 02 Jul 2011, 14:26
- Has thanked: 173 times
- Been thanked: 334 times
Re: Developing Bugs
by swordshine » 14 May 2013, 06:38
r21474, I tried four cards and none of them work correctly.
Emrakul, the Aeons Torn: the "time walk" trigger triggers twice.
Mosswort Bridge: I activated the "Play" ability and the card came into play under my opponent's control.
Isochron Scepter's "Play" ability is also broken, just nothing happened.
Panoptic Mirror cannot imprint a card from my hand.
Emrakul, the Aeons Torn: the "time walk" trigger triggers twice.
Mosswort Bridge: I activated the "Play" ability and the card came into play under my opponent's control.
Isochron Scepter's "Play" ability is also broken, just nothing happened.
Panoptic Mirror cannot imprint a card from my hand.
- swordshine
- Posts: 682
- Joined: 11 Jul 2010, 02:37
- Has thanked: 116 times
- Been thanked: 87 times
Re: Developing Bugs
by RedDeckWins » 15 May 2013, 04:47
I found a weird bug while implementing War Tax today. The following call stack happens when the War Tax ability resolves:
Obviously a lot of stuff happens in between, but it seems like a bug to me. I was able to work around it by declaring the EffectOwner as the SourceController this time.
- Code: Select all
at forge.card.spellability.SpellAbility.setActivatingPlayer(SpellAbility.java:287)
at forge.game.ai.AiController.getPossibleETBCounters(AiController.java:151)
at forge.game.ai.AiController.getSpellAbilityToPlay(AiController.java:99)
at forge.game.ai.AiController.playSpellAbilities(AiController.java:875)
at forge.game.ai.AiController.onPriorityRecieved(AiController.java:796)
at forge.game.ai.AiInputCommon$1.run(AiInputCommon.java:74)
at forge.FThreads$1.run(FThreads.java:115)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
Obviously a lot of stuff happens in between, but it seems like a bug to me. I was able to work around it by declaring the EffectOwner as the SourceController this time.
-
RedDeckWins - Posts: 35
- Joined: 20 Apr 2013, 16:45
- Has thanked: 8 times
- Been thanked: 10 times
Re: Developing Bugs
by Max mtg » 15 May 2013, 05:35
@RDW, looks like you've cut the most interesting part with exception name and possiblly the head of trace.
@swordshine, Mosswort bridge, Panoptic Mirror and hopefully are no longer bugged. (Haven't tested the rest, but hope these work as well)
@swordshine, Mosswort bridge, Panoptic Mirror and hopefully are no longer bugged. (Haven't tested the rest, but hope these work as well)
Single class for single responsibility.
- Max mtg
- Programmer
- Posts: 1997
- Joined: 02 Jul 2011, 14:26
- Has thanked: 173 times
- Been thanked: 334 times
Re: Developing Bugs
by RedDeckWins » 15 May 2013, 12:59
Sorry, to clarify, there is no exception:
The bug is that the effect is put into the command zone of the wrong player when it resolves. There is no exception. The pasted callstack just a little insight into how/where the activating player is being set incorrectly before the EffectEffect resolves.
The bug is that the effect is put into the command zone of the wrong player when it resolves. There is no exception. The pasted callstack just a little insight into how/where the activating player is being set incorrectly before the EffectEffect resolves.
-
RedDeckWins - Posts: 35
- Joined: 20 Apr 2013, 16:45
- Has thanked: 8 times
- Been thanked: 10 times
Who is online
Users browsing this forum: No registered users and 22 guests