magefree / magefree/mage

error from server log

Open
#12,725 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
2.4k
Forks
940
Avg merge
2d 12h
Merged PRs (30d)
160

Description

alpha server running locally

> ERROR 2024-08-24 15:18:02,599 Catch unhandled error in CALL thread: null =>[CALL - 5] ThreadExecutorImpl$CachedThreadPoolWithException.afterExecute
java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:909)
at java.util.ArrayList$Itr.next(ArrayList.java:859)
at mage.util.CardUtil.deepCopyList(CardUtil.java:1906)
at mage.util.CardUtil.deepCopyObject(CardUtil.java:1858)
at mage.abilities.TriggeredAbilities.(TriggeredAbilities.java:65)
at mage.abilities.TriggeredAbilities.copy(TriggeredAbilities.java:318)
at mage.game.GameState.(GameState.java:170)
at mage.game.GameState.copy(GameState.java:295)
at mage.game.GameImpl.(GameImpl.java:203)
at mage.game.TwoPlayerDuel.(TwoPlayerDuel.java:20)
at mage.game.TwoPlayerDuel.copy(TwoPlayerDuel.java:41)
at mage.game.TwoPlayerDuel.copy(TwoPlayerDuel.java:12)
at mage.server.game.GameSessionPlayer.prepareGameView(GameSessionPlayer.java:214)
at mage.server.game.GameSessionPlayer.getGameView(GameSessionPlayer.java:200)
at mage.server.game.GameSessionWatcher.lambda$update$0(GameSessionWatcher.java:54)
at java.util.Optional.ifPresent(Optional.java:159)
at mage.server.game.GameSessionWatcher.update(GameSessionWatcher.java:54)
at mage.server.game.GameController.updateGame(GameController.java:824)
at mage.server.game.GameController.lambda$init$3aa0d15c$1(GameController.java:124)
at mage.game.events.EventDispatcher.fireEvent(EventDispatcher.java:28)
at mage.game.events.TableEventSource.fireTableEvent(TableEventSource.java:44)
at mage.game.GameImpl.fireUpdatePlayersEvent(GameImpl.java:3158)
at mage.game.GameImpl.rollbackTurns(GameImpl.java:3965)
at mage.server.game.GameController.sendPlayerAction(GameController.java:540)
at mage.server.game.GameManagerImpl.sendPlayerAction(GameManagerImpl.java:127)
at mage.server.MageServerImpl.lambda$null$39(MageServerImpl.java:828)
at java.util.Optional.ifPresent(Optional.java:159)
at mage.server.MageServerImpl.lambda$sendPlayerAction$40(MageServerImpl.java:826)
at mage.server.MageServerImpl.lambda$execute$69(MageServerImpl.java:1161)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with the stack trace in mage.util.CardUtil.deepCopyList at CardUtil.java:1906, then inspect TriggeredAbilities.java:65 and its copy method at line 318. Trace how GameState.copy and TwoPlayerDuel.copy are reached during GameSessionPlayer.prepareGameView and rollbackTurns. Done means identifying and resolving the concurrent modification, but the issue provides no reproduction or explicit verification test.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
backend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.