Program: 82600
Project: 82600
Buggy source:
@Override public void render(){
  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  MatrixStack modelMatrix=new MatrixStack();
  modelMatrix.setTop(viewPole.calcMatrix());
  Vector4 worldLightPos=calcLightPosition();
  Vector4 lightPosCameraSpace=modelMatrix.getTop().mult(worldLightPos);
  fragWhiteDiffuseColor.program.begin();
  glUniform4f(fragWhiteDiffuseColor.lightIntensityUniform,0.8f,0.8f,0.8f,1);
  glUniform4f(fragWhiteDiffuseColor.ambientIntensityUniform,0.2f,0.2f,0.2f,1);
  glUniform3(fragWhiteDiffuseColor.cameraSpaceLightPosUniform,lightPosCameraSpace.toBuffer());
  glUniform1f(fragWhiteDiffuseColor.lightAttenuationUniform,lightAttenuation);
  glUniform1i(fragWhiteDiffuseColor.useRSquareUniform,useRSquare ? 1 : 0);
  fragWhiteDiffuseColor.program.end();
  fragVertexDiffuseColor.program.begin();
  glUniform4f(fragVertexDiffuseColor.lightIntensityUniform,0.8f,0.8f,0.8f,1);
  glUniform4f(fragVertexDiffuseColor.ambientIntensityUniform,0.2f,0.2f,0.2f,1);
  glUniform3(fragVertexDiffuseColor.cameraSpaceLightPosUniform,lightPosCameraSpace.toBuffer());
  glUniform1f(fragVertexDiffuseColor.lightAttenuationUniform,lightAttenuation);
  glUniform1i(fragVertexDiffuseColor.useRSquareUniform,useRSquare ? 1 : 0);
  fragVertexDiffuseColor.program.end();
{
    modelMatrix.pushMatrix();
{
      modelMatrix.pushMatrix();
      fragWhiteDiffuseColor.program.begin();
      glUniformMatrix4(fragWhiteDiffuseColor.modelToCameraMatrixUniform,false,modelMatrix.getTop().toBuffer());
      glUniformMatrix3(fragWhiteDiffuseColor.normalModelToCameraMatrixUniform,false,new Matrix3(modelMatrix.getTop()).inverse().transpose().toBuffer());
      planeMesh.render();
      fragWhiteDiffuseColor.program.end();
      modelMatrix.popMatrix();
    }
{
      modelMatrix.pushMatrix();
      modelMatrix.getTop().mult(objectPole.calcMatrix());
      if (scaleCyl)       modelMatrix.getTop().scale(1,1,0.2f);
      Matrix3 normMatrix=new Matrix3(modelMatrix.getTop()).inverse().transpose();
      if (drawColoredCyl) {
        fragVertexDiffuseColor.program.begin();
        glUniformMatrix4(fragVertexDiffuseColor.modelToCameraMatrixUniform,false,modelMatrix.getTop().toBuffer());
        glUniformMatrix3(fragVertexDiffuseColor.normalModelToCameraMatrixUniform,false,normMatrix.toBuffer());
        cylinderMesh.render("String_Node_Str");
        fragVertexDiffuseColor.program.end();
      }
 else {
        fragWhiteDiffuseColor.program.begin();
        glUniformMatrix4(fragWhiteDiffuseColor.modelToCameraMatrixUniform,false,modelMatrix.getTop().toBuffer());
        glUniformMatrix3(fragWhiteDiffuseColor.normalModelToCameraMatrixUniform,false,normMatrix.toBuffer());
        cylinderMesh.render("String_Node_Str");
        fragVertexDiffuseColor.program.end();
      }
      modelMatrix.popMatrix();
    }
    if (drawLight) {
      modelMatrix.pushMatrix();
      modelMatrix.getTop().translate(new Vector3(worldLightPos));
      modelMatrix.getTop().scale(0.1f,0.1f,0.1f);
      unlit.program.begin();
      glUniformMatrix4(unlit.modelToCameraMatrixUniform,false,modelMatrix.getTop().toBuffer());
      glUniform4f(unlit.objectColorUniform,0.8078f,0.8706f,0.9922f,1);
      cubeMesh.render("String_Node_Str");
      unlit.program.end();
      modelMatrix.popMatrix();
    }
    modelMatrix.popMatrix();
  }
}

Fixed version (ground truth):
@Override public void render(){
  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  MatrixStack modelMatrix=new MatrixStack();
  modelMatrix.setTop(viewPole.calcMatrix());
  Vector4 worldLightPos=calcLightPosition();
  Vector4 lightPosCameraSpace=modelMatrix.getTop().mult(worldLightPos);
  fragWhiteDiffuseColor.program.begin();
  glUniform4f(fragWhiteDiffuseColor.lightIntensityUniform,0.8f,0.8f,0.8f,1);
  glUniform4f(fragWhiteDiffuseColor.ambientIntensityUniform,0.2f,0.2f,0.2f,1);
  glUniform3(fragWhiteDiffuseColor.cameraSpaceLightPosUniform,lightPosCameraSpace.toBuffer());
  glUniform1f(fragWhiteDiffuseColor.lightAttenuationUniform,lightAttenuation);
  glUniform1i(fragWhiteDiffuseColor.useRSquareUniform,useRSquare ? 1 : 0);
  fragWhiteDiffuseColor.program.end();
  fragVertexDiffuseColor.program.begin();
  glUniform4f(fragVertexDiffuseColor.lightIntensityUniform,0.8f,0.8f,0.8f,1);
  glUniform4f(fragVertexDiffuseColor.ambientIntensityUniform,0.2f,0.2f,0.2f,1);
  glUniform3(fragVertexDiffuseColor.cameraSpaceLightPosUniform,lightPosCameraSpace.toBuffer());
  glUniform1f(fragVertexDiffuseColor.lightAttenuationUniform,lightAttenuation);
  glUniform1i(fragVertexDiffuseColor.useRSquareUniform,useRSquare ? 1 : 0);
  fragVertexDiffuseColor.program.end();
{
    modelMatrix.pushMatrix();
{
      modelMatrix.pushMatrix();
      fragWhiteDiffuseColor.program.begin();
      glUniformMatrix4(fragWhiteDiffuseColor.modelToCameraMatrixUniform,false,modelMatrix.getTop().toBuffer());
      glUniformMatrix3(fragWhiteDiffuseColor.normalModelToCameraMatrixUniform,false,new Matrix3(modelMatrix.getTop()).inverse().transpose().toBuffer());
      planeMesh.render();
      fragWhiteDiffuseColor.program.end();
      modelMatrix.popMatrix();
    }
{
      modelMatrix.pushMatrix();
      modelMatrix.getTop().mult(objectPole.calcMatrix());
      if (scaleCyl)       modelMatrix.getTop().scale(1,1,0.2f);
      Matrix3 normMatrix=new Matrix3(modelMatrix.getTop()).inverse().transpose();
      if (drawColoredCyl) {
        fragVertexDiffuseColor.program.begin();
        glUniformMatrix4(fragVertexDiffuseColor.modelToCameraMatrixUniform,false,modelMatrix.getTop().toBuffer());
        glUniformMatrix3(fragVertexDiffuseColor.normalModelToCameraMatrixUniform,false,normMatrix.toBuffer());
        cylinderMesh.render("String_Node_Str");
        fragVertexDiffuseColor.program.end();
      }
 else {
        fragWhiteDiffuseColor.program.begin();
        glUniformMatrix4(fragWhiteDiffuseColor.modelToCameraMatrixUniform,false,modelMatrix.getTop().toBuffer());
        glUniformMatrix3(fragWhiteDiffuseColor.normalModelToCameraMatrixUniform,false,normMatrix.toBuffer());
        cylinderMesh.render("String_Node_Str");
        fragWhiteDiffuseColor.program.end();
      }
      modelMatrix.popMatrix();
    }
    if (drawLight) {
      modelMatrix.pushMatrix();
      modelMatrix.getTop().translate(new Vector3(worldLightPos));
      modelMatrix.getTop().scale(0.1f,0.1f,0.1f);
      unlit.program.begin();
      glUniformMatrix4(unlit.modelToCameraMatrixUniform,false,modelMatrix.getTop().toBuffer());
      glUniform4f(unlit.objectColorUniform,0.8078f,0.8706f,0.9922f,1);
      cubeMesh.render("String_Node_Str");
      unlit.program.end();
      modelMatrix.popMatrix();
    }
    modelMatrix.popMatrix();
  }
}