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

Fixed version (ground truth):
/** 
 * Draw the camera path
 */
private void drawPath(DrawContext dc){
  if (frameCount <= 0 || dc.isPickingMode()) {
    return;
  }
  GL gl=dc.getGL();
  gl.glPushClientAttrib(GL.GL_CLIENT_VERTEX_ARRAY_BIT);
  gl.glPushAttrib(GL.GL_ALL_ATTRIB_BITS);
  boolean popRefCenter=false;
  try {
synchronized (pathBufferLock) {
      if (pathReferenceCenter != null) {
        dc.getView().pushReferenceCenter(dc,pathReferenceCenter);
        popRefCenter=true;
      }
      gl.glEnableClientState(GL.GL_VERTEX_ARRAY);
      gl.glEnableClientState(GL.GL_COLOR_ARRAY);
      gl.glShadeModel(GL.GL_SMOOTH);
      gl.glEnable(GL.GL_LINE_SMOOTH);
      gl.glEnable(GL.GL_POINT_SMOOTH);
      gl.glEnable(GL.GL_BLEND);
      gl.glBlendFunc(GL.GL_SRC_ALPHA,GL.GL_ONE_MINUS_SRC_ALPHA);
      gl.glHint(GL.GL_LINE_SMOOTH_HINT,GL.GL_NICEST);
      gl.glHint(GL.GL_POINT_SMOOTH_HINT,GL.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(GL.GL_DEPTH_TEST);
      }
 else {
        gl.glDisable(GL.GL_DEPTH_TEST);
      }
      gl.glShadeModel(GL.GL_FLAT);
      gl.glColorPointer(3,GL.GL_DOUBLE,0,pathColourFrontBuffer);
      gl.glVertexPointer(3,GL.GL_DOUBLE,0,pathVertexFrontBuffer);
      gl.glDepthMask(false);
      gl.glDrawArrays(GL.GL_LINE_STRIP,0,numberOfPointsInPath);
      gl.glDrawArrays(GL.GL_POINTS,0,numberOfPointsInPath);
      gl.glDepthMask(true);
      gl.glDrawArrays(GL.GL_LINE_STRIP,0,numberOfPointsInPath);
    }
  }
  finally {
    if (popRefCenter) {
      dc.getView().popReferenceCenter(dc);
    }
    gl.glPopAttrib();
    gl.glPopClientAttrib();
  }
}