Program: 11392
Project: 11392
Buggy source:
protected void paintTag(GL gl,Tag tag,TaggedAxis1D taggedAxis,GlimpseBounds bounds){
  int height=bounds.getHeight();
  int x=taggedAxis.valueToScreenPixel(tag.getValue());
  int yMin=getTagMinY(height);
  int yMid=getTagPointerMaxY(height);
  int yMax=getTagMaxY(height);
  float[] color=tagColor;
  Object colorValue=tag.getAttribute(Tag.TAG_COLOR_ATTR);
  if (colorValue != null && colorValue instanceof float[]) {
    color=(float[])colorValue;
  }
  GL3 gl3=gl.getGL3();
  FloatBuffer xy=tagXyVbo.mapFloats(gl,18);
  xy.put(x).put(yMin);
  xy.put(x - tagHalfWidth).put(yMid);
  xy.put(x + tagHalfWidth).put(yMid);
  xy.put(x - tagHalfWidth).put(yMax);
  xy.put(x - tagHalfWidth).put(yMid);
  xy.put(x + tagHalfWidth).put(yMid);
  xy.put(x + tagHalfWidth).put(yMid);
  xy.put(x + tagHalfWidth).put(yMax);
  xy.put(x - tagHalfWidth).put(yMax);
  tagXyVbo.seal(gl);
  GLUtils.enableStandardBlending(gl);
  flatColorProg.begin(gl3);
  try {
    flatColorProg.setPixelOrtho(gl3,bounds);
    flatColorProg.setColor(gl3,color[0],color[1],color[2],0.3f);
    flatColorProg.draw(gl3,GL.GL_TRIANGLES,tagXyVbo,0,9);
  }
  finally {
    flatColorProg.end(gl3);
    gl.glDisable(GL.GL_BLEND);
  }
  tagStyle.rgba=color;
  tagStyle.thickness_PX=tagPointerOutlineWidth;
  pathOutline.clear();
  pathOutline.moveTo(x,yMin);
  pathOutline.lineTo(x + tagHalfWidth,yMid);
  pathOutline.lineTo(x + tagHalfWidth,yMax);
  pathOutline.lineTo(x - tagHalfWidth,yMax);
  pathOutline.lineTo(x - tagHalfWidth,yMid);
  pathOutline.lineTo(x,yMin);
  progOutline.begin(gl3);
  try {
    progOutline.setPixelOrtho(gl3,bounds);
    progOutline.setViewport(gl3,bounds);
    progOutline.draw(gl3,tagStyle,pathOutline);
  }
  finally {
    progOutline.end(gl3);
  }
}

Fixed version (ground truth):
protected void paintTag(GL gl,Tag tag,TaggedAxis1D taggedAxis,GlimpseBounds bounds){
  int height=bounds.getHeight();
  int x=taggedAxis.valueToScreenPixel(tag.getValue());
  int yMin=getTagMinY(height);
  int yMid=getTagPointerMaxY(height);
  int yMax=getTagMaxY(height);
  float[] color=tagColor;
  Object colorValue=tag.getAttribute(Tag.TAG_COLOR_ATTR);
  if (colorValue != null && colorValue instanceof float[]) {
    color=(float[])colorValue;
  }
  GL3 gl3=gl.getGL3();
  FloatBuffer xy=tagXyVbo.mapFloats(gl,18);
  xy.put(x).put(yMin);
  xy.put(x - tagHalfWidth).put(yMid);
  xy.put(x + tagHalfWidth).put(yMid);
  xy.put(x - tagHalfWidth).put(yMax);
  xy.put(x - tagHalfWidth).put(yMid);
  xy.put(x + tagHalfWidth).put(yMid);
  xy.put(x + tagHalfWidth).put(yMid);
  xy.put(x + tagHalfWidth).put(yMax);
  xy.put(x - tagHalfWidth).put(yMax);
  tagXyVbo.seal(gl);
  GLUtils.enableStandardBlending(gl);
  flatColorProg.begin(gl3);
  try {
    flatColorProg.setPixelOrtho(gl3,bounds);
    flatColorProg.setColor(gl3,color[0],color[1],color[2],0.3f);
    flatColorProg.draw(gl3,GL.GL_TRIANGLES,tagXyVbo,0,9);
  }
  finally {
    flatColorProg.end(gl3);
    gl.glDisable(GL.GL_BLEND);
  }
  tagStyle.rgba=color;
  tagStyle.thickness_PX=tagPointerOutlineWidth;
  pathOutline.clear();
  pathOutline.moveTo(x,yMin);
  pathOutline.lineTo(x + tagHalfWidth,yMid);
  pathOutline.lineTo(x + tagHalfWidth,yMax);
  pathOutline.lineTo(x - tagHalfWidth,yMax);
  pathOutline.lineTo(x - tagHalfWidth,yMid);
  pathOutline.closeLoop();
  progOutline.begin(gl3);
  try {
    progOutline.setPixelOrtho(gl3,bounds);
    progOutline.setViewport(gl3,bounds);
    progOutline.draw(gl3,tagStyle,pathOutline);
  }
  finally {
    progOutline.end(gl3);
  }
}