Program: 113510
Project: 113510
Buggy source:
@Override public void responseAvailable(RPCResponse r){
  try {
    Object res=r.get();
    ((Decoder)result.getDecoder()).setResult(res);
    if (update && depth != 0) {
      assert(address != null);
      root.updateDefaultServerAddress(address);
    }
  }
 catch (  RedirectException e) {
    if (e.getAddress() != null && depth < tries) {
      InetSocketAddress newAddress=new InetSocketAddress(e.getAddress(),e.getPort());
      if (!newAddress.equals(this.address)) {
        this.otherServers.add(this.address);
        redirect(newAddress);
      }
 else {
        Logging.logMessage(Logging.LEVEL_INFO,this.root,"String_Node_Str" + "String_Node_Str",this.address.toString());
        if (this.otherServers != null && this.otherServers.size() != 0) {
          reconnect();
        }
 else {
          result.fill(r);
          return;
        }
      }
      if (r != null)       r.freeBuffers();
      return;
    }
 else {
      Logging.logMessage(Logging.LEVEL_ERROR,root,"String_Node_Str" + "String_Node_Str" + "String_Node_Str",e.getAddress(),depth);
    }
  }
catch (  InvalidArgumentException e) {
    Logging.logMessage(Logging.LEVEL_ERROR,root,"String_Node_Str" + e.getError_message());
    Logging.logError(Logging.LEVEL_DEBUG,this,e);
  }
catch (  ONCRPCException e) {
    Logging.logMessage(Logging.LEVEL_ERROR,root,"String_Node_Str" + e.getMessage());
    Logging.logError(Logging.LEVEL_INFO,this,e);
  }
catch (  Exception e) {
    Logging.logMessage(Logging.LEVEL_WARN,root,"String_Node_Str",((address != null) ? address : root.getDefaultServerAddress()),e.getMessage());
    if (otherServers != null && otherServers.size() > 0) {
      reconnect();
      if (r != null)       r.freeBuffers();
      return;
    }
 else {
      Logging.logMessage(Logging.LEVEL_ERROR,root,"String_Node_Str" + "String_Node_Str");
      Logging.logError(Logging.LEVEL_DEBUG,this,e);
    }
  }
  result.fill(r);
}

Fixed version (ground truth):
@Override public void responseAvailable(RPCResponse r){
  try {
    Object res=r.get();
    ((Decoder)result.getDecoder()).setResult(res);
    if (update && depth != 0) {
      assert(address != null);
      root.updateDefaultServerAddress(address);
    }
  }
 catch (  RedirectException e) {
    if (e.getAddress() != null && depth < tries) {
      InetSocketAddress newAddress=new InetSocketAddress(e.getAddress(),e.getPort());
      if (!newAddress.equals(this.address)) {
        if (this.address != null)         this.otherServers.add(this.address);
        redirect(newAddress);
      }
 else {
        Logging.logMessage(Logging.LEVEL_INFO,this.root,"String_Node_Str" + "String_Node_Str",this.address.toString());
        if (this.otherServers != null && this.otherServers.size() != 0) {
          reconnect();
        }
 else {
          result.fill(r);
          return;
        }
      }
      if (r != null)       r.freeBuffers();
      return;
    }
 else {
      Logging.logMessage(Logging.LEVEL_ERROR,root,"String_Node_Str" + "String_Node_Str" + "String_Node_Str",e.getAddress(),depth);
    }
  }
catch (  InvalidArgumentException e) {
    Logging.logMessage(Logging.LEVEL_ERROR,root,"String_Node_Str" + e.getError_message());
    Logging.logError(Logging.LEVEL_DEBUG,this,e);
  }
catch (  ONCRPCException e) {
    Logging.logMessage(Logging.LEVEL_ERROR,root,"String_Node_Str" + e.getMessage());
    Logging.logError(Logging.LEVEL_INFO,this,e);
  }
catch (  Exception e) {
    Logging.logMessage(Logging.LEVEL_WARN,root,"String_Node_Str",((address != null) ? address : root.getDefaultServerAddress()),e.getMessage());
    if (otherServers != null && otherServers.size() > 0) {
      reconnect();
      if (r != null)       r.freeBuffers();
      return;
    }
 else {
      Logging.logMessage(Logging.LEVEL_ERROR,root,"String_Node_Str" + "String_Node_Str");
      Logging.logError(Logging.LEVEL_DEBUG,this,e);
    }
  }
  result.fill(r);
}