Program: 40631
Project: 40631
Buggy source:
/** 
 * TODO: lift most of this logic to PropagationCallGraphBuilder Add a call to the class initializer from the root method.
 * @param klass
 */
private void processClassInitializer(IClass klass){
  if (Assertions.verifyAssertions) {
    Assertions._assert(klass != null);
  }
  if (getBuilder().clinitVisited.contains(klass)) {
    return;
  }
  getBuilder().clinitVisited.add(klass);
  if (klass.getClassInitializer() != null) {
    if (DEBUG) {
      System.err.println("String_Node_Str" + klass);
    }
    FakeWorldClinitMethod fakeWorldClinitMethod=(FakeWorldClinitMethod)callGraph.getFakeWorldClinitNode().getMethod();
    MethodReference m=klass.getClassInitializer().getReference();
    CallSiteReference site=CallSiteReference.make(1,m,IInvokeInstruction.Dispatch.STATIC);
    IMethod targetMethod=getOptions().getMethodTargetSelector().getCalleeTarget(callGraph.getFakeRootNode(),site,null);
    if (targetMethod != null) {
      CGNode target=getTargetForCall(callGraph.getFakeRootNode(),site,(InstanceKey)null);
      if (callGraph.getPredNodeCount(target) == 0) {
        SSAAbstractInvokeInstruction s=fakeWorldClinitMethod.addInvocation(new int[0],site);
        PointerKey uniqueCatch=getBuilder().getPointerKeyForExceptionalReturnValue(callGraph.getFakeRootNode());
        getBuilder().processResolvedCall(callGraph.getFakeWorldClinitNode(),s,target,null,uniqueCatch);
      }
    }
  }
  try {
    IClass sc=klass.getSuperclass();
    if (sc != null) {
      processClassInitializer(sc);
    }
  }
 catch (  ClassHierarchyException e) {
    Assertions.UNREACHABLE();
  }
}

Fixed version (ground truth):
/** 
 * TODO: lift most of this logic to PropagationCallGraphBuilder Add a call to the class initializer from the root method.
 * @param klass
 */
private void processClassInitializer(IClass klass){
  if (Assertions.verifyAssertions) {
    Assertions._assert(klass != null);
  }
  if (getBuilder().clinitVisited.contains(klass)) {
    return;
  }
  getBuilder().clinitVisited.add(klass);
  if (klass.getClassInitializer() != null) {
    if (DEBUG) {
      System.err.println("String_Node_Str" + klass);
    }
    FakeWorldClinitMethod fakeWorldClinitMethod=(FakeWorldClinitMethod)callGraph.getFakeWorldClinitNode().getMethod();
    MethodReference m=klass.getClassInitializer().getReference();
    CallSiteReference site=CallSiteReference.make(1,m,IInvokeInstruction.Dispatch.STATIC);
    IMethod targetMethod=getOptions().getMethodTargetSelector().getCalleeTarget(callGraph.getFakeRootNode(),site,null);
    if (targetMethod != null) {
      CGNode target=getTargetForCall(callGraph.getFakeRootNode(),site,(InstanceKey)null);
      if (target != null && callGraph.getPredNodeCount(target) == 0) {
        SSAAbstractInvokeInstruction s=fakeWorldClinitMethod.addInvocation(new int[0],site);
        PointerKey uniqueCatch=getBuilder().getPointerKeyForExceptionalReturnValue(callGraph.getFakeRootNode());
        getBuilder().processResolvedCall(callGraph.getFakeWorldClinitNode(),s,target,null,uniqueCatch);
      }
    }
  }
  try {
    IClass sc=klass.getSuperclass();
    if (sc != null) {
      processClassInitializer(sc);
    }
  }
 catch (  ClassHierarchyException e) {
    Assertions.UNREACHABLE();
  }
}