Program: 11394
Project: 11394
Buggy source:
protected void paintTag(GL gl,Tag tag,TaggedAxis1D taggedAxis,GlimpseBounds bounds){
  int width=bounds.getWidth();
  int y=taggedAxis.valueToScreenPixel(tag.getValue());
  int xMin=getTagMinX(width);
  int xMid=getTagPointerMaxX(width);
  int xMax=getTagMaxX(width);
  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(xMin).put(y);
  xy.put(xMid).put(y - tagHalfWidth);
  xy.put(xMid).put(y + tagHalfWidth);
  xy.put(xMax).put(y - tagHalfWidth);
  xy.put(xMid).put(y - tagHalfWidth);
  xy.put(xMid).put(y + tagHalfWidth);
  xy.put(xMid).put(y + tagHalfWidth);
  xy.put(xMax).put(y + tagHalfWidth);
  xy.put(xMax).put(y - tagHalfWidth);
  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(xMin,y);
  pathOutline.lineTo(xMid,y + tagHalfWidth);
  pathOutline.lineTo(xMax,y + tagHalfWidth);
  pathOutline.lineTo(xMax,y - tagHalfWidth);
  pathOutline.lineTo(xMid,y - tagHalfWidth);
  pathOutline.lineTo(xMin,y);
  progOutline.begin(gl3);
  try {
    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 width=bounds.getWidth();
  int y=taggedAxis.valueToScreenPixel(tag.getValue());
  int xMin=getTagMinX(width);
  int xMid=getTagPointerMaxX(width);
  int xMax=getTagMaxX(width);
  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(xMin).put(y);
  xy.put(xMid).put(y - tagHalfWidth);
  xy.put(xMid).put(y + tagHalfWidth);
  xy.put(xMax).put(y - tagHalfWidth);
  xy.put(xMid).put(y - tagHalfWidth);
  xy.put(xMid).put(y + tagHalfWidth);
  xy.put(xMid).put(y + tagHalfWidth);
  xy.put(xMax).put(y + tagHalfWidth);
  xy.put(xMax).put(y - tagHalfWidth);
  tagXyVbo.seal(gl);
  GLUtils.enableStandardBlending(gl);
  try {
    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);
    }
    tagStyle.rgba=color;
    tagStyle.rgba[3]=1.0f;
    tagStyle.thickness_PX=tagPointerOutlineWidth;
    pathOutline.clear();
    pathOutline.moveTo(xMin,y);
    pathOutline.lineTo(xMid,y + tagHalfWidth);
    pathOutline.lineTo(xMax,y + tagHalfWidth);
    pathOutline.lineTo(xMax,y - tagHalfWidth);
    pathOutline.lineTo(xMid,y - tagHalfWidth);
    pathOutline.closeLoop();
    progOutline.begin(gl3);
    try {
      progOutline.setPixelOrtho(gl3,bounds);
      progOutline.setViewport(gl3,bounds);
      progOutline.draw(gl3,tagStyle,pathOutline);
    }
  finally {
      progOutline.end(gl3);
    }
  }
  finally {
    GLUtils.disableBlending(gl3);
  }
}