[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

JANOS+ANTS: nodes crash when old code is replaced with new?




I've been experimenting with a custom form of the ping application, with
the intent of playing with some security stuff.  However, I've observed
the following behavior: when the code for mypingcapsule is first
distributed across my test network, it works fine.  If I then modify the
code, and perform a second ping, the first node it reaches that still
cached the old code dies with an out of memory error (attached below).
For reference, my test setup is four FreeBSD 3.4 boxes running JDK 1.1.18,
and compiled using Jikes 1.06.

The procedure I follow is:

Bring up test network, except first node that runs ping app.
Compile ping app.
Bring up first node, which runs ping app, and all goes well.
Shutdown first node.
Recompile ping app with modification that changes the bytecode.
Bring up first node, which runs ping app, and second node in route dies.

My impression was that the code was identified using an MD5 hash, which
should change when the code changes, meaning that the new code would
migrate over the network, gradually swelling code caches but still
working.  This does not appear to be the behavior I'm seeing.  Any advice
would be much welcome :-).

Here's the error:

java.lang.OutOfMemoryError: 
        at edu.utah.janos.core.UdpBuffer.<init>(UdpBuffer.java:77)
        at edu.utah.janos.core.UdpBuffer.addBuffers(UdpBuffer.java:52)
        at edu.utah.janos.core.FlowState.<init>(FlowState.java:53)
        at edu.utah.janos.core.Flow.<init>(Flow.java:130)
        at edu.utah.janos.core.Flow.newFlow(Flow.java:106)
        at
edu.utah.janos.ants.ants.PrimordialNode.fireUpNewFlow(PrimordialNode.java:599)
        at
edu.utah.janos.ants.ants.PrimordialNode.fireUpNewProtocolFlow(PrimordialNode.java:557)
        at
edu.utah.janos.ants.ants.PrimordialNode.addMID(PrimordialNode.java:514)
        at
edu.utah.janos.ants.ants.MIDIDResponseCapsule.evaluate(MIDIDResponseCapsule.java:135)
        at
edu.utah.janos.ants.ants.CapsuleChannel.receive(CapsuleChannel.java:150)
        at edu.utah.janos.core.PacketWorker.run(PacketWorker.java:77)
        at edu.utah.janos.core.WorkItem.doItem(WorkItem.java:67)
        at edu.utah.janos.core.ThreadPool.doWork(ThreadPool.java:213)
        at edu.utah.janos.core.Thread.run(Thread.java:93)
        at edu.utah.janos.core.NativeThread.run(NativeThread.java:115)
PANIC: Uh-oh.  fireUpNewFlow() blew up.
java.lang.Throwable
        at edu.utah.janos.core.Debug.printStackTrace(Debug.java:328)
        at edu.utah.janos.core.Debug.dPanic(Debug.java:406)
        at
edu.utah.janos.ants.ants.PrimordialNode.addMID(PrimordialNode.java:518)
        at
edu.utah.janos.ants.ants.MIDIDResponseCapsule.evaluate(MIDIDResponseCapsule.java:135)
        at
edu.utah.janos.ants.ants.CapsuleChannel.receive(CapsuleChannel.java:150)
        at edu.utah.janos.core.PacketWorker.run(PacketWorker.java:77)
        at edu.utah.janos.core.WorkItem.doItem(WorkItem.java:67)
        at edu.utah.janos.core.ThreadPool.doWork(ThreadPool.java:213)
        at edu.utah.janos.core.Thread.run(Thread.java:93)
        at edu.utah.janos.core.NativeThread.run(NativeThread.java:115)
Debug.exit() invoked by Primoridal Node Flow





  Robert N M Watson 

robert@fledge.watson.org              http://www.watson.org/~robert/
PGP key fingerprint: AF B5 5F FF A6 4A 79 37  ED 5F 55 E9 58 04 6A B1
TIS Labs at Network Associates, Safeport Network Services





[ Janos ] [ OSKit ] [ Network Testbed ] [ Flick ] [ Fluke ]
Flux Research Group / Department of Computer Science / University of Utah