Program: 50041
Project: 50041
Buggy source:
public void shutdown(){
  logger.log(Level.FINE,"String_Node_Str" + String.valueOf(active));
  if (isActive()) {
    long start=System.currentTimeMillis();
    joined=false;
    setActive(false);
    try {
      Runtime.getRuntime().removeShutdownHook(shutdownHookThread);
    }
 catch (    Throwable ignored) {
    }
    logger.log(Level.FINEST,"String_Node_Str");
    clientService.shutdown();
    logger.log(Level.FINEST,"String_Node_Str");
    inSelector.shutdown();
    logger.log(Level.FINEST,"String_Node_Str");
    outSelector.shutdown();
    logger.log(Level.FINEST,"String_Node_Str");
    clusterService.stop();
    logger.log(Level.FINEST,"String_Node_Str");
    if (multicastService != null) {
      multicastService.stop();
    }
    logger.log(Level.FINEST,"String_Node_Str");
    connectionManager.shutdown();
    logger.log(Level.FINEST,"String_Node_Str");
    logger.log(Level.FINEST,"String_Node_Str");
    executorManager.stop();
    textCommandService.stop();
    masterAddress=null;
    packetPool.clear();
    logger.log(Level.FINEST,"String_Node_Str");
    int numThreads=threadGroup.activeCount();
    Thread[] threads=new Thread[numThreads * 2];
    numThreads=threadGroup.enumerate(threads,false);
    for (int i=0; i < numThreads; i++) {
      Thread thread=threads[i];
      logger.log(Level.FINEST,"String_Node_Str" + thread.getName());
      thread.interrupt();
    }
    logger.log(Level.INFO,"String_Node_Str" + (System.currentTimeMillis() - start) + "String_Node_Str");
  }
}

Fixed version (ground truth):
public void shutdown(){
  logger.log(Level.FINE,"String_Node_Str" + String.valueOf(active));
  while (isActive() && concurrentMapManager.partitionManager.hasActiveBackupTask()) {
    try {
      Thread.sleep(1000);
    }
 catch (    InterruptedException e) {
    }
  }
  if (isActive()) {
    long start=System.currentTimeMillis();
    joined=false;
    setActive(false);
    try {
      Runtime.getRuntime().removeShutdownHook(shutdownHookThread);
    }
 catch (    Throwable ignored) {
    }
    logger.log(Level.FINEST,"String_Node_Str");
    clientService.shutdown();
    logger.log(Level.FINEST,"String_Node_Str");
    inSelector.shutdown();
    logger.log(Level.FINEST,"String_Node_Str");
    outSelector.shutdown();
    logger.log(Level.FINEST,"String_Node_Str");
    clusterService.stop();
    logger.log(Level.FINEST,"String_Node_Str");
    if (multicastService != null) {
      multicastService.stop();
    }
    logger.log(Level.FINEST,"String_Node_Str");
    connectionManager.shutdown();
    logger.log(Level.FINEST,"String_Node_Str");
    logger.log(Level.FINEST,"String_Node_Str");
    executorManager.stop();
    textCommandService.stop();
    masterAddress=null;
    packetPool.clear();
    logger.log(Level.FINEST,"String_Node_Str");
    int numThreads=threadGroup.activeCount();
    Thread[] threads=new Thread[numThreads * 2];
    numThreads=threadGroup.enumerate(threads,false);
    for (int i=0; i < numThreads; i++) {
      Thread thread=threads[i];
      logger.log(Level.FINEST,"String_Node_Str" + thread.getName());
      thread.interrupt();
    }
    logger.log(Level.INFO,"String_Node_Str" + (System.currentTimeMillis() - start) + "String_Node_Str");
  }
}