Murlakotamus / Boggarton

0 stars 0 forks source link

Виртуальный игрок может застрять в ожидании заполнения буфера #150

Closed Murlakotamus closed 5 years ago

Murlakotamus commented 5 years ago

Если в процессе ожидания заполнения буфера происходит выход из игры, то виртуальных игрок зависает в этом ожидании.

"virtual player, adaptive, effective: true, 18" #18 prio=1 os_prio=31 tid=0x00007fc63c2f4000 nid=0x692b in Object.wait() [0x000070000ab31000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x000000076eb102f0> (a com.foxcatgames.boggarton.game.utils.Pair)
    at java.lang.Object.wait(Object.java:502)
    at com.foxcatgames.boggarton.game.GameAutomation.getBuffer(GameAutomation.java:109)
    - locked <0x000000076eb102f0> (a com.foxcatgames.boggarton.game.utils.Pair)
    at com.foxcatgames.boggarton.game.AutomatedMultiplayerGame.getBuffer(AutomatedMultiplayerGame.java:79)
    at com.foxcatgames.boggarton.players.virtual.AbstractMovesExecutor.executeMove(AbstractMovesExecutor.java:83)
    at com.foxcatgames.boggarton.players.virtual.AbstractVirtualPlayer.makeVirtualPlayerMoves(AbstractVirtualPlayer.java:68)
    at com.foxcatgames.boggarton.players.virtual.AbstractVirtualPlayer.run(AbstractVirtualPlayer.java:59)
    at java.lang.Thread.run(Thread.java:745)
Murlakotamus commented 5 years ago

Воспроизвести не удалось, так что поправили единственное вероятное - сделали ссылки на переменные буфера волатильными.