Program: 93038
Project: 93038
Buggy source:
@Override public IStatus runInUIThread(IProgressMonitor monitor){
  treeSize=200;
  CallgraphView.forceDisplay();
  Composite treeComp=CallgraphView.makeTreeComp(treeSize);
  Composite graphComp=CallgraphView.makeGraphComp();
  Canvas thumbCanvas=new Canvas(graphComp,SWT.BORDER);
  g=new StapGraph(graphComp,SWT.BORDER,treeComp,thumbCanvas);
  g.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,true));
  GridData thumbGD=new GridData(SWT.BEGINNING,SWT.BEGINNING,false,false);
  thumbGD.widthHint=150;
  thumbCanvas.setLayoutData(thumbGD);
  LightweightSystem lws=new LightweightSystem(thumbCanvas);
  ScrollableThumbnail thumb=new ScrollableThumbnail(g.getViewport());
  thumb.setSource(g.getContents());
  lws.setContents(thumb);
  g.loadData(SWT.NONE,0,StapGraph.CONSTANT_TOP_NODE_NAME,1,1,-1,false,"String_Node_Str");
  boolean marked=false;
  String msg="String_Node_Str";
  for (  int id_parent : parser.serialMap.keySet()) {
    if (g.getData(id_parent) == null) {
      if (parser.markedMap.get(id_parent) != null) {
        marked=true;
        msg=parser.markedMap.get(id_parent);
      }
      g.loadData(SWT.NONE,id_parent,parser.serialMap.get(id_parent),parser.timeMap.get(id_parent),1,0,marked,msg);
    }
    for (    int id_child : parser.outNeighbours.get(id_parent)) {
      if (monitor.isCanceled()) {
        return Status.CANCEL_STATUS;
      }
      marked=false;
      msg="String_Node_Str";
      if (parser.markedMap.get(id_child) != null) {
        marked=true;
        msg=parser.markedMap.get(id_child);
      }
      if (id_child != -1) {
        if (parser.timeMap.get(id_child) == null) {
          g.loadData(SWT.NONE,id_child,parser.serialMap.get(id_child),parser.timeMap.get(0),1,id_parent,marked,msg);
        }
 else {
          g.loadData(SWT.NONE,id_child,parser.serialMap.get(id_child),parser.timeMap.get(id_child),1,id_parent,marked,msg);
        }
      }
    }
  }
  g.aggregateCount=parser.countMap;
  g.aggregateTime=parser.cumulativeTimeMap;
  g.setTotalTime(parser.totalTime);
  g.recursivelyCollapseAllChildrenOfNode(g.getTopNode());
  if (monitor.isCanceled()) {
    return Status.CANCEL_STATUS;
  }
  g.initializeTree();
  g.setLastFunctionCalled(parser.lastFunctionCalled);
  if (monitor.isCanceled()) {
    return Status.CANCEL_STATUS;
  }
  g.setFocus();
  g.setCallOrderList(parser.callOrderList);
  g.setProject(parser.project);
  CallgraphView.setValues(graphComp,treeComp,g,parser);
  CallgraphView.createPartControl();
  g.draw(StapGraph.CONSTANT_DRAWMODE_RADIAL,StapGraph.CONSTANT_ANIMATION_SLOW,g.getFirstUsefulNode());
  return Status.OK_STATUS;
}

Fixed version (ground truth):
@Override public IStatus runInUIThread(IProgressMonitor monitor){
  treeSize=200;
  CallgraphView.forceDisplay();
  Composite treeComp=CallgraphView.makeTreeComp(treeSize);
  Composite graphComp=CallgraphView.makeGraphComp();
  Canvas thumbCanvas=new Canvas(graphComp,SWT.BORDER);
  g=new StapGraph(graphComp,SWT.BORDER,treeComp,thumbCanvas);
  g.setLayoutData(new GridData(this.getDisplay().getPrimaryMonitor().getBounds().width - 200,this.getDisplay().getPrimaryMonitor().getBounds().height - 200));
  GridData thumbGD=new GridData(SWT.BEGINNING,SWT.BEGINNING,false,false);
  thumbGD.widthHint=150;
  thumbCanvas.setLayoutData(thumbGD);
  LightweightSystem lws=new LightweightSystem(thumbCanvas);
  ScrollableThumbnail thumb=new ScrollableThumbnail(g.getViewport());
  thumb.setSource(g.getContents());
  lws.setContents(thumb);
  g.loadData(SWT.NONE,0,StapGraph.CONSTANT_TOP_NODE_NAME,1,1,-1,false,"String_Node_Str");
  boolean marked=false;
  String msg="String_Node_Str";
  for (  int id_parent : parser.serialMap.keySet()) {
    if (g.getData(id_parent) == null) {
      if (parser.markedMap.get(id_parent) != null) {
        marked=true;
        msg=parser.markedMap.get(id_parent);
      }
      g.loadData(SWT.NONE,id_parent,parser.serialMap.get(id_parent),parser.timeMap.get(id_parent),1,0,marked,msg);
    }
    for (    int id_child : parser.outNeighbours.get(id_parent)) {
      if (monitor.isCanceled()) {
        return Status.CANCEL_STATUS;
      }
      marked=false;
      msg="String_Node_Str";
      if (parser.markedMap.get(id_child) != null) {
        marked=true;
        msg=parser.markedMap.get(id_child);
      }
      if (id_child != -1) {
        if (parser.timeMap.get(id_child) == null) {
          g.loadData(SWT.NONE,id_child,parser.serialMap.get(id_child),parser.timeMap.get(0),1,id_parent,marked,msg);
        }
 else {
          g.loadData(SWT.NONE,id_child,parser.serialMap.get(id_child),parser.timeMap.get(id_child),1,id_parent,marked,msg);
        }
      }
    }
  }
  g.aggregateCount=parser.countMap;
  g.aggregateTime=parser.cumulativeTimeMap;
  g.setTotalTime(parser.totalTime);
  g.recursivelyCollapseAllChildrenOfNode(g.getTopNode());
  if (monitor.isCanceled()) {
    return Status.CANCEL_STATUS;
  }
  g.initializeTree();
  g.setLastFunctionCalled(parser.lastFunctionCalled);
  if (monitor.isCanceled()) {
    return Status.CANCEL_STATUS;
  }
  g.setFocus();
  g.setCallOrderList(parser.callOrderList);
  g.setProject(parser.project);
  CallgraphView.setValues(graphComp,treeComp,g,parser);
  CallgraphView.createPartControl();
  g.draw(StapGraph.CONSTANT_DRAWMODE_RADIAL,StapGraph.CONSTANT_ANIMATION_SLOW,g.getFirstUsefulNode());
  return Status.OK_STATUS;
}