Program: 70968
Project: 70968
Buggy source:
private void doStartup(PlatformConfig config) throws BirtException {
  if (frameworkClassLoader != null) {
    logger.log(Level.WARNING,"String_Node_Str");
    return;
  }
  platformConfig=config;
  IPlatformContext context=config.getPlatformContext();
  if (context == null) {
    throw new FrameworkException("String_Node_Str",new Object[]{"String_Node_Str"});
  }
  String root=context.getPlatform();
  platformDirectory=new File(root);
  if (!platformDirectory.exists() || !platformDirectory.isDirectory()) {
    throw new FrameworkException("String_Node_Str",new Object[]{root});
  }
  String path=new File(platformDirectory,"String_Node_Str").toString();
  path=searchFor("String_Node_Str",path);
  if (path == null) {
    throw new FrameworkException("String_Node_Str",new Object[]{"String_Node_Str"});
  }
  try {
    osgiFramework=new File(path).toURL();
  }
 catch (  MalformedURLException ex) {
  }
  ClassLoader original=Thread.currentThread().getContextClassLoader();
  try {
    ClassLoader loader=this.getClass().getClassLoader();
    frameworkClassLoader=new ChildFirstURLClassLoader(new URL[]{osgiFramework},loader);
    try {
      loader.loadClass("String_Node_Str");
      loader.loadClass("String_Node_Str");
      loader.loadClass("String_Node_Str");
    }
 catch (    Exception ex) {
    }
    Class clazz=frameworkClassLoader.loadClass(ECLIPSE_STARTER);
    setupOSGiProperties();
    setupSecurityPolicy();
    Method initPropertiesMethod=clazz.getMethod("String_Node_Str",new Class[]{Map.class});
    if (initPropertiesMethod != null) {
      System.setProperty("String_Node_Str","String_Node_Str");
      properties.put("String_Node_Str","String_Node_Str");
      initPropertiesMethod.invoke(null,new Object[]{properties});
    }
 else {
      Iterator iter=properties.entrySet().iterator();
      while (iter.hasNext()) {
        Map.Entry entry=(Map.Entry)iter.next();
        String key=(String)entry.getKey();
        String value=(String)entry.getValue();
        System.setProperty(key,value);
      }
      System.setProperty("String_Node_Str","String_Node_Str");
    }
    Method runMethod=clazz.getMethod("String_Node_Str",new Class[]{String[].class,Runnable.class});
    bundleContext=runMethod.invoke(null,new Object[]{new String[]{},null});
    frameworkContextClassLoader=Thread.currentThread().getContextClassLoader();
  }
 catch (  BirtException be) {
    throw be;
  }
catch (  Exception e) {
    throw new FrameworkException("String_Node_Str",new Object[]{e.getMessage()},e);
  }
 finally {
    Thread.currentThread().setContextClassLoader(original);
  }
}

Fixed version (ground truth):
private void doStartup(PlatformConfig config) throws BirtException {
  if (frameworkClassLoader != null) {
    logger.log(Level.WARNING,"String_Node_Str");
    return;
  }
  platformConfig=config;
  IPlatformContext context=config.getPlatformContext();
  if (context == null) {
    throw new FrameworkException("String_Node_Str",new Object[]{"String_Node_Str"});
  }
  String root=context.getPlatform();
  platformDirectory=new File(root);
  if (!platformDirectory.exists() || !platformDirectory.isDirectory()) {
    throw new FrameworkException("String_Node_Str",new Object[]{root});
  }
  String path=new File(platformDirectory,"String_Node_Str").toString();
  path=searchFor("String_Node_Str",path);
  if (path == null) {
    throw new FrameworkException("String_Node_Str",new Object[]{"String_Node_Str"});
  }
  try {
    osgiFramework=new File(path).toURI().toURL();
  }
 catch (  MalformedURLException ex) {
  }
  ClassLoader original=Thread.currentThread().getContextClassLoader();
  try {
    ClassLoader loader=this.getClass().getClassLoader();
    frameworkClassLoader=new ChildFirstURLClassLoader(new URL[]{osgiFramework},loader);
    try {
      loader.loadClass("String_Node_Str");
      loader.loadClass("String_Node_Str");
      loader.loadClass("String_Node_Str");
    }
 catch (    Exception ex) {
    }
    Class clazz=frameworkClassLoader.loadClass(ECLIPSE_STARTER);
    setupOSGiProperties();
    setupSecurityPolicy();
    Method initPropertiesMethod=clazz.getMethod("String_Node_Str",new Class[]{Map.class});
    if (initPropertiesMethod != null) {
      System.setProperty("String_Node_Str","String_Node_Str");
      properties.put("String_Node_Str","String_Node_Str");
      initPropertiesMethod.invoke(null,new Object[]{properties});
    }
 else {
      Iterator iter=properties.entrySet().iterator();
      while (iter.hasNext()) {
        Map.Entry entry=(Map.Entry)iter.next();
        String key=(String)entry.getKey();
        String value=(String)entry.getValue();
        System.setProperty(key,value);
      }
      System.setProperty("String_Node_Str","String_Node_Str");
    }
    Method runMethod=clazz.getMethod("String_Node_Str",new Class[]{String[].class,Runnable.class});
    bundleContext=runMethod.invoke(null,new Object[]{new String[]{},null});
    frameworkContextClassLoader=Thread.currentThread().getContextClassLoader();
  }
 catch (  BirtException be) {
    throw be;
  }
catch (  Exception e) {
    throw new FrameworkException("String_Node_Str",new Object[]{e.getMessage()},e);
  }
 finally {
    Thread.currentThread().setContextClassLoader(original);
  }
}