Program: 117364
Project: 117364
Buggy source:
@Override public OTaskSessionRuntime startNewSession(){
  final OConsoleTaskSession otaskSession=new OConsoleTaskSession();
  final String input=(String)getField(Field.INPUT);
  otaskSession.setInput(input);
  otaskSession.setDeleteOnFinish((boolean)getField(OTask.Field.AUTODELETE_SESSIONS));
  try {
    Thread innerThread=new Thread(new Runnable(){
      @Override public void run(){
        otaskSession.start();
        String charset=Charset.defaultCharset().displayName();
        if (System.getProperty("String_Node_Str").startsWith("String_Node_Str")) {
          if (Charset.isSupported("String_Node_Str")) {
            charset="String_Node_Str";
          }
        }
        try {
          final Process innerProcess=Runtime.getRuntime().exec(input);
          otaskSession.setCallback(new ITaskSessionCallback(){
            @Override public void interrupt() throws Exception {
              try {
                innerProcess.exitValue();
              }
 catch (              IllegalThreadStateException e) {
                innerProcess.destroy();
              }
            }
          }
);
          BufferedReader reader=new BufferedReader(new InputStreamReader(innerProcess.getInputStream(),charset));
          String curOutString="String_Node_Str";
          while ((curOutString=reader.readLine()) != null) {
            otaskSession.incrementCurrentProgress();
            otaskSession.appendOut(curOutString);
          }
        }
 catch (        IOException e) {
          otaskSession.appendOut(e.getMessage());
        }
        otaskSession.finish();
      }
    }
);
    innerThread.start();
  }
 catch (  Exception e) {
    otaskSession.finish();
  }
  return otaskSession;
}

Fixed version (ground truth):
@Override public OTaskSessionRuntime startNewSession(){
  final OConsoleTaskSession otaskSession=new OConsoleTaskSession();
  final String input=(String)getField(Field.INPUT);
  otaskSession.setInput(input);
  otaskSession.setDeleteOnFinish((boolean)getField(OTask.Field.AUTODELETE_SESSIONS));
  otaskSession.setOTask(this);
  try {
    Thread innerThread=new Thread(new Runnable(){
      @Override public void run(){
        otaskSession.start();
        String charset=Charset.defaultCharset().displayName();
        if (System.getProperty("String_Node_Str").startsWith("String_Node_Str")) {
          if (Charset.isSupported("String_Node_Str")) {
            charset="String_Node_Str";
          }
        }
        try {
          final Process innerProcess=Runtime.getRuntime().exec(input);
          otaskSession.setCallback(new ITaskSessionCallback(){
            @Override public void interrupt() throws Exception {
              try {
                innerProcess.exitValue();
              }
 catch (              IllegalThreadStateException e) {
                innerProcess.destroy();
              }
            }
          }
);
          BufferedReader reader=new BufferedReader(new InputStreamReader(innerProcess.getInputStream(),charset));
          String curOutString="String_Node_Str";
          while ((curOutString=reader.readLine()) != null) {
            otaskSession.incrementCurrentProgress();
            otaskSession.appendOut(curOutString);
          }
        }
 catch (        IOException e) {
          otaskSession.appendOut(e.getMessage());
        }
        otaskSession.finish();
      }
    }
);
    innerThread.start();
  }
 catch (  Exception e) {
    otaskSession.finish();
  }
  return otaskSession;
}