Program: 11009
Project: 11009
Buggy source:
/** 
 * Draw the camera path
 */
private void drawPath(DrawContext dc){
  if (frameCount <= 0 || dc.isPickingMode()) {
    return;
  }
  GL2 gl=dc.getGL().getGL2();
  OGLStackHandler stack=new OGLStackHandler();
  stack.pushAttrib(gl,GL2.GL_CURRENT_BIT | GL2.GL_POINT_BIT | GL2.GL_LINE_BIT| GL2.GL_HINT_BIT| GL2.GL_LIGHTING_BIT| GL2.GL_DEPTH_BUFFER_BIT);
  stack.pushClientAttrib(gl,GL2.GL_CLIENT_VERTEX_ARRAY_BIT);
  boolean popRefCenter=false;
  try {
synchronized (pathBufferLock) {
      if (pathReferenceCenter != null) {
        dc.getView().pushReferenceCenter(dc,pathReferenceCenter);
        popRefCenter=true;
      }
      gl.glEnableClientState(GL2.GL_VERTEX_ARRAY);
      gl.glEnableClientState(GL2.GL_COLOR_ARRAY);
      gl.glShadeModel(GL2.GL_SMOOTH);
      gl.glEnable(GL2.GL_LINE_SMOOTH);
      gl.glEnable(GL2.GL_POINT_SMOOTH);
      gl.glEnable(GL2.GL_BLEND);
      gl.glBlendFunc(GL2.GL_SRC_ALPHA,GL2.GL_ONE_MINUS_SRC_ALPHA);
      gl.glHint(GL2.GL_LINE_SMOOTH_HINT,GL2.GL_NICEST);
      gl.glHint(GL2.GL_POINT_SMOOTH_HINT,GL2.GL_NICEST);
      gl.glLineWidth(2.0f);
      gl.glPointSize(2.0f);
      int numberOfPointsInPath=animation.getFrameOfLastKeyFrame() - animation.getFrameOfFirstKeyFrame() + 1;
      if (numberOfPointsInPath <= 1) {
        return;
      }
      if (enableDepthTesting) {
        gl.glEnable(GL2.GL_DEPTH_TEST);
      }
 else {
        gl.glDisable(GL2.GL_DEPTH_TEST);
      }
      gl.glShadeModel(GL2.GL_FLAT);
      gl.glColorPointer(3,GL2.GL_DOUBLE,0,pathColourFrontBuffer);
      gl.glVertexPointer(3,GL2.GL_DOUBLE,0,pathVertexFrontBuffer);
      gl.glDepthMask(false);
      gl.glDrawArrays(GL2.GL_LINE_STRIP,0,numberOfPointsInPath);
      gl.glDrawArrays(GL2.GL_POINTS,0,numberOfPointsInPath);
      gl.glDepthMask(true);
      gl.glDrawArrays(GL2.GL_LINE_STRIP,0,numberOfPointsInPath);
    }
  }
  finally {
    if (popRefCenter) {
      dc.getView().popReferenceCenter(dc);
    }
    stack.pop(gl);
  }
}

Fixed version (ground truth):
/** 
 * Draw the camera path
 */
private void drawPath(DrawContext dc){
  if (frameCount <= 0 || dc.isPickingMode()) {
    return;
  }
  GL2 gl=dc.getGL().getGL2();
  OGLStackHandler stack=new OGLStackHandler();
  stack.pushAttrib(gl,GL2.GL_CURRENT_BIT | GL2.GL_POINT_BIT | GL2.GL_LINE_BIT| GL2.GL_HINT_BIT| GL2.GL_LIGHTING_BIT| GL2.GL_DEPTH_BUFFER_BIT);
  stack.pushClientAttrib(gl,GL2.GL_CLIENT_VERTEX_ARRAY_BIT);
  boolean popRefCenter=false;
  try {
synchronized (pathBufferLock) {
      if (pathReferenceCenterFront != null) {
        dc.getView().pushReferenceCenter(dc,pathReferenceCenterFront);
        popRefCenter=true;
      }
      gl.glEnableClientState(GL2.GL_VERTEX_ARRAY);
      gl.glEnableClientState(GL2.GL_COLOR_ARRAY);
      gl.glShadeModel(GL2.GL_SMOOTH);
      gl.glEnable(GL2.GL_LINE_SMOOTH);
      gl.glEnable(GL2.GL_POINT_SMOOTH);
      gl.glEnable(GL2.GL_BLEND);
      gl.glBlendFunc(GL2.GL_SRC_ALPHA,GL2.GL_ONE_MINUS_SRC_ALPHA);
      gl.glHint(GL2.GL_LINE_SMOOTH_HINT,GL2.GL_NICEST);
      gl.glHint(GL2.GL_POINT_SMOOTH_HINT,GL2.GL_NICEST);
      gl.glLineWidth(2.0f);
      gl.glPointSize(2.0f);
      int numberOfPointsInPath=animation.getFrameOfLastKeyFrame() - animation.getFrameOfFirstKeyFrame() + 1;
      if (numberOfPointsInPath <= 1) {
        return;
      }
      if (enableDepthTesting) {
        gl.glEnable(GL2.GL_DEPTH_TEST);
      }
 else {
        gl.glDisable(GL2.GL_DEPTH_TEST);
      }
      gl.glShadeModel(GL2.GL_FLAT);
      gl.glColorPointer(3,GL2.GL_DOUBLE,0,pathColourFrontBuffer);
      gl.glVertexPointer(3,GL2.GL_DOUBLE,0,pathVertexFrontBuffer);
      gl.glDepthMask(false);
      gl.glDrawArrays(GL2.GL_LINE_STRIP,0,numberOfPointsInPath);
      gl.glDrawArrays(GL2.GL_POINTS,0,numberOfPointsInPath);
      gl.glDepthMask(true);
      gl.glDrawArrays(GL2.GL_LINE_STRIP,0,numberOfPointsInPath);
    }
  }
  finally {
    if (popRefCenter) {
      dc.getView().popReferenceCenter(dc);
    }
    stack.pop(gl);
  }
}