Program: 167605
Project: 167605
Buggy source:
@Override public void handle(MessageContext context,IHandlerChain chain){
  QueueingConsumer currentConsumer=(QueueingConsumer)context.getOtherParams().get("String_Node_Str");
  try {
    while (true) {
      try {
        QueueingConsumer.Delivery delivery=currentConsumer.nextDelivery();
        final Message msg=MessageFactory.createMessage(delivery);
        if (msg == null)         continue;
        if (msg.getMessageType().equals(MessageType.QueueMessage)) {
          this.doUncompress(context,msg);
        }
        context.setConsumeMsgs(new ArrayList<Message>(1){
{
            this.add(msg);
          }
        }
);
        if (msg.getMessageType().equals(MessageType.BroadcastMessage) && context.getNoticeListener() != null) {
          IMessageReceiveListener noticeListener=context.getNoticeListener();
          noticeListener.onMessage(msg);
        }
 else {
          process(context);
        }
      }
 catch (      InterruptedException e) {
        logger.info("String_Node_Str");
      }
catch (      Exception e) {
        ExceptionHelper.logException(logger,e,"String_Node_Str");
      }
    }
  }
 catch (  Exception e) {
    ExceptionHelper.logException(logger,e,"String_Node_Str");
  }
 finally {
synchronized (context.getChannel()) {
      try {
        if (context.getChannel().isOpen()) {
          context.getChannel().basicCancel(context.getConsumerTag());
        }
      }
 catch (      IOException e1) {
        ExceptionHelper.logException(logger,e1,"String_Node_Str");
      }
    }
    chain.handle(context);
  }
}

Fixed version (ground truth):
@Override public void handle(MessageContext context,IHandlerChain chain){
  QueueingConsumer currentConsumer=(QueueingConsumer)context.getOtherParams().get("String_Node_Str");
  int retryCount=0, retryTotalCount=10;
  boolean stop=false;
  try {
    while (!stop) {
      try {
        QueueingConsumer.Delivery delivery=currentConsumer.nextDelivery();
        final Message msg=MessageFactory.createMessage(delivery);
        if (msg == null)         continue;
        if (msg.getMessageType().equals(MessageType.QueueMessage)) {
          this.doUncompress(context,msg);
        }
        context.setConsumeMsgs(new ArrayList<Message>(1){
{
            this.add(msg);
          }
        }
);
        if (msg.getMessageType().equals(MessageType.BroadcastMessage) && context.getNoticeListener() != null) {
          IMessageReceiveListener noticeListener=context.getNoticeListener();
          noticeListener.onMessage(msg);
        }
 else {
          process(context);
        }
      }
 catch (      InterruptedException e) {
        logger.info("String_Node_Str");
      }
catch (      ShutdownSignalException e) {
        retryCount++;
        if (retryCount >= retryTotalCount)         stop=true;
      }
catch (      Exception e) {
        ExceptionHelper.logException(logger,e,"String_Node_Str");
      }
    }
  }
 catch (  Exception e) {
    ExceptionHelper.logException(logger,e,"String_Node_Str");
  }
 finally {
synchronized (context.getChannel()) {
      try {
        if (context.getChannel().isOpen()) {
          context.getChannel().basicCancel(context.getConsumerTag());
        }
      }
 catch (      IOException e1) {
        ExceptionHelper.logException(logger,e1,"String_Node_Str");
      }
    }
    chain.handle(context);
  }
}