Program: 149996
Project: 149996
Buggy source:
/** 
 * Complete the task of booting Jikes RVM. Done in a secondary method mainly because this code doesn't have to be uninterruptible and this is the cleanest way to make that distinction.
 */
private static void finishBooting() throws InterruptiblePragma {
  if (!singleVirtualProcessor) {
    VM_SysCall.sysPthreadSetupSignalHandling();
    VM_Processor.getCurrentProcessor().pthread_id=VM_SysCall.sysPthreadSelf();
  }
  VM_Thread.boot();
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  MM_Interface.setupProcessor(VM_Processor.getCurrentProcessor());
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str",VM_Magic.objectAsAddress(VM_BootRecord.the_boot_record));
  MM_Interface.boot(VM_BootRecord.the_boot_record);
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  VM_Time.bootStageOne();
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  VM_BaselineCompiler.initOptions();
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  VM_QuickCompiler.initOptions();
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  createClassObjects();
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  VM_CommandLineArgs.fetchCommandLineArguments();
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  VM_CommandLineArgs.earlyProcessCommandLineArguments();
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  MM_Interface.postBoot();
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  String bootstrapClasses=VM_CommandLineArgs.getBootstrapClasses();
  VM_ClassLoader.boot();
  VM_BootstrapClassLoader.boot(bootstrapClasses);
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  VM_Time.bootStageTwo();
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  VM.safeToAllocateJavaThread=true;
  VM_Scheduler.giveBootVM_ThreadAJavaLangThread();
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  VM_Lock.boot();
  if (BuildForHPM) {
    if (VM_HardwarePerformanceMonitors.enabled()) {
      if (VM_HardwarePerformanceMonitors.verbose >= 2)       VM.sysWriteln("String_Node_Str");
      VM_HardwarePerformanceMonitors.boot();
    }
  }
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  VM_Scheduler.boot();
  VM_DynamicLibrary.boot();
  VM.dynamicClassLoadingEnabled=true;
  com.ibm.JikesRVM.jni.VM_JNIEnvironment.boot();
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  VM_Thread.getCurrentThread().initializeJNIEnv();
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  System.loadLibrary("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  VM_HardwarePerformanceMonitors.setUpHPMinfo();
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  VM_FileSystem.initializeStandardStreams();
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  VM.fullyBooted=true;
  MM_Interface.fullyBootedVM();
  VM_BaselineCompiler.fullyBootedVM();
  VM_QuickCompiler.fullyBootedVM();
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  VM_RuntimeCompiler.boot();
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  String[] applicationArguments=VM_CommandLineArgs.lateProcessCommandLineArguments();
  if (VM.verboseClassLoading || verboseBoot >= 1)   VM.sysWrite("String_Node_Str");
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  JikesRVMSocketImpl.boot();
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  com.ibm.JikesRVM.adaptive.VM_Controller.boot();
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  if (applicationArguments.length == 0) {
    pleaseSpecifyAClass();
  }
  if (applicationArguments.length > 0 && !VM_TypeDescriptorParsing.isJavaClassName(applicationArguments[0])) {
    VM.sysWrite("String_Node_Str");
    VM.sysWrite(applicationArguments[0]);
    VM.sysWrite("String_Node_Str");
    pleaseSpecifyAClass();
  }
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  VM_ClassLoader.getApplicationClassLoader();
  VM_ClassLoader.declareApplicationClassLoaderIsReady();
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  runClassInitializer("String_Node_Str");
  VM_EdgeCounts.boot();
  VM_CompilerAdvice.postBoot();
  if (verboseBoot >= 2)   VM.sysWriteln("String_Node_Str");
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  Thread mainThread=new MainThread(applicationArguments);
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  mainThread.start();
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  VM_Thread t=new DebuggerThread();
  t.start(VM_Scheduler.debuggerQueue);
  if (VM_HardwarePerformanceMonitors.enabled()) {
    if (!VM_HardwarePerformanceMonitors.thread_group) {
      if (VM_HardwarePerformanceMonitors.verbose >= 2)       VM.sysWrite("String_Node_Str");
      VM_SysCall.sysHPMresetMyThread();
    }
  }
  if (VM.TraceThreads)   VM_Scheduler.trace("String_Node_Str","String_Node_Str");
  if (verboseBoot >= 2)   VM.sysWriteln("String_Node_Str");
  VM_Thread.terminate();
  if (VM.VerifyAssertions)   VM._assert(VM.NOT_REACHED);
}

Fixed version (ground truth):
/** 
 * Complete the task of booting Jikes RVM. Done in a secondary method mainly because this code doesn't have to be uninterruptible and this is the cleanest way to make that distinction.
 */
private static void finishBooting() throws InterruptiblePragma {
  if (!singleVirtualProcessor) {
    VM_SysCall.sysPthreadSetupSignalHandling();
    VM_Processor.getCurrentProcessor().pthread_id=VM_SysCall.sysPthreadSelf();
  }
  VM_Thread.boot();
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  MM_Interface.setupProcessor(VM_Processor.getCurrentProcessor());
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str",VM_Magic.objectAsAddress(VM_BootRecord.the_boot_record));
  MM_Interface.boot(VM_BootRecord.the_boot_record);
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  VM_Time.bootStageOne();
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  VM_BaselineCompiler.initOptions();
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  VM_QuickCompiler.initOptions();
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  createClassObjects();
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  VM_CommandLineArgs.fetchCommandLineArguments();
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  VM_CommandLineArgs.earlyProcessCommandLineArguments();
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  MM_Interface.postBoot();
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  String bootstrapClasses=VM_CommandLineArgs.getBootstrapClasses();
  VM_ClassLoader.boot();
  VM_BootstrapClassLoader.boot(bootstrapClasses);
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  VM_Time.bootStageTwo();
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  VM.safeToAllocateJavaThread=true;
  VM_Scheduler.giveBootVM_ThreadAJavaLangThread();
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  VM_Lock.boot();
  if (BuildForHPM) {
    if (VM_HardwarePerformanceMonitors.enabled()) {
      if (VM_HardwarePerformanceMonitors.verbose >= 2)       VM.sysWriteln("String_Node_Str");
      VM_HardwarePerformanceMonitors.boot();
    }
  }
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  VM_Scheduler.boot();
  VM_DynamicLibrary.boot();
  VM.dynamicClassLoadingEnabled=true;
  com.ibm.JikesRVM.jni.VM_JNIEnvironment.boot();
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  VM_Thread.getCurrentThread().initializeJNIEnv();
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  System.loadLibrary("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  VM_HardwarePerformanceMonitors.setUpHPMinfo();
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  runClassInitializer("String_Node_Str");
  VM_FileSystem.initializeStandardStreams();
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  VM.fullyBooted=true;
  MM_Interface.fullyBootedVM();
  VM_BaselineCompiler.fullyBootedVM();
  VM_QuickCompiler.fullyBootedVM();
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  VM_RuntimeCompiler.boot();
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  String[] applicationArguments=VM_CommandLineArgs.lateProcessCommandLineArguments();
  if (VM.verboseClassLoading || verboseBoot >= 1)   VM.sysWrite("String_Node_Str");
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  JikesRVMSocketImpl.boot();
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  com.ibm.JikesRVM.adaptive.VM_Controller.boot();
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  if (applicationArguments.length == 0) {
    pleaseSpecifyAClass();
  }
  if (applicationArguments.length > 0 && !VM_TypeDescriptorParsing.isJavaClassName(applicationArguments[0])) {
    VM.sysWrite("String_Node_Str");
    VM.sysWrite(applicationArguments[0]);
    VM.sysWrite("String_Node_Str");
    pleaseSpecifyAClass();
  }
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  VM_ClassLoader.getApplicationClassLoader();
  VM_ClassLoader.declareApplicationClassLoaderIsReady();
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  runClassInitializer("String_Node_Str");
  VM_EdgeCounts.boot();
  VM_CompilerAdvice.postBoot();
  if (verboseBoot >= 2)   VM.sysWriteln("String_Node_Str");
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  Thread mainThread=new MainThread(applicationArguments);
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  mainThread.start();
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  VM_Thread t=new DebuggerThread();
  t.start(VM_Scheduler.debuggerQueue);
  if (VM_HardwarePerformanceMonitors.enabled()) {
    if (!VM_HardwarePerformanceMonitors.thread_group) {
      if (VM_HardwarePerformanceMonitors.verbose >= 2)       VM.sysWrite("String_Node_Str");
      VM_SysCall.sysHPMresetMyThread();
    }
  }
  if (VM.TraceThreads)   VM_Scheduler.trace("String_Node_Str","String_Node_Str");
  if (verboseBoot >= 2)   VM.sysWriteln("String_Node_Str");
  VM_Thread.terminate();
  if (VM.VerifyAssertions)   VM._assert(VM.NOT_REACHED);
}