|Thread title||Replies||Last modified|
|Invalid memory access||4||12:32, 13 November 2011|
Weird - seems I can't run battles for this bot. Within the first several rounds, I always get an error like one of these:
Invalid memory access of location 0x101eff000 rip=0x101eff000 ./robocode.sh: line 4: 798 Bus error java -Xmx512M -cp libs/robocode.jar robocode.Robocode $* ... Invalid memory access of location 0x0 rip=0x0 ./robocode.sh: line 4: 722 Segmentation fault java -Xmx512M -cp libs/robocode.jar robocode.Robocode $*
I guess the same probably goes for Darkcanuck, as with our two clients running, Diamond 1.6.12 got to 2k battles without getting a battle vs Hamilton. I've seen a similar error sometimes for MogBot in RoboResearch, but not every single time. It looks like Hamilton comes with source, so maybe I can investigate tomorrow.
By the nature of the Java language/vm itself, it should be 100% impossible for any Java code to cause a segfault...
Before looking deeper into it, this looks to me like a bug in your JVM Voidious.
In general, yes, and that was my first impression - I'm guessing Darkcanuck and I are both on Macs using the Apple JVM. But there are some special cases, like JNI and direct ByteBuffers, that give Java more direct access to memory stuff - maybe Robocode uses some such special feature and Hamilton is exposing a bug in Robocode?
Hamilton runs just fine here, and I looked over the entirety of Hamilton's code and nothing looks particularly odd really...
No JNI is allowed for robocode bots, and direct ByteBuffers still only allow access to properly allocated memory. Robocode itself doesn't use JNI either unless the .NET plugin is involved. In any case Hamilton's code looks quite normal/typical (Though apparently using pre-saved data :P)
I'd suggest perhaps running it with both a Java debugger on the Java code, and GDB on the JVM itself. One of the two should reveal what's going on...