Program: 149943
Project: 149943
Buggy source:
private static void processOptionString(String[] args){
  for (int i=0, n=args.length; i < n; i++) {
    try {
      String arg=args[i];
      if (arg.startsWith("String_Node_Str") && options.processAsOption("String_Node_Str",arg.substring(4))) {
      }
 else       if (arg.equals("String_Node_Str")) {
        OPT_Compiler.setBootOptions(options);
      }
 else       if (arg.equals("String_Node_Str")) {
        i++;
        BufferedReader in=new BufferedReader(new FileReader(args[i]));
        StringBuffer s=new StringBuffer("String_Node_Str");
        while (in.ready()) {
          String line=in.readLine().trim();
          if (!line.startsWith("String_Node_Str")) {
            s.append(line);
            s.append("String_Node_Str");
          }
        }
        in.close();
        StringTokenizer t=new StringTokenizer(s.toString());
        String[] av=new String[t.countTokens()];
        for (int j=0; j < av.length; j++) {
          av[j]=t.nextToken();
        }
        processOptionString(av);
      }
 else       if (arg.equals("String_Node_Str")) {
        BASELINE=true;
      }
 else       if (arg.equals("String_Node_Str")) {
        BASELINE=false;
      }
 else       if (arg.equals("String_Node_Str")) {
        loadClass(args[++i]);
      }
 else       if (arg.equals("String_Node_Str")) {
        VM_Class klass=loadClass(args[++i]);
        processClass(klass,options);
        options=(OPT_Options)options.clone();
      }
 else       if (arg.equals("String_Node_Str") || arg.equals("String_Node_Str") || arg.equals("String_Node_Str")) {
        boolean isBaseline=BASELINE;
        if (arg.equals("String_Node_Str"))         isBaseline=false;
        if (arg.equals("String_Node_Str"))         isBaseline=true;
        VM_Class klass=null;
        try {
          klass=loadClass(args[++i]);
        }
 catch (        Exception e) {
          System.err.println("String_Node_Str" + args[i - 1]);
          klass=null;
        }
        if (klass == null)         continue;
        String name=args[++i];
        String desc=args[++i];
        VM_Method method=findDeclaredOrFirstMethod(klass,name,desc);
        if (method == null || method.isAbstract() || method.isNative()) {
          System.err.println("String_Node_Str" + args[i - 2] + "String_Node_Str"+ name);
        }
 else {
          processMethod(method,options,isBaseline);
        }
        options=(OPT_Options)options.clone();
      }
 else       if (arg.equals("String_Node_Str")) {
        perf=new Performance();
      }
 else       if (arg.equals("String_Node_Str")) {
        DISABLE_CLASS_LOADING=true;
      }
 else       if (arg.equals("String_Node_Str")) {
        EXECUTE_WITH_REFLECTION=true;
        VM_Class klass=loadClass(args[++i]);
        String name=args[++i];
        String desc=args[++i];
        VM_NormalMethod method=(VM_NormalMethod)findDeclaredOrFirstMethod(klass,name,desc);
        VM_CompiledMethod cm=null;
        if (BASELINE)         cm=VM_Compiler.compile(method);
 else {
          OPT_CompilationPlan cp=new OPT_CompilationPlan(method,OPT_OptimizationPlanner.createOptimizationPlan(options),null,options);
          try {
            cm=OPT_Compiler.compile(cp);
          }
 catch (          Throwable e) {
            System.err.println("String_Node_Str" + method + "String_Node_Str"+ e);
          }
        }
        if (cm != null)         method.replaceCompiledMethod(cm);
        VM_TypeReference[] argDesc=method.getDescriptor().parseForParameterTypes(klass.getClassLoader());
        Object[] reflectMethodArgs=new Object[argDesc.length];
        i=parseMethodArgs(argDesc,args,i,reflectMethodArgs);
        java.lang.reflect.Method reflectoid=java.lang.reflect.JikesRVMSupport.createMethod(method);
        reflectoidVector.addElement(reflectoid);
        reflectMethodVector.addElement(method);
        reflectMethodArgsVector.addElement(reflectMethodArgs);
        options=(OPT_Options)options.clone();
      }
 else {
        System.err.println("String_Node_Str" + arg + "String_Node_Str");
      }
    }
 catch (    ArrayIndexOutOfBoundsException e) {
      System.err.println("String_Node_Str" + "String_Node_Str");
      printFormatString();
      e.printStackTrace(System.err);
      break;
    }
catch (    Exception e) {
      System.err.println(e);
      e.printStackTrace(System.err);
      break;
    }
  }
}

Fixed version (ground truth):
private static void processOptionString(String[] args){
  for (int i=0, n=args.length; i < n; i++) {
    try {
      String arg=args[i];
      if (arg.startsWith("String_Node_Str") && options.processAsOption("String_Node_Str",arg.substring(4))) {
      }
 else       if (arg.equals("String_Node_Str")) {
        OPT_Compiler.setBootOptions(options);
      }
 else       if (arg.equals("String_Node_Str")) {
        i++;
        BufferedReader in=new BufferedReader(new FileReader(args[i]));
        StringBuffer s=new StringBuffer("String_Node_Str");
        while (in.ready()) {
          String line=in.readLine().trim();
          if (!line.startsWith("String_Node_Str")) {
            s.append(line);
            s.append("String_Node_Str");
          }
        }
        in.close();
        StringTokenizer t=new StringTokenizer(s.toString());
        String[] av=new String[t.countTokens()];
        for (int j=0; j < av.length; j++) {
          av[j]=t.nextToken();
        }
        processOptionString(av);
      }
 else       if (arg.equals("String_Node_Str")) {
        BASELINE=true;
      }
 else       if (arg.equals("String_Node_Str")) {
        BASELINE=false;
      }
 else       if (arg.equals("String_Node_Str")) {
        loadClass(args[++i]);
      }
 else       if (arg.equals("String_Node_Str")) {
        VM_Class klass=loadClass(args[++i]);
        processClass(klass,options);
        options=(OPT_Options)options.clone();
      }
 else       if (arg.equals("String_Node_Str") || arg.equals("String_Node_Str") || arg.equals("String_Node_Str")) {
        boolean isBaseline=BASELINE;
        if (arg.equals("String_Node_Str"))         isBaseline=false;
        if (arg.equals("String_Node_Str"))         isBaseline=true;
        VM_Class klass=null;
        try {
          klass=loadClass(args[++i]);
        }
 catch (        Exception e) {
          System.err.println("String_Node_Str" + args[i - 1]);
          klass=null;
        }
        if (klass == null)         continue;
        String name=args[++i];
        String desc=args[++i];
        VM_Method method=findDeclaredOrFirstMethod(klass,name,desc);
        if (method == null || method.isAbstract() || method.isNative()) {
          System.err.println("String_Node_Str" + args[i - 2] + "String_Node_Str"+ name);
        }
 else {
          processMethod(method,options,isBaseline);
        }
        options=(OPT_Options)options.clone();
      }
 else       if (arg.equals("String_Node_Str")) {
        perf=new Performance();
      }
 else       if (arg.equals("String_Node_Str")) {
        DISABLE_CLASS_LOADING=true;
      }
 else       if (arg.equals("String_Node_Str")) {
        EXECUTE_WITH_REFLECTION=true;
        VM_Class klass=loadClass(args[++i]);
        String name=args[++i];
        String desc=args[++i];
        VM_NormalMethod method=(VM_NormalMethod)findDeclaredOrFirstMethod(klass,name,desc);
        VM_CompiledMethod cm=null;
        if (BASELINE)         cm=VM_BaselineCompiler.compile(method);
 else {
          OPT_CompilationPlan cp=new OPT_CompilationPlan(method,OPT_OptimizationPlanner.createOptimizationPlan(options),null,options);
          try {
            cm=OPT_Compiler.compile(cp);
          }
 catch (          Throwable e) {
            System.err.println("String_Node_Str" + method + "String_Node_Str"+ e);
          }
        }
        if (cm != null)         method.replaceCompiledMethod(cm);
        VM_TypeReference[] argDesc=method.getDescriptor().parseForParameterTypes(klass.getClassLoader());
        Object[] reflectMethodArgs=new Object[argDesc.length];
        i=parseMethodArgs(argDesc,args,i,reflectMethodArgs);
        java.lang.reflect.Method reflectoid=java.lang.reflect.JikesRVMSupport.createMethod(method);
        reflectoidVector.addElement(reflectoid);
        reflectMethodVector.addElement(method);
        reflectMethodArgsVector.addElement(reflectMethodArgs);
        options=(OPT_Options)options.clone();
      }
 else {
        System.err.println("String_Node_Str" + arg + "String_Node_Str");
      }
    }
 catch (    ArrayIndexOutOfBoundsException e) {
      System.err.println("String_Node_Str" + "String_Node_Str");
      printFormatString();
      e.printStackTrace(System.err);
      break;
    }
catch (    Exception e) {
      System.err.println(e);
      e.printStackTrace(System.err);
      break;
    }
  }
}