Program: 96453
Project: 96453
Buggy source:
public void launch(ILaunchConfiguration configuration,String mode,ILaunch launch,IProgressMonitor monitor) throws CoreException {
  IServer server=ServerUtil.getServer(configuration);
  if (server == null) {
    Trace.trace(Trace.FINEST,"String_Node_Str");
  }
  OSGIFrameworkInstanceBehaviorDelegate oribd=(OSGIFrameworkInstanceBehaviorDelegate)server.loadAdapter(OSGIFrameworkInstanceBehaviorDelegate.class,null);
  String mainTypeName=oribd.getFrameworkClass();
  IVMInstall vm=verifyVMInstall(configuration);
  IVMRunner runner=vm.getVMRunner(mode);
  if (runner == null)   runner=vm.getVMRunner(ILaunchManager.RUN_MODE);
  File workingDir=verifyWorkingDirectory(configuration);
  String workingDirName=null;
  if (workingDir != null)   workingDirName=workingDir.getAbsolutePath();
  String pgmArgs=getProgramArguments(configuration);
  String vmArgs=getVMArguments(configuration);
  String[] envp=getEnvironment(configuration);
  ExecutionArguments execArgs=new ExecutionArguments(vmArgs,pgmArgs);
  Map vmAttributesMap=getVMSpecificAttributesMap(configuration);
  String[] classpath=getClasspath(configuration);
  VMRunnerConfiguration runConfig=new VMRunnerConfiguration(mainTypeName,classpath);
  runConfig.setProgramArguments(execArgs.getProgramArgumentsArray());
  runConfig.setVMArguments(execArgs.getVMArgumentsArray());
  runConfig.setWorkingDirectory(workingDirName);
  runConfig.setEnvironment(envp);
  runConfig.setVMSpecificAttributesMap(vmAttributesMap);
  String[] bootpath=getBootpath(configuration);
  if (bootpath != null && bootpath.length > 0)   runConfig.setBootClassPath(bootpath);
  setDefaultSourceLocator(launch,configuration);
  if (ILaunchManager.PROFILE_MODE.equals(mode)) {
    try {
      ServerProfilerDelegate.configureProfiling(launch,vm,runConfig,monitor);
    }
 catch (    CoreException ce) {
      oribd.stopImpl();
      throw ce;
    }
  }
  oribd.setupLaunch(launch,mode,monitor);
  try {
    runner.run(runConfig,launch,monitor);
    oribd.addProcessListener(launch.getProcesses()[0]);
  }
 catch (  Exception e) {
    oribd.stopImpl();
  }
}

Fixed version (ground truth):
public void launch(ILaunchConfiguration configuration,String mode,ILaunch launch,IProgressMonitor monitor) throws CoreException {
  IServer server=ServerUtil.getServer(configuration);
  if (server == null) {
    Trace.trace(Trace.FINEST,"String_Node_Str");
    return;
  }
  OSGIFrameworkInstanceBehaviorDelegate oribd=(OSGIFrameworkInstanceBehaviorDelegate)server.loadAdapter(OSGIFrameworkInstanceBehaviorDelegate.class,null);
  String mainTypeName=oribd.getFrameworkClass();
  IVMInstall vm=verifyVMInstall(configuration);
  IVMRunner runner=vm.getVMRunner(mode);
  if (runner == null)   runner=vm.getVMRunner(ILaunchManager.RUN_MODE);
  File workingDir=verifyWorkingDirectory(configuration);
  String workingDirName=null;
  if (workingDir != null)   workingDirName=workingDir.getAbsolutePath();
  String pgmArgs=getProgramArguments(configuration);
  String vmArgs=getVMArguments(configuration);
  String[] envp=getEnvironment(configuration);
  ExecutionArguments execArgs=new ExecutionArguments(vmArgs,pgmArgs);
  Map vmAttributesMap=getVMSpecificAttributesMap(configuration);
  String[] classpath=getClasspath(configuration);
  VMRunnerConfiguration runConfig=new VMRunnerConfiguration(mainTypeName,classpath);
  runConfig.setProgramArguments(execArgs.getProgramArgumentsArray());
  runConfig.setVMArguments(execArgs.getVMArgumentsArray());
  runConfig.setWorkingDirectory(workingDirName);
  runConfig.setEnvironment(envp);
  runConfig.setVMSpecificAttributesMap(vmAttributesMap);
  String[] bootpath=getBootpath(configuration);
  if (bootpath != null && bootpath.length > 0)   runConfig.setBootClassPath(bootpath);
  setDefaultSourceLocator(launch,configuration);
  if (ILaunchManager.PROFILE_MODE.equals(mode)) {
    try {
      ServerProfilerDelegate.configureProfiling(launch,vm,runConfig,monitor);
    }
 catch (    CoreException ce) {
      oribd.stopImpl();
      throw ce;
    }
  }
  oribd.setupLaunch(launch,mode,monitor);
  try {
    runner.run(runConfig,launch,monitor);
    oribd.addProcessListener(launch.getProcesses()[0]);
  }
 catch (  Exception e) {
    oribd.stopImpl();
  }
}