magefree / magefree/mage

GameEvent must be Copyable

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

Description

Error:
```
java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextNode(HashMap.java:1445)
at java.util.HashMap$EntryIterator.next(HashMap.java:1479)
at java.util.HashMap$EntryIterator.next(HashMap.java:1477)
at mage.game.GameState.(GameState.java:190)
at mage.game.GameState.copy(GameState.java:299)
at mage.game.GameImpl.rollbackTurnsExecution(GameImpl.java:3695)
at mage.game.GameImpl.playTurn(GameImpl.java:1078)
at mage.game.GameImpl.play(GameImpl.java:997)
at mage.game.GameImpl.start(GameImpl.java:973)
at mage.server.game.GameWorker.call(GameWorker.java:34)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
```

Possible reason:
* Some `GameEvent` implementations uses game objects and it's share between states/rollbacks/simulations -- it's a buggy and must be fixed by `Copyable` implementation and fixed GameState copy constructor

![shot_230609_063157](https://github.com/magefree/mage/assets/8344157/2866de72-a4ff-485b-b00f-19392d44c714)

![shot_230609_063409](https://github.com/magefree/mage/assets/8344157/c64c402a-badb-41e5-ae5c-0def639b16df)

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.