Program: 150229
Project: 150229
Buggy source:
/** 
 * Begin vm execution. The following machine registers are set by "C" bootstrap program  before calling this method: JTOC_POINTER        - required for accessing globals FRAME_POINTER       - required for accessing locals THREAD_ID_REGISTER  - required for method prolog (stack overflow check)
 * @exception Exception
 */
public static void boot() throws Exception, VM_PragmaLogicallyUninterruptible {
  writingBootImage=false;
  runningVM=true;
  runningAsSubsystem=false;
  verboseBoot=VM_BootRecord.the_boot_record.verboseBoot;
  sysWriteLockOffset=VM_Entrypoints.sysWriteLockField.getOffset();
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  VM_ProcessorLocalState.boot();
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  VM_Thread currentThread=VM_Processor.getCurrentProcessor().activeThread;
  currentThread.stackLimit=VM_Magic.objectAsAddress(currentThread.stack).add(STACK_SIZE_GUARD);
  VM_Processor.getCurrentProcessor().activeThreadStackLimit=currentThread.stackLimit;
  if (!BuildForSingleVirtualProcessor)   VM_Processor.getCurrentProcessor().pthread_id=VM_SysCall.sysPthreadSelf();
  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");
  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 vmClasses=VM_CommandLineArgs.getVMClasses();
  VM_ClassLoader.boot(vmClasses);
  VM_SystemClassLoader.boot();
  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");
  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();
  com.ibm.JikesRVM.jni.VM_JNIEnvironment.boot();
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  VM_Thread.getCurrentThread().initializeJNIEnv();
  runClassInitializer("String_Node_Str");
  VM_HardwarePerformanceMonitors.setUpHPMinfo();
  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");
  VM_FileSystem.initializeStandardStreams();
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  VM.fullyBooted=true;
  MM_Interface.fullyBootedVM();
  VM_BaselineCompiler.fullyBootedVM();
  VM_EdgeCounts.boot();
  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");
  Thread xx=new MainThread(applicationArguments);
  VM_Address yy=VM_Magic.objectAsAddress(xx);
  VM_Thread mainThread=(VM_Thread)VM_Magic.addressAsObject(yy);
  VM_Callbacks.notifyAppRunStart("String_Node_Str",0);
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  mainThread.start();
  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");
  VM_Thread.terminate();
  if (VM.VerifyAssertions)   VM._assert(VM.NOT_REACHED);
}

Fixed version (ground truth):
/** 
 * Begin vm execution. The following machine registers are set by "C" bootstrap program  before calling this method: JTOC_POINTER        - required for accessing globals FRAME_POINTER       - required for accessing locals THREAD_ID_REGISTER  - required for method prolog (stack overflow check)
 * @exception Exception
 */
public static void boot() throws Exception, VM_PragmaLogicallyUninterruptible {
  writingBootImage=false;
  runningVM=true;
  runningAsSubsystem=false;
  verboseBoot=VM_BootRecord.the_boot_record.verboseBoot;
  sysWriteLockOffset=VM_Entrypoints.sysWriteLockField.getOffset();
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  VM_ProcessorLocalState.boot();
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  VM_Thread currentThread=VM_Processor.getCurrentProcessor().activeThread;
  currentThread.stackLimit=VM_Magic.objectAsAddress(currentThread.stack).add(STACK_SIZE_GUARD);
  VM_Processor.getCurrentProcessor().activeThreadStackLimit=currentThread.stackLimit;
  currentThread.startQuantum(VM_Time.cycles());
  if (!BuildForSingleVirtualProcessor)   VM_Processor.getCurrentProcessor().pthread_id=VM_SysCall.sysPthreadSelf();
  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");
  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 vmClasses=VM_CommandLineArgs.getVMClasses();
  VM_ClassLoader.boot(vmClasses);
  VM_SystemClassLoader.boot();
  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");
  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();
  com.ibm.JikesRVM.jni.VM_JNIEnvironment.boot();
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  VM_Thread.getCurrentThread().initializeJNIEnv();
  runClassInitializer("String_Node_Str");
  VM_HardwarePerformanceMonitors.setUpHPMinfo();
  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");
  VM_FileSystem.initializeStandardStreams();
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  VM.fullyBooted=true;
  MM_Interface.fullyBootedVM();
  VM_BaselineCompiler.fullyBootedVM();
  VM_EdgeCounts.boot();
  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");
  Thread xx=new MainThread(applicationArguments);
  VM_Address yy=VM_Magic.objectAsAddress(xx);
  VM_Thread mainThread=(VM_Thread)VM_Magic.addressAsObject(yy);
  VM_Callbacks.notifyAppRunStart("String_Node_Str",0);
  if (verboseBoot >= 1)   VM.sysWriteln("String_Node_Str");
  mainThread.start();
  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");
  VM_Thread.terminate();
  if (VM.VerifyAssertions)   VM._assert(VM.NOT_REACHED);
}