ThreadDeath problem
Well, println()
is definitely broken somehow. There is no way that checkSkippedTurn()
could have called forceStopThread()
(as is shown in the stacktrace), without going through println()
, yet the print message never made its way to the console.
battleText
is also cleared in initializeRound()
and [https://github.com/robo-code/robocode/blob/0eb93ba532bc6731b7ff8dd02da1308d92ccb2fd/robocode.battle/src/main/java/net/sf/robocode/battle/peer/RobotPeer.java#L1685 cleanup()
, both of which have no synchronization guards at all.
Good catch. I've added synchronization guards on the initializeRound() and cleanup() and now I get the SYSTEM: Neuromancer 5.4 has not performed any actions in a reasonable amount of time.
printed inside the correct round. The ThreadDeath is still printed in the round after, but I can live with that I guess.
Now for the next question, why is this even happening?
It seems that Skilgannon has filed a bug report on this issue, including the necessary patch.
To add to mysteries. Why I do not see dramatic drop in scores if I run Voidious' RoboRunner? I see missing SYSTEM messages in logs but it does not affect scores the same drastic way as with the literumble client. I also see no ThreadDeath messages. I am guessing RoboRunner catches those somehow and process the score differently.