Talk:Hamilton

From Robowiki
Jump to navigation Jump to search

Contents

Thread titleRepliesLast modified
Invalid memory access411:32, 13 November 2011

Invalid memory access

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.

Voidious06:18, 25 September 2011

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.

Rednaxela06:25, 25 September 2011
 

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?

Voidious06:35, 25 September 2011
 

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...

Rednaxela06:42, 25 September 2011
 

This bot crashes my Roborumble client. Also it's the only bot with 840 pairings. At the time of this writing, all other bots have 839 pairings. Should we remove it from the rumble maybe? -- PEZ 19:41, 12 November 2011 (UTC) Moved from main page

Nat Pavasant11:32, 13 November 2011