It is currently 19 May 2025, 18:13
   
Text Size

Bug Reports (snapshot builds)

Post MTG Forge Related Programming Questions Here

Moderators: timmermac, Blacksmith, KrazyTheFox, Agetian, friarsol, CCGHQ Admins

Re: Bug Reports (snapshot builds)

Postby Agetian » 10 Jan 2014, 06:45

r24201: And another, even more serious NPE, during the match, when I either hovered the mouse over the card or clicked it (not sure which) - this one was recurring and the only option I had was to quit the game:

NullPointerException | Open
Code: Select all
Forge Version:    1.5.9-SNAPSHOT-r${forge.revision}${forge.specialStatus} (mixed revisions detected; please update from the root directory)
Operating System: Linux 3.8.0-26-generic amd64
Java Version:     1.7.0_25 Oracle Corporation

java.lang.NullPointerException
   at forge.gui.toolbox.FSkin.setGraphicsColor(FSkin.java:187)
   at forge.gui.toolbox.FPanel.drawBackgroundColor(FPanel.java:261)
   at forge.gui.toolbox.FPanel.paintComponent(FPanel.java:236)
   at javax.swing.JComponent.paint(JComponent.java:1045)
   at javax.swing.JComponent.paintChildren(JComponent.java:878)
   at javax.swing.JComponent.paint(JComponent.java:1054)
   at javax.swing.JComponent.paintChildren(JComponent.java:878)
   at javax.swing.JComponent.paint(JComponent.java:1054)
   at javax.swing.JComponent.paintChildren(JComponent.java:878)
   at javax.swing.JComponent.paint(JComponent.java:1054)
   at javax.swing.JComponent.paintChildren(JComponent.java:878)
   at javax.swing.JComponent.paint(JComponent.java:1054)
   at javax.swing.JLayeredPane.paint(JLayeredPane.java:585)
   at javax.swing.JComponent.paintChildren(JComponent.java:878)
   at javax.swing.JComponent.paint(JComponent.java:1054)
   at javax.swing.JLayeredPane.paint(JLayeredPane.java:585)
   at javax.swing.JComponent.paintChildren(JComponent.java:878)
   at javax.swing.JComponent.paint(JComponent.java:1054)
   at javax.swing.JComponent.paintToOffscreen(JComponent.java:5212)
   at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1508)
   at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1439)
   at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:311)
   at javax.swing.RepaintManager.paint(RepaintManager.java:1236)
   at javax.swing.JComponent._paintImmediately(JComponent.java:5160)
   at javax.swing.JComponent.paintImmediately(JComponent.java:4971)
   at javax.swing.RepaintManager$3.run(RepaintManager.java:796)
   at javax.swing.RepaintManager$3.run(RepaintManager.java:784)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
   at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:784)
   at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:757)
   at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:706)
   at javax.swing.RepaintManager.access$1000(RepaintManager.java:62)
   at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1647)
   at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
   at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:733)
   at java.awt.EventQueue.access$200(EventQueue.java:103)
   at java.awt.EventQueue$3.run(EventQueue.java:694)
   at java.awt.EventQueue$3.run(EventQueue.java:692)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
   at java.awt.EventQueue.dispatchEvent(EventQueue.java:703)
   at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
   at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
   at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
   at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
   at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
   at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
- Agetian
Agetian
Programmer
 
Posts: 3486
Joined: 14 Mar 2011, 05:58
Has thanked: 683 times
Been thanked: 569 times

Re: Bug Reports (snapshot builds)

Postby drdev » 10 Jan 2014, 15:07

Agetian, is this a specific card that's failing?
drdev
Programmer
 
Posts: 1958
Joined: 27 Jul 2013, 02:07
Has thanked: 189 times
Been thanked: 565 times

Re: Bug Reports (snapshot builds)

Postby Agetian » 10 Jan 2014, 18:49

drdev wrote:Agetian, is this a specific card that's failing?
I'm pretty sure that it's a general bug, the stack traces (for both issues I reported above) indicate NPEs in UI-related parts of code (in particular, in FSkin and in some tooltip-related code). There are several reports similar to mine in the newly released 1.5.9 thread that deal with different cards in different modes...

- Agetian
Agetian
Programmer
 
Posts: 3486
Joined: 14 Mar 2011, 05:58
Has thanked: 683 times
Been thanked: 569 times

Re: Bug Reports (snapshot builds)

Postby drdev » 10 Jan 2014, 21:27

Agetian wrote:
drdev wrote:Agetian, is this a specific card that's failing?
I'm pretty sure that it's a general bug, the stack traces (for both issues I reported above) indicate NPEs in UI-related parts of code (in particular, in FSkin and in some tooltip-related code). There are several reports similar to mine in the newly released 1.5.9 thread that deal with different cards in different modes...

- Agetian
Do you have specific workflows that reproduce it consistently? Because I haven't seen these before in my testing.

EDIT: I fixed the game play crash in r24207. It would only crash when you clicked on a card that couldn't be played, in the act of trying to make the prompt flash red. So the game's not unplayable, it's just easy to accidentally cause this crash at the moment. Can we release a quick patch?
drdev
Programmer
 
Posts: 1958
Joined: 27 Jul 2013, 02:07
Has thanked: 189 times
Been thanked: 565 times

Re: Bug Reports (snapshot builds)

Postby Agetian » 11 Jan 2014, 02:29

@ drdev: Thanks for working on fixing the bugs! I'll test the new version later today and will tell you if I experience any crashes. By the way, did you manage to reproduce/fix the tooltip bug in the deck editor(s)? I'm trying to figure out a consistent enough way to reproduce it but I can't do it just yet, it seems to randomly crash from time to time (rather rarely) with this NPE when moving in/out/around the edges of the card collection list:

NullPointerException | Open
Code: Select all
Forge Version:    1.5.9-SNAPSHOT-r${forge.revision}${forge.specialStatus} (mixed revisions detected; please update from the root directory)
Operating System: Linux 3.8.0-26-generic amd64
Java Version:     1.7.0_25 Oracle Corporation

java.lang.NullPointerException
   at javax.swing.ToolTipManager.initiateToolTip(ToolTipManager.java:444)
   at javax.swing.ToolTipManager.mouseEntered(ToolTipManager.java:401)
   at java.awt.AWTEventMulticaster.mouseEntered(AWTEventMulticaster.java:299)
   at java.awt.AWTEventMulticaster.mouseEntered(AWTEventMulticaster.java:299)
   at java.awt.Component.processMouseEvent(Component.java:6514)
   at javax.swing.JComponent.processMouseEvent(JComponent.java:3312)
   at forge.gui.toolbox.itemmanager.views.ItemListView$ItemTable.processMouseEvent(ItemListView.java:331)
   at java.awt.Component.processEvent(Component.java:6270)
   at java.awt.Container.processEvent(Container.java:2229)
   at java.awt.Component.dispatchEventImpl(Component.java:4861)
   at java.awt.Container.dispatchEventImpl(Container.java:2287)
   at java.awt.Component.dispatchEvent(Component.java:4687)
   at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
   at java.awt.LightweightDispatcher.trackMouseEnterExit(Container.java:4620)
   at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4474)
   at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
   at java.awt.Container.dispatchEventImpl(Container.java:2273)
   at java.awt.Window.dispatchEventImpl(Window.java:2719)
   at java.awt.Component.dispatchEvent(Component.java:4687)
   at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
   at java.awt.EventQueue.access$200(EventQueue.java:103)
   at java.awt.EventQueue$3.run(EventQueue.java:694)
   at java.awt.EventQueue$3.run(EventQueue.java:692)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
   at java.awt.EventQueue$4.run(EventQueue.java:708)
   at java.awt.EventQueue$4.run(EventQueue.java:706)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
   at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
   at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
   at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
   at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
   at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
   at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
   at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
Sadly, can't tell any more details yet, except that the culprit in the Forge code base appears to be the mouse event processing code in ItemTable of ItemListView, in other words, this:

Code: Select all
forge.gui.toolbox.itemmanager.views.ItemListView$ItemTable.processMouseEvent(ItemListView.java:331)
If worst comes to worst, maybe it's worth adding some kind of a NPE safeguard check into that piece of code?.. (sadly, can't look at the code yet because of the early start at work, but I might look into that file later and see if I can figure out what is NPE'ing).

EDIT: Just a wild guess - can this be because under some random circumstances the renderer has already processed the mouse event (e) and then 'e' is fed into another processing request on line 331 in ItemListView.java?...

Will post more details soon if I come up with anything conclusive.

- Agetian
Agetian
Programmer
 
Posts: 3486
Joined: 14 Mar 2011, 05:58
Has thanked: 683 times
Been thanked: 569 times

Re: Bug Reports (snapshot builds)

Postby drdev » 11 Jan 2014, 03:20

I finally figured out how to reproduce the tooltip issue consistently, though it's very convoluted. You have to hover over a cell that shows a tooltip in the final row of a table, then move your mouse over another cell in that row without a tooltip (such as one that has room to display in full), which will display a tiny dot tooltip (annoying bug in and of itself), then move your mouse below the row, then move the mouse back over the same cell. Crash.

It seems to be a bug with Swing that's hard to work around. I'm working on a fix.

EDIT: I ended up taking your idea and just trapping the exception in processMouseEvent (r24208). That prevents the crash, though it still leaves the weird "dot" tooltip issue, though that's certainly more minor.

On that note, is there any way to prevent the behavior where once you get a tooltip for something, if you move the mouse away all other components suddenly display tooltips immediately? I find that behavior really annoying, and if it wasn't for that behavior, you can't get the "dot" tooltip.

Anyway, I'd suggest with these two crashes now fixed we release a patch so people don't continue to hit them for the next couple weeks.
drdev
Programmer
 
Posts: 1958
Joined: 27 Jul 2013, 02:07
Has thanked: 189 times
Been thanked: 565 times

Re: Bug Reports (snapshot builds)

Postby Agetian » 11 Jan 2014, 08:29

@ drdev: I was wondering about that behavior too (I mean that tooltips appear immediately), it is annoying indeed... Sadly, a quick Google check did not yield any results, but if I find anything relevant I'll PM you. As for the bugs you've fixed, I updated to the latest build and I'm in the process of testing the game - so far so good, hasn't crashed on me yet.

EDIT: Please take a look if any of this may be relevant:
http://stackoverflow.com/questions/1190 ... particular
http://stackoverflow.com/questions/6170 ... -black-dot

- Agetian
Last edited by Agetian on 11 Jan 2014, 11:14, edited 3 times in total.
Agetian
Programmer
 
Posts: 3486
Joined: 14 Mar 2011, 05:58
Has thanked: 683 times
Been thanked: 569 times

Re: Bug Reports (snapshot builds)

Postby Agetian » 11 Jan 2014, 10:52

r24208: I noticed one more way the skinned list boxes misbehave: the titles of some of them (which indicate what exactly you're choosing) are cut short and there's no way to resize the list box to read the rest of the title. Sometimes it's crucial to understanding the effect you're choosing the card for, such as in the case of Telling Time where you're putting one card into your hand, one on the top of the library, and on on the bottom of your library. The following prompt may be somewhat confusing if you forgot the order of effects on the card or are unsure about what exactly the card is querying you about:

telling-time.png


- Agetian
Agetian
Programmer
 
Posts: 3486
Joined: 14 Mar 2011, 05:58
Has thanked: 683 times
Been thanked: 569 times

Re: Bug Reports (snapshot builds)

Postby drdev » 11 Jan 2014, 18:30

Agetian wrote:r24208: I noticed one more way the skinned list boxes misbehave: the titles of some of them (which indicate what exactly you're choosing) are cut short and there's no way to resize the list box to read the rest of the title. Sometimes it's crucial to understanding the effect you're choosing the card for, such as in the case of Telling Time where you're putting one card into your hand, one on the top of the library, and on on the bottom of your library. The following prompt may be somewhat confusing if you forgot the order of effects on the card or are unsure about what exactly the card is querying you about:

telling-time.png


- Agetian
That wasn't actually an issue with the ListChooser, but rather that the prompt for that dialog wasn't being built properly in DigEffect.

I've committed a fix in r24214 for this and other list prompt titles.
drdev
Programmer
 
Posts: 1958
Joined: 27 Jul 2013, 02:07
Has thanked: 189 times
Been thanked: 565 times

Re: Bug Reports (snapshot builds)

Postby Agetian » 11 Jan 2014, 18:57

Thanks for the fixes, drdev!
By the way, if you have some time for it, can you please look into this issue that's affecting the Ante UI: viewtopic.php?f=52&t=8450&start=120#p141814
I don't know if there's anyone better than you at UI coding in the team at the moment to tackle this (it hasn't worked for a long time and in different ways).

- Agetian
Agetian
Programmer
 
Posts: 3486
Joined: 14 Mar 2011, 05:58
Has thanked: 683 times
Been thanked: 569 times

Re: Bug Reports (snapshot builds)

Postby Max mtg » 12 Jan 2014, 19:37

card Back from the Brink is now broken. Working on it (my plan is set up its cost as two parts, exile from grave first and mana cost to be paid secondly)
Last edited by Max mtg on 14 Jan 2014, 08:11, edited 1 time in total.
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: Bug Reports (snapshot builds)

Postby Agetian » 14 Jan 2014, 05:30

r24250: Got this fatal exception when switching between Quest Deck Editor and a regular Deck Editor and then back to Quest Deck Editor. What's worse, this crash resulted in the "All Decks" tab disappearing from the Deck Editor permanently (even after restarting Forge), which required me to delete editor properties files to reset them.

- Agetian

IllegalArgumentException | Open
Code: Select all
Forge Version:    1.5.11-SNAPSHOT-r${forge.revision}${forge.specialStatus} (mixed revisions detected; please update from the root directory)
Operating System: Linux 3.8.0-26-generic amd64
Java Version:     1.7.0_25 Oracle Corporation

java.lang.IllegalArgumentException: illegal component position
   at java.awt.Container.addImpl(Container.java:1080)
   at java.awt.Container.add(Container.java:998)
   at forge.gui.framework.DragCell.addDoc(DragCell.java:280)
   at forge.gui.deckeditor.controllers.CEditorQuest.resetUIChanges(CEditorQuest.java:306)
   at forge.gui.deckeditor.CDeckEditorUI.canSwitchAway(CDeckEditorUI.java:90)
   at forge.gui.deckeditor.VDeckEditorUI.onSwitching(VDeckEditorUI.java:50)
   at forge.gui.framework.FScreen.onSwitching(FScreen.java:183)
   at forge.view.FNavigationBar.canSwitch(FNavigationBar.java:133)
   at forge.control.FControl.setCurrentScreen(FControl.java:283)
   at forge.control.FControl.setCurrentScreen(FControl.java:275)
   at forge.view.FNavigationBar$NavigationTab$1.mousePressed(FNavigationBar.java:398)
   at java.awt.Component.processMouseEvent(Component.java:6502)
   at javax.swing.JComponent.processMouseEvent(JComponent.java:3312)
   at java.awt.Component.processEvent(Component.java:6270)
   at java.awt.Container.processEvent(Container.java:2229)
   at java.awt.Component.dispatchEventImpl(Component.java:4861)
   at java.awt.Container.dispatchEventImpl(Container.java:2287)
   at java.awt.Component.dispatchEvent(Component.java:4687)
   at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
   at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4489)
   at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
   at java.awt.Container.dispatchEventImpl(Container.java:2273)
   at java.awt.Window.dispatchEventImpl(Window.java:2719)
   at java.awt.Component.dispatchEvent(Component.java:4687)
   at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
   at java.awt.EventQueue.access$200(EventQueue.java:103)
   at java.awt.EventQueue$3.run(EventQueue.java:694)
   at java.awt.EventQueue$3.run(EventQueue.java:692)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
   at java.awt.EventQueue$4.run(EventQueue.java:708)
   at java.awt.EventQueue$4.run(EventQueue.java:706)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
   at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
   at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
   at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
   at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
   at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
   at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
   at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
Also, got this exception when exiting the game (I played a Sealed Deck game (which involved building a sealed deck itself), then played a couple Constructed matches, then exited Forge and got this crash on exit):

Description: [describe what you were doing when the crash occurred]

IllegalArgumentException | Open
Code: Select all
Forge Version:    1.5.11-SNAPSHOT-r${forge.revision}${forge.specialStatus} (mixed revisions detected; please update from the root directory)
Operating System: Linux 3.8.0-26-generic amd64
Java Version:     1.7.0_25 Oracle Corporation

java.lang.IllegalArgumentException: illegal component position
   at java.awt.Container.addImpl(Container.java:1093)
   at java.awt.Container.add(Container.java:998)
   at forge.gui.framework.DragCell.addDoc(DragCell.java:280)
   at forge.gui.deckeditor.controllers.CEditorLimited.resetUIChanges(CEditorLimited.java:196)
   at forge.gui.deckeditor.CDeckEditorUI.canSwitchAway(CDeckEditorUI.java:90)
   at forge.control.FControl.canExitForge(FControl.java:185)
   at forge.control.FControl.exitForge(FControl.java:192)
   at forge.control.FControl$1.windowClosing(FControl.java:153)
   at java.awt.AWTEventMulticaster.windowClosing(AWTEventMulticaster.java:349)
   at java.awt.AWTEventMulticaster.windowClosing(AWTEventMulticaster.java:349)
   at java.awt.Window.processWindowEvent(Window.java:2051)
   at javax.swing.JFrame.processWindowEvent(JFrame.java:290)
   at java.awt.Window.processEvent(Window.java:2009)
   at java.awt.Component.dispatchEventImpl(Component.java:4861)
   at java.awt.Container.dispatchEventImpl(Container.java:2287)
   at java.awt.Window.dispatchEventImpl(Window.java:2719)
   at java.awt.Component.dispatchEvent(Component.java:4687)
   at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
   at java.awt.EventQueue.access$200(EventQueue.java:103)
   at java.awt.EventQueue$3.run(EventQueue.java:694)
   at java.awt.EventQueue$3.run(EventQueue.java:692)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
   at java.awt.EventQueue$4.run(EventQueue.java:708)
   at java.awt.EventQueue$4.run(EventQueue.java:706)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
   at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
   at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
   at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
   at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
   at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
   at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
   at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
- Agetian
Agetian
Programmer
 
Posts: 3486
Joined: 14 Mar 2011, 05:58
Has thanked: 683 times
Been thanked: 569 times

Re: Bug Reports (snapshot builds)

Postby swordshine » 15 Jan 2014, 03:53

Description: r24269 When I killed (Go for the Throat) a new BNG card Hero of Iroas.

StackOverflowError | Open
Code: Select all
Forge Version:    SVN
Operating System: Windows 7 6.1 x86
Java Version:     1.7.0_25 Oracle Corporation

java.lang.StackOverflowError
   at java.lang.String$CaseInsensitiveComparator.compare(String.java:1170)
   at java.util.TreeMap.getEntryUsingComparator(TreeMap.java:369)
   at java.util.TreeMap.getEntry(TreeMap.java:340)
   at java.util.TreeMap.get(TreeMap.java:273)
   at com.google.common.collect.AbstractMapBasedMultimap.get(AbstractMapBasedMultimap.java:304)
   at com.google.common.collect.AbstractListMultimap.get(AbstractListMultimap.java:66)
   at com.google.common.collect.AbstractListMultimap.get(AbstractListMultimap.java:36)
   at forge.card.CardDb.tryGetCard(CardDb.java:219)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.java:224)
   at forge.card.CardDb.tryGetCard(CardDb.java:178)
   at forge.card.CardDb.tryGetCard(CardDb.jav
... (truncated)
swordshine
 
Posts: 682
Joined: 11 Jul 2010, 02:37
Has thanked: 116 times
Been thanked: 87 times

Re: Bug Reports (snapshot builds)

Postby friarsol » 15 Jan 2014, 04:06

swordshine wrote:Description: r24269 When I killed (Go for the Throat) a new BNG card Hero of Iroas.
I'm guessing this is because there's no editions file for BNG and the Random Art work that's been happening recently doesn't consider the possibility of having scripts before editions.
friarsol
Global Moderator
 
Posts: 7593
Joined: 15 May 2010, 04:20
Has thanked: 243 times
Been thanked: 965 times

Re: Bug Reports (snapshot builds)

Postby Agetian » 15 Jan 2014, 05:38

friarsol wrote:
swordshine wrote:Description: r24269 When I killed (Go for the Throat) a new BNG card Hero of Iroas.
I'm guessing this is because there's no editions file for BNG and the Random Art work that's been happening recently doesn't consider the possibility of having scripts before editions.
I looked at the relevant code and it does seem like the new parts of tryGetCard are failing here, but I admit I have no idea how exactly they're failing in order to be able to fix it. The first thing that fails in the stack trace is the call to retrieve the card from CardDb.allCardsByName. The other two calls that are in the stack trace are other tryGetCard calls that reference the edition of the card by name (via .getEdition). What are the specifics of working with cards that do not correspond to an edition file? Where do they contain their set information (if they do), and if they do, how do I extract it from there. Contrariwise, if they don't contain any set information and that's why the calls are failing in what seems to be some kind of an endless loop, how do I know about it so I can check for that in advance to avoid the crash? Thanks in advance for assistance, I'll try to fix this ASAP (as soon as I know how)!

P.S. Also, how can I reproduce this crash [easily enough] without having to switch over to the BNG branch so that I can test some things and see if they help?

P.P.S. Looked at the BNG scripts and it seems like they don't contain any set info inside them, so I guess the code should probably detect the absence of set information (which will indicate the lack of edition file) and work around cases like that gracefully. If my idea is right, I can try tweaking the code, but I'd still need a reliable way to reproduce the crash in order to be able to test effectively.

- Agetian
Agetian
Programmer
 
Posts: 3486
Joined: 14 Mar 2011, 05:58
Has thanked: 683 times
Been thanked: 569 times

PreviousNext

Return to Developer's Corner

Who is online

Users browsing this forum: No registered users and 51 guests


Who is online

In total there are 51 users online :: 0 registered, 0 hidden and 51 guests (based on users active over the past 10 minutes)
Most users ever online was 4143 on 23 Jan 2024, 08:21

Users browsing this forum: No registered users and 51 guests

Login Form