Program: 87586
Project: 87586
Buggy source:
@Override public void invoke() throws Exception {
  if (LOG.isInfoEnabled())   LOG.info(getLogString("String_Node_Str"));
  boolean stubOpen=false;
  this.running=true;
  try {
    try {
      prepare();
    }
 catch (    Throwable t) {
      throw new Exception("String_Node_Str" + this.getEnvironment().getTaskName() + "String_Node_Str"+ t.getMessage(),t);
    }
    AbstractPactTask.openChainedTasks(this.chainedTasks,this);
    try {
      Configuration stubConfig=this.config.getStubParameters();
      stubConfig.setInteger("String_Node_Str",this.getEnvironment().getIndexInSubtaskGroup());
      stubConfig.setInteger("String_Node_Str",this.getEnvironment().getCurrentNumberOfSubtasks());
      if (this.getEnvironment().getTaskName() != null) {
        stubConfig.setString("String_Node_Str",this.getEnvironment().getTaskName());
      }
      this.stub.open(stubConfig);
      stubOpen=true;
    }
 catch (    Throwable t) {
      throw new Exception("String_Node_Str" + t.getMessage(),t);
    }
    run();
    if (this.running) {
      this.stub.close();
      stubOpen=false;
    }
    this.output.close();
    AbstractPactTask.closeChainedTasks(this.chainedTasks,this);
  }
 catch (  Exception ex) {
    if (stubOpen) {
      try {
        this.stub.close();
      }
 catch (      Throwable t) {
      }
    }
    AbstractPactTask.cancelChainedTasks(this.chainedTasks);
    if (this.running) {
      AbstractPactTask.logAndThrowException(ex,this);
    }
  }
 finally {
    cleanup();
  }
  if (this.running) {
    if (LOG.isInfoEnabled())     LOG.info(getLogString("String_Node_Str"));
  }
 else {
    if (LOG.isWarnEnabled())     LOG.warn(getLogString("String_Node_Str"));
  }
}

Fixed version (ground truth):
@Override public void invoke() throws Exception {
  if (LOG.isInfoEnabled())   LOG.info(getLogString("String_Node_Str"));
  boolean stubOpen=false;
  this.running=true;
  try {
    try {
      prepare();
    }
 catch (    Throwable t) {
      throw new Exception("String_Node_Str" + this.getEnvironment().getTaskName() + "String_Node_Str"+ t.getMessage(),t);
    }
    if (!this.running) {
      return;
    }
    AbstractPactTask.openChainedTasks(this.chainedTasks,this);
    try {
      Configuration stubConfig=this.config.getStubParameters();
      stubConfig.setInteger("String_Node_Str",this.getEnvironment().getIndexInSubtaskGroup());
      stubConfig.setInteger("String_Node_Str",this.getEnvironment().getCurrentNumberOfSubtasks());
      if (this.getEnvironment().getTaskName() != null) {
        stubConfig.setString("String_Node_Str",this.getEnvironment().getTaskName());
      }
      this.stub.open(stubConfig);
      stubOpen=true;
    }
 catch (    Throwable t) {
      throw new Exception("String_Node_Str" + t.getMessage(),t);
    }
    run();
    if (this.running) {
      this.stub.close();
      stubOpen=false;
    }
    this.output.close();
    AbstractPactTask.closeChainedTasks(this.chainedTasks,this);
  }
 catch (  Exception ex) {
    if (stubOpen) {
      try {
        this.stub.close();
      }
 catch (      Throwable t) {
      }
    }
    AbstractPactTask.cancelChainedTasks(this.chainedTasks);
    if (this.running) {
      AbstractPactTask.logAndThrowException(ex,this);
    }
  }
 finally {
    cleanup();
  }
  if (this.running) {
    if (LOG.isInfoEnabled())     LOG.info(getLogString("String_Node_Str"));
  }
 else {
    if (LOG.isWarnEnabled())     LOG.warn(getLogString("String_Node_Str"));
  }
}