Program: 186718
Project: 186718
Buggy source:
/** 
 * Setup AppInfo using the config previously initialized with   {@link #setupConfig(String[])}.
 * @param args the arguments containing the name of the main method and additional roots without config options.
 * @param loadTransitiveHull if true, load the transitive hull of the root classes too.
 */
public void setupAppInfo(String[] args,boolean loadTransitiveHull){
  CustomAttribute.registerDefaultReader();
  appInfo.setClassPath(new ClassPath(config.getOption(Config.CLASSPATH)));
  appInfo.setExitOnMissingClass(!config.getOption(Config.VERBOSE));
  if (config.hasOption(Config.LIBRARY_CLASSES)) {
    List<String> libs=Config.splitStringList(config.getOption(Config.LIBRARY_CLASSES));
    for (    String lib : libs) {
      appInfo.addLibrary(lib.replaceAll("String_Node_Str","String_Node_Str"));
    }
  }
  if (config.hasOption(Config.IGNORE_CLASSES)) {
    List<String> ignore=Config.splitStringList(config.getOption(Config.IGNORE_CLASSES));
    for (    String cls : ignore) {
      appInfo.addLibrary(cls.replaceAll("String_Node_Str","String_Node_Str"));
    }
  }
  if (config.hasOption(Config.EXCLUDE_LIBRARIES)) {
    appInfo.setLoadLibraries(!config.getOption(Config.EXCLUDE_LIBRARIES));
  }
  if (config.hasOption(Config.EXCLUDE_NATIVES)) {
    appInfo.setLoadNatives(!config.getOption(Config.EXCLUDE_NATIVES));
  }
  appInfo.setCallstringLength(config.getOption(Config.CALLSTRING_LENGTH).intValue());
  for (  String hwObject : Config.splitStringList(config.getOption(Config.HW_OBJECTS))) {
    appInfo.addHwObjectName(hwObject);
  }
  if (config.hasOption(Config.LOAD_SOURCELINES)) {
    String filename=config.getOption(Config.LOAD_SOURCELINES);
    if (filename != null && !"String_Node_Str".equals(filename.trim())) {
      File storage=new File(filename);
      if (storage.exists()) {
        appInfo.registerEventHandler(new SourceLineStorage(storage));
      }
    }
  }
  for (  String toolName : tools.keySet()) {
    if (useTool(toolName)) {
      AppEventHandler handler=tools.get(toolName).getEventHandler();
      if (handler != null) {
        appInfo.registerEventHandler(handler);
      }
    }
  }
  if (config.hasOption(Config.PROCESSOR_MODEL)) {
    initProcessorModel(config.getOption(Config.PROCESSOR_MODEL));
  }
  List<String> roots=Config.splitStringList(config.getOption(Config.ROOTS));
  for (  String root : roots) {
    ClassInfo rootInfo=appInfo.loadClass(root.replaceAll("String_Node_Str","String_Node_Str"));
    if (rootInfo == null) {
      System.out.flush();
      System.err.println("String_Node_Str" + root + "String_Node_Str");
      System.exit(4);
    }
    appInfo.addRoot(rootInfo);
  }
  String mainClassName=null;
  if (args.length > 0 && !"String_Node_Str".equals(args[0])) {
    mainClassName=args[0];
  }
 else   if (config.hasOption(Config.MAIN_METHOD_NAME)) {
    mainClassName=MemberID.parse(config.getOption(Config.MAIN_METHOD_NAME)).getClassName();
  }
 else {
    System.out.flush();
    System.err.println("String_Node_Str");
    if (config.getOptions().containsOption(Config.SHOW_HELP)) {
      System.err.println("String_Node_Str");
    }
    System.exit(2);
  }
  try {
    MethodInfo main=getMainMethod(mainClassName.replaceAll("String_Node_Str","String_Node_Str"));
    appInfo.setMainMethod(main);
  }
 catch (  Config.BadConfigurationException e) {
    System.out.flush();
    System.err.println(e.getMessage());
    if (config.getOptions().containsOption(Config.SHOW_HELP)) {
      System.err.println("String_Node_Str");
    }
    System.exit(2);
  }
  for (int i=1; i < args.length; i++) {
    ClassInfo clsInfo=appInfo.loadClass(args[i].replaceAll("String_Node_Str","String_Node_Str"));
    appInfo.addRoot(clsInfo);
  }
  try {
    for (    String tool : tools.keySet()) {
      if (useTool(tool)) {
        tools.get(tool).onSetupRoots(this,appInfo);
      }
    }
  }
 catch (  Config.BadConfigurationException e) {
    System.out.flush();
    System.err.println(e.getMessage());
    if (config.getOptions().containsOption(Config.SHOW_HELP)) {
      System.err.println("String_Node_Str");
    }
    System.exit(2);
  }
  if (loadTransitiveHull) {
    loadClassInfos();
  }
  try {
    for (    String tool : tools.keySet()) {
      if (useTool(tool)) {
        tools.get(tool).onSetupAppInfo(this,appInfo);
      }
    }
  }
 catch (  Config.BadConfigurationException e) {
    System.out.flush();
    System.err.println(e.getMessage());
    if (config.getOptions().containsOption(Config.SHOW_HELP)) {
      System.err.println("String_Node_Str");
    }
    System.exit(2);
  }
}

Fixed version (ground truth):
/** 
 * Setup AppInfo using the config previously initialized with   {@link #setupConfig(String[])}.
 * @param args the arguments containing the name of the main method and additional roots without config options.
 * @param loadTransitiveHull if true, load the transitive hull of the root classes too.
 */
public void setupAppInfo(String[] args,boolean loadTransitiveHull){
  CustomAttribute.registerDefaultReader();
  appInfo.setClassPath(new ClassPath(config.getOption(Config.CLASSPATH)));
  appInfo.setExitOnMissingClass(!config.getOption(Config.VERBOSE));
  if (config.hasOption(Config.LIBRARY_CLASSES)) {
    List<String> libs=Config.splitStringList(config.getOption(Config.LIBRARY_CLASSES));
    for (    String lib : libs) {
      appInfo.addLibrary(lib.replaceAll("String_Node_Str","String_Node_Str"));
    }
  }
  if (config.hasOption(Config.IGNORE_CLASSES)) {
    List<String> ignore=Config.splitStringList(config.getOption(Config.IGNORE_CLASSES));
    for (    String cls : ignore) {
      appInfo.addLibrary(cls.replaceAll("String_Node_Str","String_Node_Str"));
    }
  }
  if (config.hasOption(Config.EXCLUDE_LIBRARIES)) {
    appInfo.setLoadLibraries(!config.getOption(Config.EXCLUDE_LIBRARIES));
  }
  if (config.hasOption(Config.EXCLUDE_NATIVES)) {
    appInfo.setLoadNatives(!config.getOption(Config.EXCLUDE_NATIVES));
  }
  appInfo.setCallstringLength(config.getOption(Config.CALLSTRING_LENGTH).intValue());
  for (  String hwObject : Config.splitStringList(config.getOption(Config.HW_OBJECTS))) {
    appInfo.addHwObjectName(hwObject);
  }
  for (  String toolName : tools.keySet()) {
    if (useTool(toolName)) {
      AppEventHandler handler=tools.get(toolName).getEventHandler();
      if (handler != null) {
        appInfo.registerEventHandler(handler);
      }
    }
  }
  if (config.hasOption(Config.PROCESSOR_MODEL)) {
    initProcessorModel(config.getOption(Config.PROCESSOR_MODEL));
  }
  List<String> roots=Config.splitStringList(config.getOption(Config.ROOTS));
  for (  String root : roots) {
    ClassInfo rootInfo=appInfo.loadClass(root.replaceAll("String_Node_Str","String_Node_Str"));
    if (rootInfo == null) {
      System.out.flush();
      System.err.println("String_Node_Str" + root + "String_Node_Str");
      System.exit(4);
    }
    appInfo.addRoot(rootInfo);
  }
  String mainClassName=null;
  if (args.length > 0 && !"String_Node_Str".equals(args[0])) {
    mainClassName=args[0];
  }
 else   if (config.hasOption(Config.MAIN_METHOD_NAME)) {
    mainClassName=MemberID.parse(config.getOption(Config.MAIN_METHOD_NAME)).getClassName();
  }
 else {
    System.out.flush();
    System.err.println("String_Node_Str");
    if (config.getOptions().containsOption(Config.SHOW_HELP)) {
      System.err.println("String_Node_Str");
    }
    System.exit(2);
  }
  try {
    MethodInfo main=getMainMethod(mainClassName.replaceAll("String_Node_Str","String_Node_Str"));
    appInfo.setMainMethod(main);
  }
 catch (  Config.BadConfigurationException e) {
    System.out.flush();
    System.err.println(e.getMessage());
    if (config.getOptions().containsOption(Config.SHOW_HELP)) {
      System.err.println("String_Node_Str");
    }
    System.exit(2);
  }
  for (int i=1; i < args.length; i++) {
    ClassInfo clsInfo=appInfo.loadClass(args[i].replaceAll("String_Node_Str","String_Node_Str"));
    appInfo.addRoot(clsInfo);
  }
  try {
    for (    String tool : tools.keySet()) {
      if (useTool(tool)) {
        tools.get(tool).onSetupRoots(this,appInfo);
      }
    }
  }
 catch (  Config.BadConfigurationException e) {
    System.out.flush();
    System.err.println(e.getMessage());
    if (config.getOptions().containsOption(Config.SHOW_HELP)) {
      System.err.println("String_Node_Str");
    }
    System.exit(2);
  }
  if (loadTransitiveHull) {
    loadClassInfos();
    if (config.hasOption(Config.LOAD_SOURCELINES)) {
      String filename=config.getOption(Config.LOAD_SOURCELINES);
      if (filename != null && !"String_Node_Str".equals(filename.trim())) {
        File storage=new File(filename);
        if (storage.exists()) {
          new SourceLineStorage(storage).loadSourceInfos();
        }
      }
    }
  }
  try {
    for (    String tool : tools.keySet()) {
      if (useTool(tool)) {
        tools.get(tool).onSetupAppInfo(this,appInfo);
      }
    }
  }
 catch (  Config.BadConfigurationException e) {
    System.out.flush();
    System.err.println(e.getMessage());
    if (config.getOptions().containsOption(Config.SHOW_HELP)) {
      System.err.println("String_Node_Str");
    }
    System.exit(2);
  }
}