Program: 36783
Project: 36783
Buggy source:
private void send(DirectMsgNetty message){
  InetSocketAddress upnpSocket=address2SocketAddress(message.getSource());
  InetSocketAddress src=upnpLocalSocket.get(upnpSocket);
  InetSocketAddress dest=address2SocketAddress(message.getDestination());
  if (src == null) {
    String strError="String_Node_Str" + "String_Node_Str" + message.getClass() + "String_Node_Str"+ message.getSource();
    logger.error(strError);
    trigger(new Fault(new IllegalArgumentException(strError)),control);
    return;
  }
  DatagramChannel channel=socketsToChannels.get(src);
  if (channel == null) {
    if (bindPort(localInetAddress,message.getSource().getPort(),localInetAddress,message.getSource().getPort()) == false) {
      logger.warn("String_Node_Str" + message.getClass().getCanonicalName() + "String_Node_Str"+ src.toString());
      trigger(new Fault(new IllegalStateException("String_Node_Str" + "String_Node_Str" + src.getPort())),control);
      return;
    }
    channel=socketsToChannels.get(src);
  }
  try {
    logger.trace("String_Node_Str" + message.getClass().getCanonicalName() + "String_Node_Str",message.getSource().getId(),message.getDestination().getId());
    channel.write(new DatagramPacket(message.toByteArray(),dest));
    totalWrittenBytes+=message.getSize();
  }
 catch (  NullPointerException ex) {
    logger.warn("String_Node_Str" + message.getClass().getCanonicalName() + "String_Node_Str"+ src.toString());
    trigger(new Fault(ex),control);
  }
catch (  MessageEncodingException ex) {
    logger.warn("String_Node_Str" + message.getClass().getCanonicalName() + "String_Node_Str"+ src.toString());
    trigger(new Fault(ex),control);
  }
}

Fixed version (ground truth):
private void send(RewriteableMsg message){
  InetSocketAddress upnpSocket=address2SocketAddress(message.getSource());
  InetSocketAddress src=upnpLocalSocket.get(upnpSocket);
  InetSocketAddress dest=address2SocketAddress(message.getDestination());
  if (src == null) {
    String strError="String_Node_Str" + "String_Node_Str" + message.getClass() + "String_Node_Str"+ message.getSource();
    logger.error(strError);
    trigger(new Fault(new IllegalArgumentException(strError)),control);
    return;
  }
  DatagramChannel channel=socketsToChannels.get(src);
  if (channel == null) {
    if (bindPort(localInetAddress,message.getSource().getPort(),localInetAddress,message.getSource().getPort()) == false) {
      logger.warn("String_Node_Str" + message.getClass().getCanonicalName() + "String_Node_Str"+ src.toString());
      trigger(new Fault(new IllegalStateException("String_Node_Str" + "String_Node_Str" + src.getPort())),control);
      return;
    }
    channel=socketsToChannels.get(src);
  }
  try {
    logger.trace("String_Node_Str" + message.getClass().getCanonicalName() + "String_Node_Str",message.getSource().getId(),message.getDestination().getId());
    channel.write(new DatagramPacket(((Encodable)message).toByteArray(),dest));
    totalWrittenBytes+=message.getSize();
  }
 catch (  NullPointerException ex) {
    logger.warn("String_Node_Str" + message.getClass().getCanonicalName() + "String_Node_Str"+ src.toString());
    trigger(new Fault(ex),control);
  }
catch (  MessageEncodingException ex) {
    logger.warn("String_Node_Str" + message.getClass().getCanonicalName() + "String_Node_Str"+ src.toString());
    trigger(new Fault(ex),control);
  }
}