Program: 173051
Project: 173051
Buggy source:
/** 
 * Initialize
 * @param cfg
 * @param t
 * @param taskPlan
 * @param edge
 */
public void init(Config cfg,MessageType t,TaskPlan taskPlan,int edge){
  this.router=new DirectRouter(taskPlan,sources,destination);
  if (this.finalReceiver != null && isLastReceiver()) {
    this.finalReceiver.init(cfg,this,receiveExpectedTaskIds());
  }
  Map<Integer,ArrayBlockingQueue<Pair<Object,MPISendMessage>>> pendingSendMessagesPerSource=new HashMap<>();
  Map<Integer,Queue<Pair<Object,MPIMessage>>> pendingReceiveMessagesPerSource=new HashMap<>();
  Map<Integer,Queue<MPIMessage>> pendingReceiveDeSerializations=new HashMap<>();
  Map<Integer,MessageSerializer> serializerMap=new HashMap<>();
  Map<Integer,MessageDeSerializer> deSerializerMap=new HashMap<>();
  Set<Integer> srcs=TaskPlanUtils.getTasksOfThisExecutor(taskPlan,sources);
  for (  int s : srcs) {
    ArrayBlockingQueue<Pair<Object,MPISendMessage>> pendingSendMessages=new ArrayBlockingQueue<Pair<Object,MPISendMessage>>(MPIContext.sendPendingMax(cfg));
    pendingSendMessagesPerSource.put(s,pendingSendMessages);
    pendingReceiveDeSerializations.put(s,new ArrayBlockingQueue<MPIMessage>(MPIContext.sendPendingMax(cfg)));
    serializerMap.put(s,new MPIMessageSerializer(new KryoSerializer()));
  }
  MessageDeSerializer messageDeSerializer=new MPIMessageDeSerializer(new KryoSerializer());
  deSerializerMap.put(destination,messageDeSerializer);
  delegete.init(cfg,t,taskPlan,edge,router.receivingExecutors(),isLastReceiver(),this,pendingSendMessagesPerSource,pendingReceiveMessagesPerSource,pendingReceiveDeSerializations,serializerMap,deSerializerMap,false);
}

Fixed version (ground truth):
/** 
 * Initialize
 * @param cfg
 * @param t
 * @param taskPlan
 * @param edge
 */
public void init(Config cfg,MessageType t,TaskPlan taskPlan,int edge){
  this.config=cfg;
  this.instancePlan=taskPlan;
  this.type=t;
  this.router=new DirectRouter(taskPlan,sources,destination);
  if (this.finalReceiver != null) {
    LG.info("String_Node_Str");
    LG.info("String_Node_Str");
    LG.info("String_Node_Str");
    this.finalReceiver.init(cfg,this,receiveExpectedTaskIds());
  }
 else {
    LG.info("String_Node_Str");
  }
  Map<Integer,ArrayBlockingQueue<Pair<Object,MPISendMessage>>> pendingSendMessagesPerSource=new HashMap<>();
  Map<Integer,Queue<Pair<Object,MPIMessage>>> pendingReceiveMessagesPerSource=new HashMap<>();
  Map<Integer,Queue<MPIMessage>> pendingReceiveDeSerializations=new HashMap<>();
  Map<Integer,MessageSerializer> serializerMap=new HashMap<>();
  Map<Integer,MessageDeSerializer> deSerializerMap=new HashMap<>();
  Set<Integer> srcs=TaskPlanUtils.getTasksOfThisExecutor(taskPlan,sources);
  Set<Integer> myexecutors=router.receivingExecutors();
  Set<Integer> mysources=router.allSendTasks();
  LG.info("String_Node_Str");
  LG.info("String_Node_Str" + mysources.size());
  LG.info("String_Node_Str" + myexecutors.size());
  if (mysources.iterator().hasNext()) {
    LG.info("String_Node_Str" + mysources.iterator().next());
  }
  if (myexecutors.iterator().hasNext()) {
    LG.info("String_Node_Str" + myexecutors.iterator().next());
  }
  for (  int s : mysources) {
    ArrayBlockingQueue<Pair<Object,MPISendMessage>> pendingSendMessages=new ArrayBlockingQueue<Pair<Object,MPISendMessage>>(MPIContext.sendPendingMax(cfg));
    pendingSendMessagesPerSource.put(s,pendingSendMessages);
    serializerMap.put(s,new MPIMessageSerializer(new KryoSerializer()));
  }
  int maxReceiveBuffers=MPIContext.receiveBufferCount(cfg);
  int receiveExecutorsSize=myexecutors.size();
  if (receiveExecutorsSize == 0) {
    receiveExecutorsSize=1;
  }
  Set<Integer> execs=router.receivingExecutors();
  for (  int e : execs) {
    int capacity=maxReceiveBuffers * 2 * receiveExecutorsSize;
    LG.info("String_Node_Str" + capacity);
    Queue<Pair<Object,MPIMessage>> pendingReceiveMessages=new ArrayBlockingQueue<Pair<Object,MPIMessage>>(capacity);
    pendingReceiveMessagesPerSource.put(e,pendingReceiveMessages);
    pendingReceiveDeSerializations.put(e,new ArrayBlockingQueue<MPIMessage>(capacity));
    deSerializerMap.put(e,new MPIMessageDeSerializer(new KryoSerializer()));
  }
  MPIMessage mpimsg=pendingReceiveDeSerializations.get(0).poll();
  LG.info("String_Node_Str" + mpimsg);
  KryoSerializer kryoSerializer=new KryoSerializer();
  kryoSerializer.init(new HashMap<String,Object>());
  MessageDeSerializer messageDeSerializer=new MPIMessageDeSerializer(kryoSerializer);
  MessageSerializer messageSerializer=new MPIMessageSerializer(kryoSerializer);
  delegete.init(cfg,t,taskPlan,edge,router.receivingExecutors(),router.isLastReceiver(),this,pendingSendMessagesPerSource,pendingReceiveMessagesPerSource,pendingReceiveDeSerializations,serializerMap,deSerializerMap,false);
  LG.info("String_Node_Str");
}