Program: 88587
Project: 88587
Buggy source:
/** 
 * Synchronized Stmt Creation
 */
private void createSynchronized(polyglot.ast.Synchronized synchStmt){
  System.out.println("String_Node_Str" + synchStmt.position());
  soot.Value sootExpr=base().createExpr(synchStmt.expr());
  soot.jimple.EnterMonitorStmt enterMon=soot.jimple.Jimple.v().newEnterMonitorStmt(sootExpr);
  body.getUnits().add(enterMon);
  if (monitorStack == null) {
    monitorStack=new Stack();
  }
  monitorStack.push(sootExpr);
  Util.addLnPosTags(enterMon.getOpBox(),synchStmt.expr().position());
  Util.addLnPosTags(enterMon,synchStmt.expr().position());
  soot.jimple.Stmt startNoop=soot.jimple.Jimple.v().newNopStmt();
  body.getUnits().add(startNoop);
  createBlock(synchStmt.body());
  soot.jimple.ExitMonitorStmt exitMon=soot.jimple.Jimple.v().newExitMonitorStmt(sootExpr);
  body.getUnits().add(exitMon);
  monitorStack.pop();
  Util.addLnPosTags(exitMon.getOpBox(),synchStmt.expr().position());
  Util.addLnPosTags(exitMon,synchStmt.expr().position());
  soot.jimple.Stmt endSynchNoop=soot.jimple.Jimple.v().newNopStmt();
  soot.jimple.Stmt gotoEnd=soot.jimple.Jimple.v().newGotoStmt(endSynchNoop);
  soot.jimple.Stmt endNoop=soot.jimple.Jimple.v().newNopStmt();
  body.getUnits().add(endNoop);
  body.getUnits().add(gotoEnd);
  soot.jimple.Stmt catchAllBeforeNoop=soot.jimple.Jimple.v().newNopStmt();
  body.getUnits().add(catchAllBeforeNoop);
  soot.Local formalLocal=lg.generateLocal(soot.RefType.v("String_Node_Str"));
  soot.jimple.CaughtExceptionRef exceptRef=soot.jimple.Jimple.v().newCaughtExceptionRef();
  soot.jimple.Stmt stmt=soot.jimple.Jimple.v().newIdentityStmt(formalLocal,exceptRef);
  body.getUnits().add(stmt);
  soot.jimple.Stmt catchBeforeNoop=soot.jimple.Jimple.v().newNopStmt();
  body.getUnits().add(catchBeforeNoop);
  soot.Local local=lg.generateLocal(soot.RefType.v("String_Node_Str"));
  soot.jimple.Stmt assign=soot.jimple.Jimple.v().newAssignStmt(local,formalLocal);
  body.getUnits().add(assign);
  soot.jimple.ExitMonitorStmt catchExitMon=soot.jimple.Jimple.v().newExitMonitorStmt(sootExpr);
  body.getUnits().add(catchExitMon);
  Util.addLnPosTags(catchExitMon.getOpBox(),synchStmt.expr().position());
  soot.jimple.Stmt catchAfterNoop=soot.jimple.Jimple.v().newNopStmt();
  body.getUnits().add(catchAfterNoop);
  soot.jimple.Stmt throwStmt=soot.jimple.Jimple.v().newThrowStmt(local);
  body.getUnits().add(throwStmt);
  body.getUnits().add(endSynchNoop);
  addToExceptionList(startNoop,endNoop,catchAllBeforeNoop,soot.Scene.v().getSootClass("String_Node_Str"));
  addToExceptionList(catchBeforeNoop,catchAfterNoop,catchAllBeforeNoop,soot.Scene.v().getSootClass("String_Node_Str"));
}

Fixed version (ground truth):
/** 
 * Synchronized Stmt Creation
 */
private void createSynchronized(polyglot.ast.Synchronized synchStmt){
  soot.Value sootExpr=base().createExpr(synchStmt.expr());
  soot.jimple.EnterMonitorStmt enterMon=soot.jimple.Jimple.v().newEnterMonitorStmt(sootExpr);
  body.getUnits().add(enterMon);
  if (monitorStack == null) {
    monitorStack=new Stack();
  }
  monitorStack.push(sootExpr);
  Util.addLnPosTags(enterMon.getOpBox(),synchStmt.expr().position());
  Util.addLnPosTags(enterMon,synchStmt.expr().position());
  soot.jimple.Stmt startNoop=soot.jimple.Jimple.v().newNopStmt();
  body.getUnits().add(startNoop);
  createBlock(synchStmt.body());
  soot.jimple.ExitMonitorStmt exitMon=soot.jimple.Jimple.v().newExitMonitorStmt(sootExpr);
  body.getUnits().add(exitMon);
  monitorStack.pop();
  Util.addLnPosTags(exitMon.getOpBox(),synchStmt.expr().position());
  Util.addLnPosTags(exitMon,synchStmt.expr().position());
  soot.jimple.Stmt endSynchNoop=soot.jimple.Jimple.v().newNopStmt();
  soot.jimple.Stmt gotoEnd=soot.jimple.Jimple.v().newGotoStmt(endSynchNoop);
  soot.jimple.Stmt endNoop=soot.jimple.Jimple.v().newNopStmt();
  body.getUnits().add(endNoop);
  body.getUnits().add(gotoEnd);
  soot.jimple.Stmt catchAllBeforeNoop=soot.jimple.Jimple.v().newNopStmt();
  body.getUnits().add(catchAllBeforeNoop);
  soot.Local formalLocal=lg.generateLocal(soot.RefType.v("String_Node_Str"));
  soot.jimple.CaughtExceptionRef exceptRef=soot.jimple.Jimple.v().newCaughtExceptionRef();
  soot.jimple.Stmt stmt=soot.jimple.Jimple.v().newIdentityStmt(formalLocal,exceptRef);
  body.getUnits().add(stmt);
  soot.jimple.Stmt catchBeforeNoop=soot.jimple.Jimple.v().newNopStmt();
  body.getUnits().add(catchBeforeNoop);
  soot.Local local=lg.generateLocal(soot.RefType.v("String_Node_Str"));
  soot.jimple.Stmt assign=soot.jimple.Jimple.v().newAssignStmt(local,formalLocal);
  body.getUnits().add(assign);
  soot.jimple.ExitMonitorStmt catchExitMon=soot.jimple.Jimple.v().newExitMonitorStmt(sootExpr);
  body.getUnits().add(catchExitMon);
  Util.addLnPosTags(catchExitMon.getOpBox(),synchStmt.expr().position());
  soot.jimple.Stmt catchAfterNoop=soot.jimple.Jimple.v().newNopStmt();
  body.getUnits().add(catchAfterNoop);
  soot.jimple.Stmt throwStmt=soot.jimple.Jimple.v().newThrowStmt(local);
  body.getUnits().add(throwStmt);
  body.getUnits().add(endSynchNoop);
  addToExceptionList(startNoop,endNoop,catchAllBeforeNoop,soot.Scene.v().getSootClass("String_Node_Str"));
  addToExceptionList(catchBeforeNoop,catchAfterNoop,catchAllBeforeNoop,soot.Scene.v().getSootClass("String_Node_Str"));
}