Program: 187002
Project: 187002
Buggy source:
private void updateReport(WcetKey key,LocalWCETSolution sol){
  Map<CFGNode,WcetCost> nodeCosts=sol.getNodeCostMap();
  Hashtable<CFGNode,String> nodeFlowCostDescrs=new Hashtable<CFGNode,String>();
  MethodInfo m=key.m;
  for (  Entry<CFGNode,WcetCost> entry : nodeCosts.entrySet()) {
    CFGNode n=entry.getKey();
    WcetCost cost=entry.getValue();
    if (sol.getNodeFlow(n) > 0) {
      nodeFlowCostDescrs.put(n,cost.toString());
      BasicBlock basicBlock=n.getBasicBlock();
      if (basicBlock != null) {
        int pos=basicBlock.getFirstInstruction().getPosition();
        ClassInfo cli=basicBlock.getClassInfo();
        LineNumberTable lineNumberTable=basicBlock.getMethodInfo().getMethod().getLineNumberTable();
        int sourceLine=lineNumberTable.getSourceLine(pos);
        ClassReport cr=project.getReport().getClassReport(cli);
        Long oldCost=(Long)cr.getLineProperty(sourceLine,"String_Node_Str");
        if (oldCost == null)         oldCost=0L;
        cr.addLineProperty(sourceLine,"String_Node_Str",oldCost + sol.getNodeFlow(n) * nodeCosts.get(n).getCost());
        for (        InstructionHandle ih : basicBlock.getInstructions()) {
          sourceLine=lineNumberTable.getSourceLine(ih.getPosition());
          cr.addLineProperty(sourceLine,"String_Node_Str","String_Node_Str");
        }
      }
    }
 else {
      nodeFlowCostDescrs.put(n,"String_Node_Str" + nodeCosts.get(n).getCost());
    }
  }
  logger.info("String_Node_Str" + key + "String_Node_Str"+ sol.getCost());
  Map<String,Object> stats=new Hashtable<String,Object>();
  stats.put("String_Node_Str",sol.getCost());
  stats.put("String_Node_Str",key.ctx);
  stats.put("String_Node_Str",project.getProcessorModel().getMethodCache().allFit(m));
  project.getReport().addDetailedReport(m,"String_Node_Str" + key.ctx.toString(),stats,nodeFlowCostDescrs,sol.getEdgeFlow());
}

Fixed version (ground truth):
private void updateReport(WcetKey key,LocalWCETSolution sol){
  Map<CFGNode,WcetCost> nodeCosts=sol.getNodeCostMap();
  Hashtable<CFGNode,String> nodeFlowCostDescrs=new Hashtable<CFGNode,String>();
  MethodInfo m=key.m;
  for (  Entry<CFGNode,WcetCost> entry : nodeCosts.entrySet()) {
    CFGNode n=entry.getKey();
    WcetCost cost=entry.getValue();
    if (sol.getNodeFlow(n) > 0) {
      nodeFlowCostDescrs.put(n,cost.toString());
      BasicBlock basicBlock=n.getBasicBlock();
      if (basicBlock != null) {
        TreeSet<Integer> lineRange=basicBlock.getSourceLineRange();
        if (lineRange.isEmpty()) {
          Project.logger.error("String_Node_Str");
        }
        ClassInfo cli=basicBlock.getClassInfo();
        ClassReport cr=project.getReport().getClassReport(cli);
        Long oldCost=(Long)cr.getLineProperty(lineRange.first(),"String_Node_Str");
        if (oldCost == null)         oldCost=0L;
        cr.addLineProperty(lineRange.first(),"String_Node_Str",oldCost + sol.getNodeFlow(n) * nodeCosts.get(n).getCost());
        for (        int i : lineRange) {
          cr.addLineProperty(i,"String_Node_Str","String_Node_Str");
        }
      }
    }
 else {
      nodeFlowCostDescrs.put(n,"String_Node_Str" + nodeCosts.get(n).getCost());
    }
  }
  logger.info("String_Node_Str" + key + "String_Node_Str"+ sol.getCost());
  Map<String,Object> stats=new Hashtable<String,Object>();
  stats.put("String_Node_Str",sol.getCost());
  stats.put("String_Node_Str",key.ctx);
  stats.put("String_Node_Str",project.getProcessorModel().getMethodCache().allFit(m));
  project.getReport().addDetailedReport(m,"String_Node_Str" + key.ctx.toString(),stats,nodeFlowCostDescrs,sol.getEdgeFlow());
}