Program: 59764
Project: 59764
Buggy source:
@Override public void close(){
  if (closed.compareAndSet(false,true)) {
    LOG.log(Level.FINE,"String_Node_Str",new Object[]{this.name,myIdentifier});
    final Runnable closeRunnable=new Runnable(){
      @Override public void run(){
        try {
          LOG.log(Level.FINE,"String_Node_Str",myIdentifier);
          reSendStage.close();
          LOG.log(Level.FINE,"String_Node_Str");
        }
 catch (        final Exception e) {
          LOG.log(Level.SEVERE,"String_Node_Str",e);
        }
        try {
          LOG.log(Level.FINE,"String_Node_Str",myIdentifier);
          transport.close();
          LOG.log(Level.FINE,"String_Node_Str");
        }
 catch (        final Exception e) {
          LOG.log(Level.SEVERE,"String_Node_Str",e);
        }
        try {
          LOG.log(Level.FINE,"String_Node_Str",myIdentifier);
          reRecvStage.close();
          LOG.log(Level.FINE,"String_Node_Str");
        }
 catch (        final Exception e) {
          LOG.log(Level.SEVERE,"String_Node_Str",e);
        }
      }
    }
;
    final ExecutorService closeExecutor=Executors.newSingleThreadExecutor();
    closeExecutor.submit(closeRunnable);
    closeExecutor.shutdown();
    if (!closeExecutor.isShutdown()) {
      LOG.log(Level.SEVERE,"String_Node_Str");
    }
    final long endTime=System.currentTimeMillis() + CLOSE_EXECUTOR_TIMEOUT;
    while (!closeExecutor.isTerminated()) {
      try {
        final long waitTime=endTime - System.currentTimeMillis();
        closeExecutor.awaitTermination(waitTime,TimeUnit.MILLISECONDS);
      }
 catch (      final InterruptedException e) {
      }
    }
    if (closeExecutor.isTerminated()) {
      LOG.log(Level.FINE,"String_Node_Str");
    }
 else {
      LOG.log(Level.SEVERE,"String_Node_Str");
    }
  }
}

Fixed version (ground truth):
@Override public void close(){
  if (closed.compareAndSet(false,true)) {
    LOG.log(Level.FINE,"String_Node_Str",new Object[]{this.name,this.myIdentifier});
    final Runnable closeRunnable=new Runnable(){
      @Override public void run(){
        try {
          LOG.log(Level.FINE,"String_Node_Str",myIdentifier);
          reSendStage.close();
          LOG.log(Level.FINE,"String_Node_Str");
        }
 catch (        final Exception e) {
          LOG.log(Level.SEVERE,"String_Node_Str",e);
        }
        try {
          LOG.log(Level.FINE,"String_Node_Str",myIdentifier);
          transport.close();
          LOG.log(Level.FINE,"String_Node_Str");
        }
 catch (        final Exception e) {
          LOG.log(Level.SEVERE,"String_Node_Str",e);
        }
        try {
          LOG.log(Level.FINE,"String_Node_Str",myIdentifier);
          reRecvStage.close();
          LOG.log(Level.FINE,"String_Node_Str");
        }
 catch (        final Exception e) {
          LOG.log(Level.SEVERE,"String_Node_Str",e);
        }
      }
    }
;
    final ExecutorService closeExecutor=Executors.newSingleThreadExecutor();
    closeExecutor.submit(closeRunnable);
    closeExecutor.shutdown();
    if (!closeExecutor.isShutdown()) {
      LOG.log(Level.SEVERE,"String_Node_Str");
    }
    final long endTime=System.currentTimeMillis() + CLOSE_EXECUTOR_TIMEOUT;
    while (!closeExecutor.isTerminated()) {
      try {
        final long waitTime=endTime - System.currentTimeMillis();
        closeExecutor.awaitTermination(waitTime,TimeUnit.MILLISECONDS);
      }
 catch (      final InterruptedException e) {
        LOG.log(Level.FINE,"String_Node_Str",e);
      }
    }
    if (closeExecutor.isTerminated()) {
      LOG.log(Level.FINE,"String_Node_Str");
    }
 else {
      LOG.log(Level.SEVERE,"String_Node_Str");
    }
  }
}