Program: 14767
Project: 14767
Buggy source:
public static void check() throws Exception {
  final List<ArbitratorConfiguration> configs=ServiceConfigurations.list(Arbitrator.class);
  for (  final ArbitratorConfiguration config : configs) {
    if (Internets.localHostInetAddress().equals(Internets.toAddress(config.getHostName()))) {
      final String hostName=config.getGatewayHost();
      if (hostName != null) {
        Threads.lookup(Arbitrator.class,ArbitratorControl.class).submit(new Runnable(){
          @Override public void run(){
            try {
              final InetAddress addr=InetAddress.getByName(hostName);
              if (addr.isReachable(2000)) {
                ArbitratorControl.error.remove(hostName);
                ArbitratorControl.okay.put(hostName,config);
              }
            }
 catch (            final UnknownHostException e) {
              ArbitratorControl.error.put(config,Exceptions.filterStackTrace(e));
              ArbitratorControl.okay.remove(hostName);
            }
catch (            final IOException e) {
              ArbitratorControl.error.put(config,Exceptions.filterStackTrace(e));
              ArbitratorControl.okay.remove(hostName);
            }
            EventRecord.here(ArbitratorControl.class,EventType.BOOTSTRAPPER_CHECK,hostName,"String_Node_Str",error.get(hostName).toString()).debug();
          }
        }
);
      }
    }
  }
  final Set<ArbitratorConfiguration> downArbitrators=Sets.newHashSet(error.keySet());
  if (downArbitrators.size() > 0) {
    ArbitratorConfiguration anyConfig=null;
    List<Exception> exceptions=new ArrayList<Exception>();
    for (    ArbitratorConfiguration key : downArbitrators) {
      anyConfig=key;
      exceptions.add(error.get(key));
    }
    if (ArbitratorControl.okay.isEmpty()) {
      throw Faults.fatal(anyConfig,exceptions);
    }
 else {
      throw Faults.advisory(anyConfig,exceptions);
    }
  }
}

Fixed version (ground truth):
public static void check() throws Exception {
  final List<ArbitratorConfiguration> configs=ServiceConfigurations.list(Arbitrator.class);
  for (  final ArbitratorConfiguration config : configs) {
    if (Internets.testLocal(config.getHostName())) {
      final String hostName=config.getGatewayHost();
      if (hostName != null) {
        Threads.lookup(Arbitrator.class,ArbitratorControl.class).submit(new Runnable(){
          @Override public void run(){
            try {
              final InetAddress addr=InetAddress.getByName(hostName);
              if (Internets.isReachable(addr,2000)) {
                ArbitratorControl.error.remove(hostName);
                ArbitratorControl.okay.put(hostName,config);
              }
 else {
                ArbitratorControl.error.put(config,Exceptions.filterStackTrace(new NoRouteToHostException(addr.toString())));
                ArbitratorControl.okay.remove(hostName);
              }
            }
 catch (            final UnknownHostException e) {
              ArbitratorControl.error.put(config,Exceptions.filterStackTrace(e));
              ArbitratorControl.okay.remove(hostName);
            }
catch (            final IOException e) {
              ArbitratorControl.error.put(config,Exceptions.filterStackTrace(e));
              ArbitratorControl.okay.remove(hostName);
            }
            EventRecord.here(ArbitratorControl.class,EventType.BOOTSTRAPPER_CHECK,hostName,"String_Node_Str",error.get(hostName).toString()).debug();
          }
        }
);
      }
    }
  }
  final Set<ArbitratorConfiguration> downArbitrators=Sets.newHashSet(error.keySet());
  if (downArbitrators.size() > 0) {
    ArbitratorConfiguration anyConfig=null;
    List<Exception> exceptions=new ArrayList<Exception>();
    for (    ArbitratorConfiguration key : downArbitrators) {
      anyConfig=key;
      exceptions.add(error.get(key));
    }
    if (ArbitratorControl.okay.isEmpty()) {
      throw Faults.fatal(anyConfig,exceptions);
    }
 else {
      throw Faults.advisory(anyConfig,exceptions);
    }
  }
}