Program: 87977
Project: 87977
Buggy source:
@Override public void openTask() throws Exception {
  AbstractPactTask.openUserCode(this.combiner,this.config.getStubParameters());
  final long availableMemory=this.config.getMemorySize();
  LocalStrategy ls=config.getLocalStrategy();
  long strategyMinMem=0;
switch (ls) {
case COMBININGSORT:
    strategyMinMem=MIN_REQUIRED_MEMORY;
  break;
}
if (availableMemory < strategyMinMem) {
throw new RuntimeException("String_Node_Str" + config.getLocalStrategy() + "String_Node_Str"+ availableMemory+ "String_Node_Str"+ "String_Node_Str"+ strategyMinMem+ "String_Node_Str");
}
final MemoryManager memoryManager=this.parent.getEnvironment().getMemoryManager();
final IOManager ioManager=this.parent.getEnvironment().getIOManager();
final int[] keyPositions=this.config.getLocalStrategyKeyPositions(0);
final Class<? extends Key>[] keyClasses=this.config.getLocalStrategyKeyClasses(this.userCodeClassLoader);
if (keyPositions == null || keyClasses == null) {
throw new Exception("String_Node_Str");
}
@SuppressWarnings("String_Node_Str") final Comparator<Key>[] comparators=new Comparator[keyPositions.length];
final KeyComparator kk=new KeyComparator();
for (int i=0; i < comparators.length; i++) {
comparators[i]=kk;
}
switch (ls) {
case COMBININGSORT:
this.sorter=new AsynchronousPartialSorterCollector(memoryManager,ioManager,availableMemory,comparators,keyPositions,keyClasses,this.parent);
break;
default :
throw new RuntimeException("String_Node_Str");
}
this.combinerThread=new CombinerThread(this.sorter,keyPositions,keyClasses,this.combiner,this.outputCollector);
this.combinerThread.start();
}

Fixed version (ground truth):
@Override public void openTask() throws Exception {
  AbstractPactTask.openUserCode(this.combiner,this.config.getStubParameters());
  final long availableMemory=this.config.getMemorySize();
  LocalStrategy ls=config.getLocalStrategy();
  long strategyMinMem=0;
switch (ls) {
case COMBININGSORT:
    strategyMinMem=MIN_REQUIRED_MEMORY;
  break;
}
if (availableMemory < strategyMinMem) {
throw new RuntimeException("String_Node_Str" + config.getLocalStrategy() + "String_Node_Str"+ availableMemory+ "String_Node_Str"+ "String_Node_Str"+ strategyMinMem+ "String_Node_Str");
}
final MemoryManager memoryManager=this.parent.getEnvironment().getMemoryManager();
final IOManager ioManager=this.parent.getEnvironment().getIOManager();
final int[] keyPositions=this.config.getLocalStrategyKeyPositions(0);
final Class<? extends Key>[] keyClasses=this.config.getLocalStrategyKeyClasses(this.userCodeClassLoader);
if (keyPositions == null || keyClasses == null) {
throw new Exception("String_Node_Str");
}
@SuppressWarnings("String_Node_Str") final Comparator<Key>[] comparators=new Comparator[keyPositions.length];
final KeyComparator kk=new KeyComparator();
for (int i=0; i < comparators.length; i++) {
comparators[i]=kk;
}
switch (ls) {
case COMBININGSORT:
this.sorter=new AsynchronousPartialSorterCollector(memoryManager,ioManager,availableMemory,comparators,keyPositions,keyClasses,this.parent);
this.inputCollector=this.sorter.getInputCollector();
break;
default :
throw new RuntimeException("String_Node_Str");
}
this.combinerThread=new CombinerThread(this.sorter,keyPositions,keyClasses,this.combiner,this.outputCollector);
this.combinerThread.start();
}