Program: 92094
Project: 92094
Buggy source:
@Override public void launch(ILaunchConfiguration config,String mode,ILaunch launch,IProgressMonitor monitor) throws CoreException {
  this.config=config;
  Oprofile.OprofileProject.setProject(getProject());
  LaunchOptions options=new LaunchOptions();
  options.loadConfiguration(config);
  IPath exePath=getExePath(config);
  options.setBinaryImage(exePath.toOSString());
  OprofileDaemonEvent[] daemonEvents=null;
  if (!config.getAttribute(OprofileLaunchPlugin.ATTR_USE_DEFAULT_EVENT,false)) {
    OprofileCounter[] counters=oprofileCounters(config);
    ArrayList<OprofileDaemonEvent> events=new ArrayList<OprofileDaemonEvent>();
    for (int i=0; i < counters.length; ++i) {
      if (counters[i].getEnabled())       events.add(counters[i].getDaemonEvent());
    }
    daemonEvents=new OprofileDaemonEvent[events.size()];
    events.toArray(daemonEvents);
  }
  if (!preExec(options,daemonEvents,launch))   return;
  IRemoteCommandLauncher launcher=RemoteProxyManager.getInstance().getLauncher(oprofileProject());
  IPath workingDirPath=new Path(oprofileWorkingDirURI().getPath());
  String arguments[]=getProgramArgumentsArray(config);
  Process process=null;
  for (int i=0; i < options.getExecutionsNumber(); i++) {
    process=launcher.execute(exePath,arguments,getEnvironment(config),workingDirPath,monitor);
    DebugPlugin.newProcess(launch,process,renderProcessLabel(exePath.toOSString()));
    try {
      process.waitFor();
    }
 catch (    InterruptedException e) {
      process.destroy();
      Status status=new Status(IStatus.ERROR,OprofileLaunchPlugin.PLUGIN_ID,OprofileLaunchMessages.getString("String_Node_Str"));
      throw new CoreException(status);
    }
  }
  postExec(options,daemonEvents,process);
}

Fixed version (ground truth):
@Override public void launch(ILaunchConfiguration config,String mode,ILaunch launch,IProgressMonitor monitor) throws CoreException {
  this.config=config;
  Oprofile.OprofileProject.setProject(getProject());
  LaunchOptions options=new LaunchOptions();
  options.loadConfiguration(config);
  IPath exePath=getExePath(config);
  options.setBinaryImage(exePath.toOSString());
  OprofileDaemonEvent[] daemonEvents=null;
  if (!config.getAttribute(OprofileLaunchPlugin.ATTR_USE_DEFAULT_EVENT,false)) {
    OprofileCounter[] counters=oprofileCounters(config);
    ArrayList<OprofileDaemonEvent> events=new ArrayList<OprofileDaemonEvent>();
    for (int i=0; i < counters.length; ++i) {
      if (counters[i].getEnabled())       events.add(counters[i].getDaemonEvent());
    }
    daemonEvents=new OprofileDaemonEvent[events.size()];
    events.toArray(daemonEvents);
  }
  if (!preExec(options,daemonEvents,launch))   return;
  IRemoteCommandLauncher launcher=RemoteProxyManager.getInstance().getLauncher(oprofileProject());
  IPath workingDirPath=new Path(oprofileWorkingDirURI(config).getPath());
  String arguments[]=getProgramArgumentsArray(config);
  Process process=null;
  for (int i=0; i < options.getExecutionsNumber(); i++) {
    process=launcher.execute(exePath,arguments,getEnvironment(config),workingDirPath,monitor);
    DebugPlugin.newProcess(launch,process,renderProcessLabel(exePath.toOSString()));
    try {
      process.waitFor();
    }
 catch (    InterruptedException e) {
      process.destroy();
      Status status=new Status(IStatus.ERROR,OprofileLaunchPlugin.PLUGIN_ID,OprofileLaunchMessages.getString("String_Node_Str"));
      throw new CoreException(status);
    }
  }
  postExec(options,daemonEvents,process);
}