[Avrora] Array index out of bounds exception

ibrahim badarin ibrahim1711973 at yahoo.com
Mon May 19 04:23:47 PDT 2008


Dear Chenyang:
kindly , how much each cycle in mica2 consumes power.
thanks
--- 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