Program: 87054
Project: 87054
Buggy source:
@PostConstruct public void go(){
  String role=Parameters.INSTANCE.getProperty("String_Node_Str","String_Node_Str");
  if (role.equals("String_Node_Str")) {
    LOG.info("String_Node_Str");
    speaker.addListener("String_Node_Str",new MessageListener<SimpleMessage>(){
      @Override public void receive(      SimpleMessage message){
        if (messageCount >= throwAway && !warmedUp) {
          LOG.info("String_Node_Str");
          warmedUp=true;
          messageCount=0;
          memThread.start();
          time=System.currentTimeMillis();
        }
        ++messageCount;
        if (messageCount > maxMessages) {
          running=false;
          LOG.info("String_Node_Str");
        }
        try {
          if (running) {
            speaker.send("String_Node_Str",m);
          }
        }
 catch (        Exception ex) {
          LOG.error("String_Node_Str",ex);
        }
      }
    }
);
    injectThread.start();
  }
 else   if (role.equals("String_Node_Str")) {
    LOG.info("String_Node_Str");
    speaker.addListener("String_Node_Str",new MessageListener<SimpleMessage>(){
      @Override public void receive(      SimpleMessage message){
        if (messageCount >= throwAway && !warmedUp) {
          LOG.info("String_Node_Str");
          warmedUp=true;
          messageCount=0;
          memThread.start();
          time=System.currentTimeMillis();
        }
        ++messageCount;
        if (messageCount > maxMessages) {
          running=false;
          LOG.info("String_Node_Str");
        }
        try {
          if (running) {
            speaker.send("String_Node_Str",m);
          }
        }
 catch (        Exception ex) {
          LOG.error("String_Node_Str",ex);
        }
      }
    }
);
  }
 else {
    LOG.info("String_Node_Str");
    speaker.addListener("String_Node_Str",new MessageListener<SimpleMessage>(){
      @Override public void receive(      SimpleMessage message){
        if (messageCount >= throwAway && !warmedUp) {
          LOG.info("String_Node_Str");
          warmedUp=true;
          messageCount=0;
          time=System.currentTimeMillis();
        }
        ++messageCount;
        if (messageCount > maxMessages) {
          running=false;
          LOG.info("String_Node_Str");
        }
      }
    }
);
    localThread.start();
  }
}

Fixed version (ground truth):
@PostConstruct public void go(){
  String role=Parameters.INSTANCE.getProperty("String_Node_Str","String_Node_Str");
  if (role.equals("String_Node_Str")) {
    LOG.info("String_Node_Str");
    speaker.addListener("String_Node_Str",new MessageListener<SimpleMessage>(){
      @Override public void receive(      SimpleMessage message){
        if (messageCount >= throwAway && !warmedUp) {
          LOG.info("String_Node_Str");
          warmedUp=true;
          messageCount=0;
          memThread.start();
          time=System.currentTimeMillis();
        }
        ++messageCount;
        if (messageCount > maxMessages) {
          running=false;
          LOG.info("String_Node_Str");
        }
        try {
          if (running) {
            speaker.send("String_Node_Str",m);
          }
        }
 catch (        Exception ex) {
          LOG.error("String_Node_Str",ex);
        }
      }
    }
);
    injectThread.start();
  }
 else   if (role.equals("String_Node_Str")) {
    LOG.info("String_Node_Str");
    speaker.addListener("String_Node_Str",new MessageListener<SimpleMessage>(){
      @Override public void receive(      SimpleMessage message){
        if (messageCount >= throwAway && !warmedUp) {
          LOG.info("String_Node_Str");
          warmedUp=true;
          messageCount=0;
          memThread.start();
          time=System.currentTimeMillis();
        }
        ++messageCount;
        if (messageCount > maxMessages) {
          running=false;
          LOG.info("String_Node_Str");
        }
        try {
          if (running) {
            speaker.send("String_Node_Str",m);
          }
        }
 catch (        Exception ex) {
          LOG.error("String_Node_Str",ex);
        }
      }
    }
);
  }
 else {
    LOG.info("String_Node_Str");
    speaker.addListener("String_Node_Str",new MessageListener<SimpleMessage>(){
      @Override public void receive(      SimpleMessage message){
        if (messageCount >= throwAway && !warmedUp) {
          LOG.info("String_Node_Str");
          warmedUp=true;
          messageCount=0;
          memThread.start();
          time=System.currentTimeMillis();
        }
        ++messageCount;
        if (messageCount > maxMessages) {
          running=false;
          LOG.info("String_Node_Str");
        }
      }
    }
);
    System.gc();
    try {
      Thread.sleep(1000l);
    }
 catch (    InterruptedException ex) {
    }
    localThread.start();
  }
}