Program: 92517
Project: 92517
Buggy source:
public void run(){
  ISelection selection=viewer.getSelection();
  Object obj=((IStructuredSelection)selection).getFirstElement();
  if (obj instanceof PMLineRef) {
    PMFile file=(PMFile)((PMLineRef)obj).getParent();
    try {
      ProfileUIUtils.openEditorAndSelect(file.getPath(),Integer.parseInt(file.getName()));
    }
 catch (    PartInitException e) {
      e.printStackTrace();
    }
catch (    BadLocationException e) {
      e.printStackTrace();
    }
  }
 else   if (obj instanceof PMFile) {
    PMFile file=(PMFile)obj;
    try {
      ProfileUIUtils.openEditorAndSelect(file.getName(),1);
    }
 catch (    PartInitException e) {
      e.printStackTrace();
    }
catch (    BadLocationException e) {
      e.printStackTrace();
    }
  }
 else   if (obj instanceof PMSymbol) {
    PMSymbol sym=(PMSymbol)obj;
    PMFile file=(PMFile)sym.getParent();
    PMDso dso=(PMDso)file.getParent();
    if (file.getName().equals(PerfPlugin.STRINGS_UnfiledSymbols))     return;
    String binaryPath=dso.getPath();
    ICProject project;
    try {
      project=ProfileUIUtils.findCProjectWithAbsolutePath(binaryPath);
      HashMap<String,int[]> map=ProfileUIUtils.findFunctionsInProject(project,sym.getFunctionName(),-1,file.getPath(),true);
      boolean bFound=false;
      for (      String loc : map.keySet()) {
        ProfileUIUtils.openEditorAndSelect(loc,map.get(loc)[0],map.get(loc)[1]);
        bFound=true;
      }
      if (!bFound) {
        ProfileUIUtils.openEditorAndSelect(file.getPath(),1);
      }
    }
 catch (    CoreException e) {
      e.printStackTrace();
    }
catch (    BadLocationException e) {
      e.printStackTrace();
    }
  }
}

Fixed version (ground truth):
public void run(){
  ISelection selection=viewer.getSelection();
  Object obj=((IStructuredSelection)selection).getFirstElement();
  if (obj instanceof PMLineRef) {
    PMLineRef line=(PMLineRef)obj;
    PMFile file=(PMFile)((PMSymbol)line.getParent()).getParent();
    try {
      ProfileUIUtils.openEditorAndSelect(file.getPath(),Integer.parseInt(line.getName()));
    }
 catch (    PartInitException e) {
      e.printStackTrace();
    }
catch (    BadLocationException e) {
      e.printStackTrace();
    }
  }
 else   if (obj instanceof PMFile) {
    PMFile file=(PMFile)obj;
    try {
      ProfileUIUtils.openEditorAndSelect(file.getName(),1);
    }
 catch (    PartInitException e) {
      e.printStackTrace();
    }
catch (    BadLocationException e) {
      e.printStackTrace();
    }
  }
 else   if (obj instanceof PMSymbol) {
    PMSymbol sym=(PMSymbol)obj;
    PMFile file=(PMFile)sym.getParent();
    PMDso dso=(PMDso)file.getParent();
    if (file.getName().equals(PerfPlugin.STRINGS_UnfiledSymbols))     return;
    String binaryPath=dso.getPath();
    ICProject project;
    try {
      project=ProfileUIUtils.findCProjectWithAbsolutePath(binaryPath);
      HashMap<String,int[]> map=ProfileUIUtils.findFunctionsInProject(project,sym.getFunctionName(),-1,file.getPath(),true);
      boolean bFound=false;
      for (      String loc : map.keySet()) {
        ProfileUIUtils.openEditorAndSelect(loc,map.get(loc)[0],map.get(loc)[1]);
        bFound=true;
      }
      if (!bFound) {
        ProfileUIUtils.openEditorAndSelect(file.getPath(),1);
      }
    }
 catch (    CoreException e) {
      e.printStackTrace();
    }
catch (    BadLocationException e) {
      e.printStackTrace();
    }
  }
}