Program: 172867
Project: 172867
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,OutMessage>>> pendingSendMessagesPerSource=new HashMap<>();
  Map<Integer,Queue<Pair<Object,ChannelMessage>>> pendingReceiveMessagesPerSource=new HashMap<>();
  Map<Integer,Queue<ChannelMessage>> 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,OutMessage>> pendingSendMessages=new ArrayBlockingQueue<Pair<Object,OutMessage>>(DataFlowContext.sendPendingMax(cfg));
    pendingSendMessagesPerSource.put(s,pendingSendMessages);
    pendingReceiveDeSerializations.put(s,new ArrayBlockingQueue<ChannelMessage>(DataFlowContext.sendPendingMax(cfg)));
    serializerMap.put(s,new SingleMessageSerializer(new KryoSerializer()));
  }
  MessageDeSerializer messageDeSerializer=new SingleMessageDeSerializer(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.router=new DirectRouter(taskPlan,sources,destination);
  if (this.finalReceiver != null && isLastReceiver()) {
    this.finalReceiver.init(cfg,this,receiveExpectedTaskIds());
  }
  Map<Integer,ArrayBlockingQueue<Pair<Object,OutMessage>>> pendingSendMessagesPerSource=new HashMap<>();
  Map<Integer,Queue<Pair<Object,ChannelMessage>>> pendingReceiveMessagesPerSource=new HashMap<>();
  Map<Integer,Queue<ChannelMessage>> pendingReceiveDeSerializations=new HashMap<>();
  Map<Integer,MessageSerializer> serializerMap=new HashMap<>();
  Map<Integer,MessageDeSerializer> deSerializerMap=new HashMap<>();
  Set<Integer> srcs=TaskPlanUtils.getTasksOfThisWorker(taskPlan,sources);
  for (  int s : srcs) {
    ArrayBlockingQueue<Pair<Object,OutMessage>> pendingSendMessages=new ArrayBlockingQueue<Pair<Object,OutMessage>>(DataFlowContext.sendPendingMax(cfg));
    pendingSendMessagesPerSource.put(s,pendingSendMessages);
    pendingReceiveDeSerializations.put(s,new ArrayBlockingQueue<ChannelMessage>(DataFlowContext.sendPendingMax(cfg)));
    serializerMap.put(s,new SingleMessageSerializer(new KryoSerializer()));
  }
  MessageDeSerializer messageDeSerializer=new SingleMessageDeSerializer(new KryoSerializer());
  deSerializerMap.put(destination,messageDeSerializer);
  delegete.init(cfg,t,taskPlan,edge,router.receivingExecutors(),isLastReceiver(),this,pendingSendMessagesPerSource,pendingReceiveMessagesPerSource,pendingReceiveDeSerializations,serializerMap,deSerializerMap,false);
}