Program: 34841
Project: 34841
Buggy source:
@Override public void close(VirtualConnection inVC,Exception e){
synchronized (linkStatusSync) {
    if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
      Tr.debug(tc,"String_Node_Str" + linkStatus + "String_Node_Str"+ this.hashCode());
    }
    if ((linkStatus == LINK_STATUS.CLOSING) || (linkStatus == LINK_STATUS.GOAWAY_SENDING) || (linkStatus == LINK_STATUS.WAIT_TO_SEND_GOAWAY)) {
      if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
        Tr.debug(tc,"String_Node_Str" + "String_Node_Str" + this.hashCode());
      }
      return;
    }
    if (e == null) {
      H2StreamProcessor stream;
      for (      Integer i : streamTable.keySet()) {
        stream=streamTable.get(i);
        if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
          Tr.debug(tc,"String_Node_Str" + stream.myID);
        }
        if (stream.myID != 0 && !stream.isHalfClosed() && !stream.isStreamClosed() && highestLocalStreamId > -1) {
          continue;
        }
 else {
          if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
            Tr.debug(tc,"String_Node_Str" + stream.myID + "String_Node_Str"+ this.hashCode());
          }
          return;
        }
      }
    }
    linkStatus=LINK_STATUS.WAIT_TO_SEND_GOAWAY;
    if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
      Tr.debug(tc,"String_Node_Str" + "String_Node_Str" + this.hashCode());
    }
    ScheduledExecutorService scheduler=CHFWBundle.getScheduledExecutorService();
    if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
      Tr.debug(tc,"String_Node_Str" + scheduler + "String_Node_Str"+ config);
    }
    connTimeout=new H2ConnectionTimeout(initialVC,e);
    if (e == null) {
      closeFuture=scheduler.schedule(connTimeout,config.getH2ConnCloseTimeout(),TimeUnit.SECONDS);
    }
 else {
      if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
        Tr.debug(tc,"String_Node_Str" + e);
      }
      connTimeout.run();
    }
  }
}

Fixed version (ground truth):
@Override public void close(VirtualConnection inVC,Exception e){
synchronized (linkStatusSync) {
    if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
      Tr.debug(tc,"String_Node_Str" + linkStatus + "String_Node_Str"+ this.hashCode());
    }
    if ((linkStatus == LINK_STATUS.CLOSING) || (linkStatus == LINK_STATUS.GOAWAY_SENDING) || (linkStatus == LINK_STATUS.WAIT_TO_SEND_GOAWAY)) {
      if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
        Tr.debug(tc,"String_Node_Str" + "String_Node_Str" + this.hashCode());
      }
      return;
    }
    if (e == null) {
      H2StreamProcessor stream;
      for (      Integer i : streamTable.keySet()) {
        stream=streamTable.get(i);
        if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
          Tr.debug(tc,"String_Node_Str" + stream.getId());
        }
        if (stream.getId() != 0 && !stream.isHalfClosed() && !stream.isStreamClosed() && highestLocalStreamId > -1) {
          continue;
        }
 else {
          if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
            Tr.debug(tc,"String_Node_Str" + stream.getId() + "String_Node_Str"+ this.hashCode());
          }
          return;
        }
      }
    }
    linkStatus=LINK_STATUS.WAIT_TO_SEND_GOAWAY;
    if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
      Tr.debug(tc,"String_Node_Str" + "String_Node_Str" + this.hashCode());
    }
    ScheduledExecutorService scheduler=CHFWBundle.getScheduledExecutorService();
    if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
      Tr.debug(tc,"String_Node_Str" + scheduler + "String_Node_Str"+ config);
    }
    connTimeout=new H2ConnectionTimeout(initialVC,e);
    if (e == null) {
      closeFuture=scheduler.schedule(connTimeout,config.getH2ConnCloseTimeout(),TimeUnit.SECONDS);
    }
 else {
      if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
        Tr.debug(tc,"String_Node_Str" + e);
      }
      connTimeout.run();
    }
  }
}