Program: 49141
Project: 49141
Buggy source:
/** 
 * Kill a Linux process, not portable
 * @param pid
 */
private boolean kill(Process proc,Logger logger){
  try {
    if (isUnix()) {
      Field field=proc.getClass().getDeclaredField("String_Node_Str");
      field.setAccessible(true);
      Integer pid=(Integer)field.get(proc);
      String killCmd=Configuration.getString("String_Node_Str");
      String[] cmdArrayKill={killCmd,pid.toString()};
      Process procKill=Runtime.getRuntime().exec(cmdArrayKill);
      if (ConfigInfo.isDebugEnabled()) {
        logger.debug("String_Node_Str" + killCmd + "String_Node_Str"+ pid);
        BufferedReader bufInStream=new BufferedReader(new InputStreamReader(procKill.getInputStream()));
        String line;
        while ((line=bufInStream.readLine()) != null) {
          logger.debug(line);
        }
        bufInStream.close();
        logger.debug("String_Node_Str" + killCmd + "String_Node_Str"+ pid);
        bufInStream=new BufferedReader(new InputStreamReader(procKill.getErrorStream()));
        while ((line=bufInStream.readLine()) != null) {
          logger.debug(line);
        }
        bufInStream.close();
      }
      int exit=procKill.waitFor();
      logger.info("String_Node_Str" + exit);
      if (exit == 0) {
        return true;
      }
    }
 else {
      logger.warn("String_Node_Str");
      ;
    }
  }
 catch (  Throwable t) {
    logger.error("String_Node_Str" + proc,t);
  }
  return false;
}

Fixed version (ground truth):
/** 
 * Kill a Linux process, not portable
 * @param pid
 */
private boolean kill(Process proc,Logger logger){
  BufferedReader bufInStream=null;
  BufferedReader bufErrStream=null;
  try {
    if (isUnix()) {
      Field field=proc.getClass().getDeclaredField("String_Node_Str");
      field.setAccessible(true);
      Integer pid=(Integer)field.get(proc);
      String killCmd=Configuration.getString("String_Node_Str");
      String[] cmdArrayKill={killCmd,pid.toString()};
      Process procKill=Runtime.getRuntime().exec(cmdArrayKill);
      if (ConfigInfo.isDebugEnabled()) {
        logger.debug("String_Node_Str" + killCmd + "String_Node_Str"+ pid);
        bufInStream=new BufferedReader(new InputStreamReader(procKill.getInputStream()));
        String line;
        while ((line=bufInStream.readLine()) != null) {
          logger.debug(line);
        }
        logger.debug("String_Node_Str" + killCmd + "String_Node_Str"+ pid);
        bufErrStream=new BufferedReader(new InputStreamReader(procKill.getErrorStream()));
        while ((line=bufErrStream.readLine()) != null) {
          logger.debug(line);
        }
      }
      int exit=procKill.waitFor();
      logger.info("String_Node_Str" + exit);
      if (exit == 0) {
        return true;
      }
    }
 else {
      logger.warn("String_Node_Str");
      ;
    }
  }
 catch (  Throwable t) {
    logger.error("String_Node_Str" + proc,t);
  }
 finally {
    if (bufInStream != null) {
      try {
        bufInStream.close();
      }
 catch (      Exception e) {
      }
    }
    if (bufErrStream != null) {
      try {
        bufErrStream.close();
      }
 catch (      Exception e) {
      }
    }
  }
  return false;
}