magefree / mage

Magic Another Game Engine
http://xmage.today
MIT License
1.85k stars 761 forks source link

Concurrent Modification Exception #9192

Closed catman123456 closed 9 months ago

catman123456 commented 2 years ago

Don't know exactly what happen but here's the error

image

Game exception occurred: java.util.ConcurrentModificationException Server version: 1.4.51-V4-beta6 (build: 2022-06-24 13:26) java.util.ArrayList.writeObject(ArrayList.java:770) sun.reflect.GeneratedMethodAccessor14.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:498) java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1140) java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1496) java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548) java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509) java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348) java.util.HashMap.internalWriteEntries(HashMap.java:1793) java.util.HashMap.writeObject(HashMap.java:1363) sun.reflect.GeneratedMethodAccessor16.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:498) java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1140) java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1496) java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548) java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509) java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348) java.util.ArrayList.writeObject(ArrayList.java:766) sun.reflect.GeneratedMethodAccessor14.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:498) java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1140) java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1496) java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548) java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509) java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348) java.util.LinkedHashMap.internalWriteEntries(LinkedHashMap.java:333) java.util.HashMap.writeObject(HashMap.java:1363) sun.reflect.GeneratedMethodAccessor16.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:498) java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1140) java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1496) java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548) java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509) java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348) java.util.ArrayList.writeObject(ArrayList.java:766) sun.reflect.GeneratedMethodAccessor14.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:498) java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1140) java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1496) java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548) java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509) java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548) java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509) java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348) java.util.ArrayList.writeObject(ArrayList.java:766) sun.reflect.GeneratedMethodAccessor14.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:498) java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1140) java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1496) java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548) java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509) java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348) java.util.ArrayList.writeObject(ArrayList.java:766) sun.reflect.GeneratedMethodAccessor14.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:498) java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1140) java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1496) java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548) java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509) java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548) java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509) java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348) mage.remote.traffic.ZippedObjectImpl.zip(ZippedObjectImpl.java:31) mage.remote.traffic.ZippedObjectImpl.(ZippedObjectImpl.java:23) mage.utils.CompressUtil.compress(CompressUtil.java:56) mage.interfaces.callback.ClientCallback.setData(ClientCallback.java:57) mage.interfaces.callback.ClientCallback.(ClientCallback.java:26) mage.interfaces.callback.ClientCallback.(ClientCallback.java:20) mage.server.game.GameSessionWatcher.lambda$inform$1(GameSessionWatcher.java:61) java.util.Optional.ifPresent(Optional.java:159) mage.server.game.GameSessionWatcher.inform(GameSessionWatcher.java:61) mage.server.game.GameController.informOthers(GameController.java:885) mage.server.game.GameController.perform(GameController.java:991) mage.server.game.GameController.perform(GameController.java:981) mage.server.game.GameController.select(GameController.java:858) mage.server.game.GameController.lambda$init$3aa0d15c$2(GameController.java:195) mage.game.events.EventDispatcher.fireEvent(EventDispatcher.java:28) mage.game.events.PlayerQueryEventSource.select(PlayerQueryEventSource.java:40) mage.game.GameImpl.firePriorityEvent(GameImpl.java:2654) mage.player.ai.ComputerPlayer7.priorityPlay(ComputerPlayer7.java:50) mage.player.ai.ComputerPlayer7.priority(ComputerPlayer7.java:37) mage.game.GameImpl.playPriority(GameImpl.java:1523) mage.game.turn.Step.priority(Step.java:61) mage.game.turn.Phase.playStep(Phase.java:184) mage.game.turn.EndPhase.playStep(EndPhase.java:47) mage.game.turn.Phase.play(Phase.java:89) mage.game.turn.Turn.play(Turn.java:132) mage.game.GameImpl.playTurn(GameImpl.java:1042) mage.game.GameImpl.play(GameImpl.java:952) mage.game.GameImpl.start(GameImpl.java:928) 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)

jeffwadsworth commented 2 years ago

[[Urborg, Tomb of Yawgmoth]] could be related due to its continuous effect, but the error doesn't list anything specifically.

github-actions[bot] commented 2 years ago

Urborg, Tomb of Yawgmoth - (Gatherer) (Scryfall) (EDHREC)

Legendary Land Each land is a Swamp in addition to its other land types.

Alex-Vasile commented 2 years ago

What decks were the AI playing?

Looks like the error started from the AI player's playPriority.

jeffwadsworth commented 2 years ago

[[Mass Hysteria]]

github-actions[bot] commented 2 years ago

Mass Hysteria - (Gatherer) (Scryfall) (EDHREC)

{R} Enchantment All creatures have haste.

Alex-Vasile commented 2 years ago

Looking at the board and the log, it might also be an interaction between [[Chainer, Nightmare Adept]] and [[Mass Hysteria]] both giving the same creature haste.

github-actions[bot] commented 2 years ago

Chainer, Nightmare Adept - (Gatherer) (Scryfall) (EDHREC)

{2}{B}{R} Legendary Creature — Human Minion 3/2 Discard a card: You may cast a creature spell from your graveyard this turn. Activate only once each turn. Whenever a nontoken creature enters the battlefield under your control, if you didn't cast it from your hand, it gains haste until your next turn.

Mass Hysteria - (Gatherer) (Scryfall) (EDHREC)

{R} Enchantment All creatures have haste.

JayDi85 commented 9 months ago

Not actual