Program: 69785
Project: 69785
Buggy source:
/** 
 * @see org.olat.core.gui.control.generic.dtabs.DTabs#addDTab(org.olat.core.gui.control.generic.dtabs.DTab)
 */
public boolean addDTab(UserRequest ureq,DTab dt){
  if (isDisposed()) {
    return false;
  }
  DTab old=getDTab(dt.getOLATResourceable());
  if (old != null) {
    return true;
  }
synchronized (dtabs) {
    dtabs.add(dt);
    dtabsLinkNames.add(Integer.toString(dtabCreateCounter));
    Link link=LinkFactory.createCustomLink("String_Node_Str" + dtabCreateCounter,"String_Node_Str" + dtabCreateCounter,"String_Node_Str",Link.NONTRANSLATED,navVc,this);
    link.setCustomDisplayText(((DTabImpl)dt).getNavElement().getTitle());
    link.setTitle(dt.getTitle());
    link.setUserObject(dt);
    link.setAccessKey("String_Node_Str");
    Link calink=LinkFactory.createCustomLink("String_Node_Str" + dtabCreateCounter,"String_Node_Str" + dtabCreateCounter,"String_Node_Str",Link.NONTRANSLATED,navVc,this);
    calink.setCustomEnabledLinkCSS("String_Node_Str");
    calink.setTitle(translate("String_Node_Str"));
    calink.setTooltip(translate("String_Node_Str"));
    calink.setUserObject(dt);
    Link cplink=LinkFactory.createCustomLink("String_Node_Str" + dtabCreateCounter,"String_Node_Str" + dtabCreateCounter,"String_Node_Str",Link.NONTRANSLATED,navVc,this);
    cplink.setCustomEnabledLinkCSS("String_Node_Str");
    cplink.setTitle(translate("String_Node_Str"));
    cplink.setTooltip(translate("String_Node_Str"));
    cplink.setUserObject(dt);
    Controller dtabCtr=dt.getController();
    dtabCtr.addControllerListener(this);
    updateBusinessPath(ureq,dt);
    dtabsControllers.add(dtabCtr);
    dtabCreateCounter++;
  }
  return true;
}

Fixed version (ground truth):
/** 
 * @see org.olat.core.gui.control.generic.dtabs.DTabs#addDTab(org.olat.core.gui.control.generic.dtabs.DTab)
 */
public boolean addDTab(UserRequest ureq,DTab dt){
  if (isDisposed()) {
    return false;
  }
  DTab old=getDTab(dt.getOLATResourceable());
  if (old != null) {
    return true;
  }
synchronized (dtabs) {
    dtabs.add(dt);
    dtabsLinkNames.add(Integer.toString(dtabCreateCounter));
    Link link=LinkFactory.createCustomLink("String_Node_Str" + dtabCreateCounter,"String_Node_Str" + dtabCreateCounter,"String_Node_Str",Link.NONTRANSLATED,navVc,this);
    link.setCustomDisplayText(((DTabImpl)dt).getNavElement().getTitle());
    link.setTitle(dt.getTitle());
    link.setUserObject(dt);
    link.setAccessKey("String_Node_Str");
    Link calink=LinkFactory.createCustomLink("String_Node_Str" + dtabCreateCounter,"String_Node_Str" + dtabCreateCounter,"String_Node_Str",Link.NONTRANSLATED,navVc,this);
    calink.setCustomEnabledLinkCSS("String_Node_Str");
    calink.setTitle(translate("String_Node_Str"));
    calink.setUserObject(dt);
    Link cplink=LinkFactory.createCustomLink("String_Node_Str" + dtabCreateCounter,"String_Node_Str" + dtabCreateCounter,"String_Node_Str",Link.NONTRANSLATED,navVc,this);
    cplink.setCustomEnabledLinkCSS("String_Node_Str");
    cplink.setTitle(translate("String_Node_Str"));
    cplink.setUserObject(dt);
    Controller dtabCtr=dt.getController();
    dtabCtr.addControllerListener(this);
    updateBusinessPath(ureq,dt);
    dtabsControllers.add(dtabCtr);
    dtabCreateCounter++;
  }
  return true;
}