Buffer Overflow Exception with Billboards

Has anyone seen something like this before:


Exception in thread "main" java.nio.BufferOverflowException
        at java.nio.Buffer.nextPutIndex(Buffer.java:419)
        at java.nio.DirectFloatBufferU.put(DirectFloatBufferU.java:232)
        at com.xith3d.scenegraph.GeomNioFloatData.setFloats(GeomNioFloatData.java:169)
        at com.xith3d.scenegraph.GeomContainer.setCoordinate(GeomContainer.java:564)
        at com.xith3d.scenegraph.Billboard.updateData(Billboard.java:196)
        at com.xith3d.scenegraph.GeomContainer.updateData(GeomContainer.java:625)
        at com.xith3d.scenegraph.Billboard.newFrame(Billboard.java:116)
        at com.xith3d.scenegraph.View.renderNode(View.java:1081)
        at com.xith3d.scenegraph.View.renderNode(View.java:1015)
        at com.xith3d.scenegraph.View.renderNode(View.java:1015)
        at com.xith3d.scenegraph.View.renderNode(View.java:968)
        at com.xith3d.scenegraph.View.renderNode(View.java:1015)
        at com.xith3d.scenegraph.View.renderNode(View.java:1015)
        at com.xith3d.scenegraph.View.renderNode(View.java:1015)
        at com.xith3d.scenegraph.View.renderNode(View.java:1015)
        at com.xith3d.scenegraph.View.renderNode(View.java:1015)
        at com.xith3d.scenegraph.View.renderNode(View.java:1015)
        at com.xith3d.scenegraph.View.renderNode(View.java:1015)
        at com.xith3d.scenegraph.View.renderNode(View.java:1015)
        at com.xith3d.scenegraph.View.renderNode(View.java:1015)
        at com.xith3d.scenegraph.View.getRenderFrame(View.java:824)
        at com.xith3d.scenegraph.View.renderOnce(View.java:717)
        at com.xith3d.scenegraph.View.renderOnce(View.java:655)

I have about 30 models in my scene, each with a billboard thats used to label them. I think this is the 3rd or 4th time this error has occurred over the last 3 weeks. I’m not sure what causes it but it seems to be linked occur when I move models around in the scene. The rendering loop looks like this:


/**
 * Starts the rendering loop.
 */
  public void start() {
    while(true) {
 
      // Handle layers, transforms, behavior, mouse, keyboard here
      // Picking interactions
      synchronized(pickParamsMutex) {
        if(mousePressed) {
          PickRenderResult[] results = pick();
                                                                                                                                                                        ... set the selected node ...                                                                                                                                                              
          mousePressed = false;
        }
      }
                                                                                                                                                               
    ... do camera stuff ...
 
    view.renderOnce();
    }
  }

Dragging a model with the mouse updates the models location transform which is the subtree that also contains the Billboard (offset from the model by some amount). Any ideas?