Program: 94235
Project: 94235
Buggy source:
public static void main(){
  profiler.stop("String_Node_Str");
  profiler.deltaTimes.put("String_Node_Str",(long)Math.max(profiler.deltaTimes.get("String_Node_Str") - (TICK_TIME * 1000000000),0));
  if (restartOnExport) {
    FileHandle done=Gdx.files.internal("String_Node_Str");
    if (done.exists()) {
      done.file().delete();
      restart();
    }
  }
  boolean screenShadersUsed=false;
  for (  Scene scene : scenes) {
    if (scene.screenShaders.size() > 0) {
      screenShadersUsed=true;
      break;
    }
  }
  profiler.start("String_Node_Str");
  Gdx.gl.glClearColor(display.clearColor.r,display.clearColor.g,display.clearColor.b,display.clearColor.a);
  Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
  Gdx.gl.glClearColor(0,0,0,0);
  Gdx.gl.glClear(GL20.GL_DEPTH_BUFFER_BIT);
  profiler.stop("String_Node_Str");
  time+=TICK_TIME * timeSpeed;
  ++GdxProcessor.currentTick;
  fingers.clear();
  for (  Finger f : allocatedFingers) {
    if (f.down() || f.up())     fingers.add(f);
  }
  profiler.stop("String_Node_Str");
  for (  Component c : components) {
    if (c.state != null)     c.state.main();
  }
  profiler.stop("String_Node_Str");
  Viewport vp;
  ArrayListScenes newSceneList=(ArrayListScenes)scenes.clone();
  boolean depthBufferCleared=false;
  boolean colorBufferCleared=false;
  for (int i=0; i < newSceneList.size(); i++) {
    Scene scene=newSceneList.get(i);
    boolean prevSceneRenderPassthrough=false;
    boolean nextSceneRenderPassthrough=false;
    if (i > 0)     prevSceneRenderPassthrough=newSceneList.get(i - 1).renderPassthrough;
    if (i < newSceneList.size() - 1)     nextSceneRenderPassthrough=newSceneList.get(i + 1).renderPassthrough;
    if (!prevSceneRenderPassthrough) {
      colorBufferCleared=false;
      depthBufferCleared=false;
    }
    scene.update();
    profiler.stop("String_Node_Str");
    if (!scene.valid() || !scene.visible)     continue;
    vp=scene.viewport;
    vp.apply();
    depthShaderProvider.update(scene);
    shaderProvider.update(scene);
    boolean frameBufferInUse=false;
    if (scene.screenShaders.size() > 0 || (screenShadersUsed && scene.renderPassthrough)) {
      frameBuffer.begin();
      frameBufferInUse=true;
      if (!colorBufferCleared) {
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
        colorBufferCleared=true;
      }
    }
    Gdx.gl.glClear(GL20.GL_DEPTH_BUFFER_BIT);
    renderWorld(modelBatch,scene,scene.camera);
    for (    Camera cam : scene.cameras) {
      if (cam.renderToTexture) {
        cam.update();
        if (cam.renderBuffer == null) {
          cam.initRenderBuffer();
        }
        cam.renderBuffer.begin();
        Gdx.gl.glClear(GL20.GL_DEPTH_BUFFER_BIT | GL20.GL_COLOR_BUFFER_BIT);
        renderWorld(modelBatch,scene,cam);
        cam.renderBuffer.end();
      }
    }
    if (frameBufferInUse) {
      frameBuffer.end();
      boolean usingDepth=false;
      for (      ScreenShader filter : scene.screenShaders) {
        if (filter.usingDepthTexture())         usingDepth=true;
      }
      if (usingDepth || scene.renderPassthrough) {
        Gdx.gl.glClearColor(1,1,1,1);
        depthBuffer.begin();
        if (!depthBufferCleared) {
          Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
          depthBufferCleared=true;
        }
        Gdx.gl.glClear(GL20.GL_DEPTH_BUFFER_BIT);
        renderWorld(depthBatch,scene,scene.camera);
        depthBuffer.end();
        depthBuffer.getColorBufferTexture().bind(2);
      }
      scene.lastFrameBuffer.getColorBufferTexture().bind(1);
      Gdx.gl.glActiveTexture(GL20.GL_TEXTURE0);
      Gdx.gl.glClearColor(0,0,0,0);
      for (      ScreenShader filter : scene.screenShaders) {
        if (!filter.active)         continue;
        filter.begin();
        filter.setUniformf("String_Node_Str",Bdx.time);
        filter.setUniformi("String_Node_Str",1);
        filter.setUniformi("String_Node_Str",2);
        filter.setUniformf("String_Node_Str",vp.w);
        filter.setUniformf("String_Node_Str",vp.h);
        filter.setUniformf("String_Node_Str",scene.camera.near());
        filter.setUniformf("String_Node_Str",scene.camera.far());
        filter.end();
        if (!availableTempBuffers.containsKey(filter.renderScale.x))         availableTempBuffers.put(filter.renderScale.x,new RenderBuffer(spriteBatch,Math.round(vp.size().x * filter.renderScale.x),Math.round(vp.size().y * filter.renderScale.y)));
        RenderBuffer tempBuffer=availableTempBuffers.get(filter.renderScale.x);
        tempBuffer.clear();
        frameBuffer.drawTo(tempBuffer,filter,0,0,frameBuffer.getWidth(),frameBuffer.getHeight());
        if (!filter.overlay)         frameBuffer.clear();
        tempBuffer.drawTo(frameBuffer);
      }
      if (!scene.renderPassthrough || scene == newSceneList.get(newSceneList.size() - 1) || !nextSceneRenderPassthrough)       frameBuffer.drawTo(null,null,vp.x,vp.y,vp.w,vp.h);
      scene.lastFrameBuffer.clear();
      frameBuffer.drawTo(scene.lastFrameBuffer);
    }
    scene.executeDrawCommands();
    Bullet.DebugDrawer debugDrawer=(Bullet.DebugDrawer)scene.world.getDebugDrawer();
    debugDrawer.drawWorld(scene.world,scene.camera.data);
    profiler.stop("String_Node_Str");
  }
  mouse.wheelMove=0;
  Bdx.display.changed=false;
  profiler.stop("String_Node_Str");
  profiler.updateVariables();
  if (profiler.visible()) {
    profiler.updateVisible();
    profiler.scene.update();
    Gdx.gl.glClear(GL20.GL_DEPTH_BUFFER_BIT);
    renderWorld(modelBatch,profiler.scene,profiler.scene.camera);
    profiler.scene.executeDrawCommands();
  }
  if (profiler.gl.isEnabled()) {
    profiler.gl.updateFields();
  }
  if (requestedRestart) {
    requestedRestart=false;
    Scene.clearColorDefaultSet=false;
    dispose();
    for (    Scene scene : new ArrayList<Scene>(scenes)) {
      scenes.remove(scene);
      scene.end();
    }
    if (profiler.visible()) {
      profiler.scene.end();
    }
    init();
    scenes.add(firstScene);
  }
  profiler.start("String_Node_Str");
}

Fixed version (ground truth):
public static void main(){
  profiler.stop("String_Node_Str");
  profiler.deltaTimes.put("String_Node_Str",(long)Math.max(profiler.deltaTimes.get("String_Node_Str") - (TICK_TIME * 1000000000),0));
  if (restartOnExport && Gdx.files.internal("String_Node_Str").lastModified() > startMillis) {
    startMillis=System.currentTimeMillis();
    restart();
  }
  boolean screenShadersUsed=false;
  for (  Scene scene : scenes) {
    if (scene.screenShaders.size() > 0) {
      screenShadersUsed=true;
      break;
    }
  }
  profiler.start("String_Node_Str");
  Gdx.gl.glClearColor(display.clearColor.r,display.clearColor.g,display.clearColor.b,display.clearColor.a);
  Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
  Gdx.gl.glClearColor(0,0,0,0);
  Gdx.gl.glClear(GL20.GL_DEPTH_BUFFER_BIT);
  profiler.stop("String_Node_Str");
  time+=TICK_TIME * timeSpeed;
  ++GdxProcessor.currentTick;
  fingers.clear();
  for (  Finger f : allocatedFingers) {
    if (f.down() || f.up())     fingers.add(f);
  }
  profiler.stop("String_Node_Str");
  for (  Component c : components) {
    if (c.state != null)     c.state.main();
  }
  profiler.stop("String_Node_Str");
  Viewport vp;
  ArrayListScenes newSceneList=(ArrayListScenes)scenes.clone();
  boolean depthBufferCleared=false;
  boolean colorBufferCleared=false;
  for (int i=0; i < newSceneList.size(); i++) {
    Scene scene=newSceneList.get(i);
    boolean prevSceneRenderPassthrough=false;
    boolean nextSceneRenderPassthrough=false;
    if (i > 0)     prevSceneRenderPassthrough=newSceneList.get(i - 1).renderPassthrough;
    if (i < newSceneList.size() - 1)     nextSceneRenderPassthrough=newSceneList.get(i + 1).renderPassthrough;
    if (!prevSceneRenderPassthrough) {
      colorBufferCleared=false;
      depthBufferCleared=false;
    }
    scene.update();
    profiler.stop("String_Node_Str");
    if (!scene.valid() || !scene.visible)     continue;
    vp=scene.viewport;
    vp.apply();
    depthShaderProvider.update(scene);
    shaderProvider.update(scene);
    boolean frameBufferInUse=false;
    if (scene.screenShaders.size() > 0 || (screenShadersUsed && scene.renderPassthrough)) {
      frameBuffer.begin();
      frameBufferInUse=true;
      if (!colorBufferCleared) {
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
        colorBufferCleared=true;
      }
    }
    Gdx.gl.glClear(GL20.GL_DEPTH_BUFFER_BIT);
    renderWorld(modelBatch,scene,scene.camera);
    for (    Camera cam : scene.cameras) {
      if (cam.renderToTexture) {
        cam.update();
        if (cam.renderBuffer == null) {
          cam.initRenderBuffer();
        }
        cam.renderBuffer.begin();
        Gdx.gl.glClear(GL20.GL_DEPTH_BUFFER_BIT | GL20.GL_COLOR_BUFFER_BIT);
        renderWorld(modelBatch,scene,cam);
        cam.renderBuffer.end();
      }
    }
    if (frameBufferInUse) {
      frameBuffer.end();
      boolean usingDepth=false;
      for (      ScreenShader filter : scene.screenShaders) {
        if (filter.usingDepthTexture())         usingDepth=true;
      }
      if (usingDepth || scene.renderPassthrough) {
        Gdx.gl.glClearColor(1,1,1,1);
        depthBuffer.begin();
        if (!depthBufferCleared) {
          Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
          depthBufferCleared=true;
        }
        Gdx.gl.glClear(GL20.GL_DEPTH_BUFFER_BIT);
        renderWorld(depthBatch,scene,scene.camera);
        depthBuffer.end();
        depthBuffer.getColorBufferTexture().bind(2);
      }
      scene.lastFrameBuffer.getColorBufferTexture().bind(1);
      Gdx.gl.glActiveTexture(GL20.GL_TEXTURE0);
      Gdx.gl.glClearColor(0,0,0,0);
      for (      ScreenShader filter : scene.screenShaders) {
        if (!filter.active)         continue;
        filter.begin();
        filter.setUniformf("String_Node_Str",Bdx.time);
        filter.setUniformi("String_Node_Str",1);
        filter.setUniformi("String_Node_Str",2);
        filter.setUniformf("String_Node_Str",vp.w);
        filter.setUniformf("String_Node_Str",vp.h);
        filter.setUniformf("String_Node_Str",scene.camera.near());
        filter.setUniformf("String_Node_Str",scene.camera.far());
        filter.end();
        if (!availableTempBuffers.containsKey(filter.renderScale.x))         availableTempBuffers.put(filter.renderScale.x,new RenderBuffer(spriteBatch,Math.round(vp.size().x * filter.renderScale.x),Math.round(vp.size().y * filter.renderScale.y)));
        RenderBuffer tempBuffer=availableTempBuffers.get(filter.renderScale.x);
        tempBuffer.clear();
        frameBuffer.drawTo(tempBuffer,filter,0,0,frameBuffer.getWidth(),frameBuffer.getHeight());
        if (!filter.overlay)         frameBuffer.clear();
        tempBuffer.drawTo(frameBuffer);
      }
      if (!scene.renderPassthrough || scene == newSceneList.get(newSceneList.size() - 1) || !nextSceneRenderPassthrough)       frameBuffer.drawTo(null,null,vp.x,vp.y,vp.w,vp.h);
      scene.lastFrameBuffer.clear();
      frameBuffer.drawTo(scene.lastFrameBuffer);
    }
    scene.executeDrawCommands();
    Bullet.DebugDrawer debugDrawer=(Bullet.DebugDrawer)scene.world.getDebugDrawer();
    debugDrawer.drawWorld(scene.world,scene.camera.data);
    profiler.stop("String_Node_Str");
  }
  mouse.wheelMove=0;
  Bdx.display.changed=false;
  profiler.stop("String_Node_Str");
  profiler.updateVariables();
  if (profiler.visible()) {
    profiler.updateVisible();
    profiler.scene.update();
    Gdx.gl.glClear(GL20.GL_DEPTH_BUFFER_BIT);
    renderWorld(modelBatch,profiler.scene,profiler.scene.camera);
    profiler.scene.executeDrawCommands();
  }
  if (profiler.gl.isEnabled()) {
    profiler.gl.updateFields();
  }
  if (requestedRestart) {
    requestedRestart=false;
    Scene.clearColorDefaultSet=false;
    dispose();
    for (    Scene scene : new ArrayList<Scene>(scenes)) {
      scenes.remove(scene);
      scene.end();
    }
    if (profiler.visible()) {
      profiler.scene.end();
    }
    init();
    scenes.add(firstScene);
  }
  profiler.start("String_Node_Str");
}