Game suddenly stopped and declared a winner
- Dominant language
- Java
- Stars
- 2.4k
- Forks
- 940
- Avg merge
- 2d 12h
- Merged PRs (30d)
- 160
Description
Game exception occurred:
java.util.ConcurrentModificationException
Server version: 1.4.52-V7-beta5 (build: 2023-12-23 13:50)
Stack trace:
java.util.ArrayList$Itr.checkForComodification(ArrayList.java:909)
java.util.ArrayList$Itr.remove(ArrayList.java:873)
mage.server.User.onLostConnection(User.java:200)
mage.server.SessionManagerImpl.lambda$disconnect$1(SessionManagerImpl.java:130)
java.util.Optional.ifPresent(Optional.java:159)
mage.server.SessionManagerImpl.disconnect(SessionManagerImpl.java:129)
mage.server.Session.fireCallback(Session.java:457)
mage.server.User.lambda$fireCallback$0(User.java:260)
java.util.Optional.ifPresent(Optional.java:159)
mage.server.User.fireCallback(User.java:259)
mage.server.game.GameSessionWatcher.lambda$update$0(GameSessionWatcher.java:54)
java.util.Optional.ifPresent(Optional.java:159)
mage.server.game.GameSessionWatcher.update(GameSessionWatcher.java:54)
mage.server.game.GameController.updateGame(GameController.java:793)
mage.server.game.GameController.lambda$init$3aa0d15c$1(GameController.java:122)
mage.game.events.EventDispatcher.fireEvent(EventDispatcher.java:28)
mage.game.events.TableEventSource.fireTableEvent(TableEventSource.java:44)
mage.game.GameImpl.fireUpdatePlayersEvent(GameImpl.java:3100)
mage.game.GameImpl.playPriority(GameImpl.java:1616)
mage.game.turn.Step.priority(Step.java:67)
mage.game.turn.Phase.playStep(Phase.java:204)
mage.game.turn.Phase.play(Phase.java:90)
mage.game.turn.Turn.play(Turn.java:137)
mage.game.GameImpl.playTurn(GameImpl.java:1112)
mage.game.GameImpl.play(GameImpl.java:1019)
mage.game.GameImpl.start(GameImpl.java:995)
mage.server.game.GameWorker.call(GameWorker.java:34)
java.util.concurrent.FutureTask.run(FutureTask.java:266)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
java.lang.Thread.run(Thread.java:748)
Contributor guide
No contributing guide indexed for this repository
Research direction
Start with mage.server.User.onLostConnection and mage.server.SessionManagerImpl.disconnect, then trace the callback path through GameSessionWatcher.update. Reproduce or investigate the ConcurrentModificationException from the supplied stack trace; done means disconnect handling no longer stops the game or incorrectly declares a winner.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- backend, game-dev
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100