Searching on my system and old backups I was able to find Robocode versions for 188.8.131.52, 184.108.40.206. I was also able to download 220.127.116.11 and 18.104.22.168. So I ran some experiments using Neuromaner vs RaikoMicro. Note, dev version of Neuromancer I'm using here prints out each time it gets a SkippedTurnEvent.
- I can't reproduce it in at all 22.214.171.124. All output looks perfect - every round has printed SYSTEM lines either saying win or death, and Neuromancer correctly gets win/death events. Neuromancer doesn't skip any turns.
- I can't reproduce it at all in 126.96.36.199 - not even "SYSTEM: Neuromancer 5.4 has not performed any actions in a reasonable amount of time." However there are some rounds where nothing is printed, which is very suspicious. Still no skipped turn events.
- In 188.8.131.52 I can sometimes get a "SYSTEM: Neuromancer 5.4 has not performed any actions in a reasonable amount of time.". I saw this 3 times out of 10+ battles. There are also the occasional suspicious blank rounds where Neuromancer prints nothing, and SYSTEM prints nothing. Still no skipped turn events.
- In 184.108.40.206 I can reproduce ThreadDeath exceptions. On average 1 per battle, but sometimes 0 and max I saw was 4. Average of 3 skipped turn events per battle.
To note: all of them had similar CPU constants (between 5.3ms and 5.4ms).
Other things I tried:
- Changing the GC algorithm doesn't affect the number of ThreadDeaths in 220.127.116.11
- Doing a single getDataDirectory() at the beginning of each round doesn't affect the number of ThreadDeaths in 18.104.22.168
This makes me think it is a Robocode bug - possibly multiple bugs, since we have very different behaviors here over the different versions. It also greatly worries me that bots which were fine in 22.214.171.124 have problems in new versions.
Isolating robocode issues from jdk version. Would it be correct to assume that you ran everything with openjdk-8?
Here is the old installs I used to do these tests, I'd appreciate if someone could try them on Windows as well.
Tying into what Beaming said about the sleep in the internals not happening when set to max, perhaps this has been changed since earlier versions of Robocode. However there are more things that may be an issue as well, I don't think that is the total of what is buggy here. The missing prints in a round particularly concerns me (and yes, this still happens in recent versions).