Program: 17283
Project: 17283
Buggy source:
public BroadcastShuffleManager(TezInputContext inputContext,Configuration conf,int numInputs) throws IOException {
  this.inputContext=inputContext;
  this.conf=conf;
  this.numInputs=numInputs;
  this.inputEventHandler=new BroadcastShuffleInputEventHandler(inputContext,this);
  this.inputManager=new BroadcastInputManager(inputContext.getUniqueIdentifier(),conf);
  completedInputSet=Collections.newSetFromMap(new ConcurrentHashMap<InputIdentifier,Boolean>(numInputs));
  completedInputs=new LinkedBlockingQueue<FetchedInput>(numInputs);
  knownSrcHosts=new ConcurrentHashMap<String,InputHost>();
  pendingHosts=new LinkedBlockingQueue<InputHost>();
  obsoletedInputs=Collections.newSetFromMap(new ConcurrentHashMap<InputAttemptIdentifier,Boolean>());
  int maxConfiguredFetchers=conf.getInt(TezJobConfig.TEZ_RUNTIME_SHUFFLE_PARALLEL_COPIES,TezJobConfig.DEFAULT_TEZ_RUNTIME_SHUFFLE_PARALLEL_COPIES);
  this.numFetchers=Math.min(maxConfiguredFetchers,numInputs);
  this.fetcherRawExecutor=Executors.newFixedThreadPool(numFetchers,new ThreadFactoryBuilder().setDaemon(true).setNameFormat("String_Node_Str").build());
  this.fetcherExecutor=MoreExecutors.listeningDecorator(fetcherRawExecutor);
  this.startTime=System.currentTimeMillis();
  this.lastProgressTime=startTime;
  this.shuffleSecret=ShuffleUtils.getJobTokenSecretFromTokenBytes(inputContext.getServiceConsumerMetaData(ShuffleHandler.MAPREDUCE_SHUFFLE_SERVICEID));
  this.connectionTimeout=conf.getInt(TezJobConfig.TEZ_RUNTIME_SHUFFLE_CONNECT_TIMEOUT,TezJobConfig.DEFAULT_TEZ_RUNTIME_SHUFFLE_STALLED_COPY_TIMEOUT);
  this.readTimeout=conf.getInt(TezJobConfig.TEZ_RUNTIME_SHUFFLE_READ_TIMEOUT,TezJobConfig.DEFAULT_TEZ_RUNTIME_SHUFFLE_READ_TIMEOUT);
  if (ConfigUtils.isIntermediateInputCompressed(conf)) {
    Class<? extends CompressionCodec> codecClass=ConfigUtils.getIntermediateInputCompressorClass(conf,DefaultCodec.class);
    codec=ReflectionUtils.newInstance(codecClass,conf);
    decompressor=CodecPool.getDecompressor(codec);
  }
 else {
    codec=null;
    decompressor=null;
  }
  LOG.info("String_Node_Str" + numInputs + "String_Node_Str"+ (codec == null ? null : codec.getClass().getName())+ "String_Node_Str"+ numFetchers);
}

Fixed version (ground truth):
public BroadcastShuffleManager(TezInputContext inputContext,Configuration conf,int numInputs) throws IOException {
  this.inputContext=inputContext;
  this.conf=conf;
  this.numInputs=numInputs;
  this.inputEventHandler=new BroadcastShuffleInputEventHandler(inputContext,this);
  this.inputManager=new BroadcastInputManager(inputContext.getUniqueIdentifier(),conf);
  completedInputSet=Collections.newSetFromMap(new ConcurrentHashMap<InputIdentifier,Boolean>(numInputs));
  completedInputs=new LinkedBlockingQueue<FetchedInput>(numInputs);
  knownSrcHosts=new ConcurrentHashMap<String,InputHost>();
  pendingHosts=new LinkedBlockingQueue<InputHost>();
  obsoletedInputs=Collections.newSetFromMap(new ConcurrentHashMap<InputAttemptIdentifier,Boolean>());
  int maxConfiguredFetchers=conf.getInt(TezJobConfig.TEZ_RUNTIME_SHUFFLE_PARALLEL_COPIES,TezJobConfig.DEFAULT_TEZ_RUNTIME_SHUFFLE_PARALLEL_COPIES);
  this.numFetchers=Math.min(maxConfiguredFetchers,numInputs);
  this.fetcherRawExecutor=Executors.newFixedThreadPool(numFetchers,new ThreadFactoryBuilder().setDaemon(true).setNameFormat("String_Node_Str" + inputContext.getUniqueIdentifier() + "String_Node_Str").build());
  this.fetcherExecutor=MoreExecutors.listeningDecorator(fetcherRawExecutor);
  this.schedulerRawExecutor=Executors.newFixedThreadPool(1,new ThreadFactoryBuilder().setDaemon(true).setNameFormat("String_Node_Str" + inputContext.getUniqueIdentifier() + "String_Node_Str").build());
  this.schedulerExecutor=MoreExecutors.listeningDecorator(schedulerRawExecutor);
  this.startTime=System.currentTimeMillis();
  this.lastProgressTime=startTime;
  this.shuffleSecret=ShuffleUtils.getJobTokenSecretFromTokenBytes(inputContext.getServiceConsumerMetaData(ShuffleHandler.MAPREDUCE_SHUFFLE_SERVICEID));
  this.connectionTimeout=conf.getInt(TezJobConfig.TEZ_RUNTIME_SHUFFLE_CONNECT_TIMEOUT,TezJobConfig.DEFAULT_TEZ_RUNTIME_SHUFFLE_STALLED_COPY_TIMEOUT);
  this.readTimeout=conf.getInt(TezJobConfig.TEZ_RUNTIME_SHUFFLE_READ_TIMEOUT,TezJobConfig.DEFAULT_TEZ_RUNTIME_SHUFFLE_READ_TIMEOUT);
  if (ConfigUtils.isIntermediateInputCompressed(conf)) {
    Class<? extends CompressionCodec> codecClass=ConfigUtils.getIntermediateInputCompressorClass(conf,DefaultCodec.class);
    codec=ReflectionUtils.newInstance(codecClass,conf);
    decompressor=CodecPool.getDecompressor(codec);
  }
 else {
    codec=null;
    decompressor=null;
  }
  LOG.info("String_Node_Str" + numInputs + "String_Node_Str"+ (codec == null ? null : codec.getClass().getName())+ "String_Node_Str"+ numFetchers);
}