[Avrora] Array index out of bounds exception

Yang Chen chenyang at cs.utah.edu
Mon May 19 20:41:02 PDT 2008


ibrahim badarin wrote:
> Dear Chenyang:
> kindly , how much each cycle in mica2 consumes power.
> thanks

I am sorry. It is beyond my knowledge.

- Yang

> --- Yang Chen <chenyang at cs.utah.edu> wrote:
> 
> 
>>Hi All,
>>
>>I attached my patch for it.
>>
>>transmission.data is doubled when
>>ArrayIndexOutOfBoundsException is 
>>catched.
>>
>>Thanks in advance for any suggestion.
>>
>>- Yang
>>
>>
>>--- avrora/sim/radio/Medium_orig.java	2008-05-18
>>23:25:20.000000000 -0700
>>+++ avrora/sim/radio/Medium.java	2008-05-18
>>23:15:36.000000000 -0700
>>@@ -186,7 +186,15 @@ public class Medium {
>>                      int indx =
>>transmission.counter++;
>>                      byte val = nextByte();
>>                      //System.out.println("Ticker:
>>indx"+indx);
>>-                    transmission.data[indx] = val;
>>+                    try
>>+                    {
>>+                        transmission.data[indx] =
>>val;
>>+                    }
>>+                    catch
>>(ArrayIndexOutOfBoundsException e)
>>+                    {
>>+                       
>>transmission.increaseData();
>>+                        transmission.data[indx] =
>>val;
>>+                    }
>>                      if (probeList != null) 
>>probeList.fireBeforeTransmit(Transmitter.this, val);
>>                      clock.insertEvent(this,
>>cyclesPerByte);
>>                  }
>>@@ -409,6 +417,13 @@ public class Medium {
>>              }
>>              return (byte)hi;
>>          }
>>+
>>+        public void increaseData() {
>>+            int newSize = data.length * 2;
>>+            byte[] newData = new byte[newSize];
>>+            System.arraycopy(data, 0, newData, 0,
>>data.length);
>>+            data = newData;
>>+        }
>>      }
>>
>>      public final Synchronizer synch;
>>
>>
>>Roy Shea wrote:
>>
>>>>>Looks like you have a transmission that is
>>
>>longer than the internal
>>
>>>>>128 byte limit. That's bad. The implementation
>>
>>of Medium should
>>
>>>>>grow this array, but it doesn't.
>>>
>>>
>>>I second this analysis.  The problem looks to be
>>
>>due to a simple
>>
>>>overflow of a static buffer.  Avrora should
>>
>>probably grow the array or
>>
>>>at least catch the bug and drop the packet, but it
>>
>>doesn't.  Fixing this
>>
>>>would require one of us to go in and generate the
>>
>>patch.  I know that I'm
>>
>>>swamped with other research :-(  If you've got the
>>
>>Java skills, jump in
>>
>>>and send the list a patch.
>>>
>>
>>_______________________________________________
>>Avrora mailing list
>>Avrora at lists.ucla.edu
>>
> 
> http://lists.ucla.edu/cgi-bin/mailman/listinfo/avrora
> 
> 
> 
> E.ibrahim badarin
>   Paltel
> 
> 
> 
>       



More information about the Avrora mailing list