Program: 24198
Project: 24198
Buggy source:
@Override public void evaluate() throws Throwable {
  latch.setInterruptOnException(Thread.currentThread());
  FutureTask<ScriptPair> scriptFuture=new FutureTask<>(scriptRunner);
  try {
    new Thread(scriptFuture).start();
    try {
      latch.awaitPrepared();
    }
 catch (    InterruptedException e) {
      if (latch.hasException()) {
        throw latch.getException();
      }
 else       throw e;
    }
    try {
      statement.evaluate();
    }
 catch (    AssumptionViolatedException e) {
      if (!latch.isFinished()) {
        scriptRunner.abort();
      }
      throw e;
    }
catch (    Throwable cause) {
      if (latch.hasException()) {
        if (cause instanceof InterruptedException) {
          throw latch.getException();
        }
        throw cause;
      }
 else {
        if (!latch.isFinished()) {
          scriptRunner.abort();
        }
        try {
          ScriptPair scripts=scriptFuture.get(5,SECONDS);
          try {
            assertEquals("String_Node_Str",scripts.getExpectedScript(),scripts.getObservedScript());
            throw cause;
          }
 catch (          ComparisonFailure f) {
            f.initCause(cause);
            throw f;
          }
        }
 catch (        ExecutionException ee) {
          throw ee.getCause().initCause(cause);
        }
catch (        Exception e) {
          throw cause;
        }
      }
    }
    String k3poSimpleName=K3poRule.class.getSimpleName();
    assertTrue(format("String_Node_Str",k3poSimpleName,k3poSimpleName,k3poSimpleName),latch.isStartable());
    ScriptPair scripts=scriptFuture.get();
    assertEquals("String_Node_Str",scripts.getExpectedScript(),scripts.getObservedScript());
  }
  finally {
    try {
      scriptRunner.dispose();
    }
  finally {
      scriptFuture.cancel(true);
    }
  }
}

Fixed version (ground truth):
@Override public void evaluate() throws Throwable {
  latch.setInterruptOnException(Thread.currentThread());
  FutureTask<ScriptPair> scriptFuture=new FutureTask<>(scriptRunner);
  try {
    new Thread(scriptFuture).start();
    try {
      latch.awaitPrepared();
    }
 catch (    InterruptedException e) {
      if (latch.hasException()) {
        throw latch.getException();
      }
 else       throw e;
    }
    try {
      statement.evaluate();
    }
 catch (    AssumptionViolatedException e) {
      if (!latch.isFinished()) {
        scriptRunner.abort();
      }
      throw e;
    }
catch (    Throwable cause) {
      if (latch.hasException()) {
        if (cause instanceof InterruptedException) {
          throw latch.getException();
        }
        throw cause;
      }
 else {
        if (!latch.isFinished()) {
          scriptRunner.abort();
        }
        try {
          ScriptPair scripts=scriptFuture.get(5,SECONDS);
          try {
            assertEquals("String_Node_Str",scripts.getExpectedScript(),scripts.getObservedScript());
            throw cause;
          }
 catch (          ComparisonFailure f) {
            f.initCause(cause);
            throw f;
          }
        }
 catch (        ExecutionException ee) {
          throw ee.getCause().initCause(cause);
        }
catch (        Exception e) {
          throw cause;
        }
      }
    }
    String k3poSimpleName=K3poRule.class.getSimpleName();
    assertTrue(format("String_Node_Str",k3poSimpleName,k3poSimpleName,k3poSimpleName),latch.isStartable());
    ScriptPair scripts=scriptFuture.get();
    assertEquals("String_Node_Str",scripts.getExpectedScript(),scripts.getObservedScript());
  }
  finally {
    try {
      scriptRunner.dispose();
    }
  finally {
      scriptFuture.cancel(true);
      Thread.interrupted();
    }
  }
}