Program: 5148
Project: 5148
Buggy source:
/** 
 * Launches the given main class. The main class will be loaded through the   {@link MapReduceClassLoader}.
 * @param mainClassName the main class to launch
 * @param args          arguments for the main class
 */
@SuppressWarnings("String_Node_Str") public static void launch(String mainClassName,String[] args){
  ClassLoader systemClassLoader=ClassLoader.getSystemClassLoader();
  List<URL> urls=ClassLoaders.getClassLoaderURLs(systemClassLoader,new ArrayList<URL>());
  URL resource=systemClassLoader.getResource(mainClassName.replace('.','/') + "String_Node_Str");
  if (resource == null) {
    throw new IllegalStateException("String_Node_Str" + mainClassName);
  }
  if (!urls.remove(ClassLoaders.getClassPathURL(mainClassName,resource))) {
    throw new IllegalStateException("String_Node_Str" + resource);
  }
  URL[] classLoaderUrls=urls.toArray(new URL[urls.size()]);
  ClassLoader mainClassLoader=new MainClassLoader(classLoaderUrls,systemClassLoader.getParent());
  ClassLoaders.setContextClassLoader(mainClassLoader);
  try {
    final ClassLoader classLoader=(ClassLoader)mainClassLoader.loadClass(MapReduceClassLoader.class.getName()).newInstance();
    Runtime.getRuntime().addShutdownHook(new Thread(){
      @Override public void run(){
        if (classLoader instanceof AutoCloseable) {
          try {
            ((AutoCloseable)classLoader).close();
          }
 catch (          Exception e) {
            System.err.println("String_Node_Str" + classLoader);
            e.printStackTrace();
          }
        }
      }
    }
);
    Thread.currentThread().setContextClassLoader(classLoader);
    classLoader.getClass().getDeclaredMethod("String_Node_Str").invoke(classLoader);
    classLoader.loadClass("String_Node_Str").getDeclaredMethod("String_Node_Str",String.class).invoke(null,mainClassName);
    Class<?> mainClass=classLoader.loadClass(mainClassName);
    Method mainMethod=mainClass.getMethod("String_Node_Str",String[].class);
    mainMethod.setAccessible(true);
    LOG.info("String_Node_Str",mainClassName,Arrays.toString(args));
    mainMethod.invoke(null,new Object[]{args});
    LOG.info("String_Node_Str",mainClassName);
  }
 catch (  Exception e) {
    throw new RuntimeException("String_Node_Str" + mainClassName + "String_Node_Str",e);
  }
}

Fixed version (ground truth):
/** 
 * Launches the given main class. The main class will be loaded through the   {@link MapReduceClassLoader}.
 * @param mainClassName the main class to launch
 * @param args          arguments for the main class
 */
@SuppressWarnings("String_Node_Str") public static void launch(String mainClassName,String[] args){
  Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler());
  ClassLoader systemClassLoader=ClassLoader.getSystemClassLoader();
  List<URL> urls=ClassLoaders.getClassLoaderURLs(systemClassLoader,new ArrayList<URL>());
  URL resource=systemClassLoader.getResource(mainClassName.replace('.','/') + "String_Node_Str");
  if (resource == null) {
    throw new IllegalStateException("String_Node_Str" + mainClassName);
  }
  if (!urls.remove(ClassLoaders.getClassPathURL(mainClassName,resource))) {
    throw new IllegalStateException("String_Node_Str" + resource);
  }
  URL[] classLoaderUrls=urls.toArray(new URL[urls.size()]);
  ClassLoader mainClassLoader=new MainClassLoader(classLoaderUrls,systemClassLoader.getParent());
  ClassLoaders.setContextClassLoader(mainClassLoader);
  try {
    final ClassLoader classLoader=(ClassLoader)mainClassLoader.loadClass(MapReduceClassLoader.class.getName()).newInstance();
    Runtime.getRuntime().addShutdownHook(new Thread(){
      @Override public void run(){
        if (classLoader instanceof AutoCloseable) {
          try {
            ((AutoCloseable)classLoader).close();
          }
 catch (          Exception e) {
            System.err.println("String_Node_Str" + classLoader);
            e.printStackTrace();
          }
        }
      }
    }
);
    Thread.currentThread().setContextClassLoader(classLoader);
    classLoader.getClass().getDeclaredMethod("String_Node_Str").invoke(classLoader);
    classLoader.loadClass("String_Node_Str").getDeclaredMethod("String_Node_Str",String.class).invoke(null,mainClassName);
    Class<?> mainClass=classLoader.loadClass(mainClassName);
    Method mainMethod=mainClass.getMethod("String_Node_Str",String[].class);
    mainMethod.setAccessible(true);
    LOG.info("String_Node_Str",mainClassName,Arrays.toString(args));
    mainMethod.invoke(null,new Object[]{args});
    LOG.info("String_Node_Str",mainClassName);
  }
 catch (  Exception e) {
    throw new RuntimeException("String_Node_Str" + mainClassName + "String_Node_Str",e);
  }
}