<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to 17: Events not always removed from internal Vector</title><link>https://sourceforge.net/p/robocode/support-requests/17/</link><description>Recent changes to 17: Events not always removed from internal Vector</description><atom:link href="https://sourceforge.net/p/robocode/support-requests/17/feed.rss" rel="self"/><language>en</language><lastBuildDate>Sat, 15 Dec 2012 16:10:00 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/robocode/support-requests/17/feed.rss" rel="self" type="application/rss+xml"/><item><title>Events not always removed from internal Vector</title><link>https://sourceforge.net/p/robocode/support-requests/17/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;I noticed a possible bug in the event handling system.&lt;br /&gt;
It seems that, on a rare occasion, some Events are not properly removed from the interal Vector containing all the Events (the Vector returned by getAllEvents()).&lt;br /&gt;
Most of the time these are ScannedRobotEvent object but sometimes also other Events aren't removed.&lt;/p&gt;
&lt;p&gt;With "rare" I mean that it only happens just a couple of times every 20 or so rounds but sometimes it happens even more than once in 1 round.&lt;br /&gt;
I don't know under what specific circumstances the bug arises apart from the following:&lt;br /&gt;
- I let my bot fight a team of 4 sample bots (instead of 4 separate sample bots). All bots are crazy bots.&lt;br /&gt;
- The total amount of rounds is 200.&lt;br /&gt;
- The battlefield has a size of 800x600.&lt;br /&gt;
- Im using robocode 1.7.4.4 with Java 1.7.0_09 (64-bits) on Windows 7 Home Premium SP1 64-bit.&lt;/p&gt;
&lt;p&gt;I used the following code in onStatus() to reproduce the bug:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;onStatus&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;StatusEvent&lt;/span&gt; &lt;span class="n"&gt;event&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Event&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;getAllEvents&lt;/span&gt;&lt;span class="o"&gt;())&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getTime&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;getTime&lt;/span&gt;&lt;span class="o"&gt;())&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;printf&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;%s not removed getTime(): %d; event time: %d\n&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
                    &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getClass&lt;/span&gt;&lt;span class="o"&gt;(),&lt;/span&gt; &lt;span class="n"&gt;getTime&lt;/span&gt;&lt;span class="o"&gt;(),&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getTime&lt;/span&gt;&lt;span class="o"&gt;());&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Producing the output:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="o"&gt;========================&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;
&lt;span class="n"&gt;Round&lt;/span&gt; 29 &lt;span class="n"&gt;of&lt;/span&gt; 200
&lt;span class="o"&gt;========================&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;
&lt;span class="n"&gt;class&lt;/span&gt; &lt;span class="n"&gt;robocode&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ScannedRobotEvent&lt;/span&gt; &lt;span class="n"&gt;not&lt;/span&gt; &lt;span class="n"&gt;removed&lt;/span&gt; &lt;span class="n"&gt;getTime&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt; 388&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;event&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; 387
&lt;span class="n"&gt;class&lt;/span&gt; &lt;span class="n"&gt;robocode&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ScannedRobotEvent&lt;/span&gt; &lt;span class="n"&gt;not&lt;/span&gt; &lt;span class="n"&gt;removed&lt;/span&gt; &lt;span class="n"&gt;getTime&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt; 389&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;event&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; 388
&lt;span class="n"&gt;SYSTEM&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Bonus&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;killing&lt;/span&gt; &lt;span class="n"&gt;sample&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Crazy&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;3&lt;span class="p"&gt;):&lt;/span&gt; 14
&lt;span class="n"&gt;SYSTEM&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Bonus&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;killing&lt;/span&gt; &lt;span class="n"&gt;sample&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Crazy&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;1&lt;span class="p"&gt;):&lt;/span&gt; 32
&lt;span class="n"&gt;SYSTEM&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Bonus&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;killing&lt;/span&gt; &lt;span class="n"&gt;sample&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Crazy&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;2&lt;span class="p"&gt;):&lt;/span&gt; 2
&lt;span class="n"&gt;SYSTEM&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Ram&lt;/span&gt; &lt;span class="n"&gt;bonus&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;killing&lt;/span&gt; &lt;span class="n"&gt;sample&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Crazy&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;4&lt;span class="p"&gt;):&lt;/span&gt; 11
&lt;span class="n"&gt;SYSTEM&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;theArtOfSteel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;TheArtOfSteel&lt;/span&gt; 0&lt;span class="p"&gt;.&lt;/span&gt;1&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;wins&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="nb"&gt;round&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;and:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="o"&gt;========================&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;
&lt;span class="n"&gt;Round&lt;/span&gt; 66 &lt;span class="n"&gt;of&lt;/span&gt; 200
&lt;span class="o"&gt;========================&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;
&lt;span class="n"&gt;class&lt;/span&gt; &lt;span class="n"&gt;robocode&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ScannedRobotEvent&lt;/span&gt; &lt;span class="n"&gt;not&lt;/span&gt; &lt;span class="n"&gt;removed&lt;/span&gt; &lt;span class="n"&gt;getTime&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt; 50&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;event&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; 49
&lt;span class="n"&gt;class&lt;/span&gt; &lt;span class="n"&gt;robocode&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ScannedRobotEvent&lt;/span&gt; &lt;span class="n"&gt;not&lt;/span&gt; &lt;span class="n"&gt;removed&lt;/span&gt; &lt;span class="n"&gt;getTime&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt; 51&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;event&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; 50
&lt;span class="n"&gt;class&lt;/span&gt; &lt;span class="n"&gt;robocode&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ScannedRobotEvent&lt;/span&gt; &lt;span class="n"&gt;not&lt;/span&gt; &lt;span class="n"&gt;removed&lt;/span&gt; &lt;span class="n"&gt;getTime&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt; 51&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;event&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; 50
&lt;span class="n"&gt;class&lt;/span&gt; &lt;span class="n"&gt;robocode&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;HitRobotEvent&lt;/span&gt; &lt;span class="n"&gt;not&lt;/span&gt; &lt;span class="n"&gt;removed&lt;/span&gt; &lt;span class="n"&gt;getTime&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt; 52&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;event&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; 51
&lt;span class="n"&gt;class&lt;/span&gt; &lt;span class="n"&gt;robocode&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ScannedRobotEvent&lt;/span&gt; &lt;span class="n"&gt;not&lt;/span&gt; &lt;span class="n"&gt;removed&lt;/span&gt; &lt;span class="n"&gt;getTime&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt; 52&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;event&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; 51
&lt;span class="n"&gt;class&lt;/span&gt; &lt;span class="n"&gt;robocode&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ScannedRobotEvent&lt;/span&gt; &lt;span class="n"&gt;not&lt;/span&gt; &lt;span class="n"&gt;removed&lt;/span&gt; &lt;span class="n"&gt;getTime&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt; 52&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;event&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; 51
&lt;span class="n"&gt;SYSTEM&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Bonus&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;killing&lt;/span&gt; &lt;span class="n"&gt;sample&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Crazy&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;4&lt;span class="p"&gt;):&lt;/span&gt; 15
&lt;span class="n"&gt;SYSTEM&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Bonus&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;killing&lt;/span&gt; &lt;span class="n"&gt;sample&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Crazy&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;1&lt;span class="p"&gt;):&lt;/span&gt; 25
&lt;span class="n"&gt;SYSTEM&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;theArtOfSteel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;TheArtOfSteel&lt;/span&gt; 0&lt;span class="p"&gt;.&lt;/span&gt;1&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;wins&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="nb"&gt;round&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;I hope you can look into this matter.&lt;/p&gt;
&lt;p&gt;Greets, BitJunky&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Anonymous</dc:creator><pubDate>Sat, 15 Dec 2012 16:10:00 -0000</pubDate><guid>https://sourceforge.net191fe76206dc949670ab8b20c46a047a72827253</guid></item></channel></rss>