Program: 55162
Project: 55162
Buggy source:
public VanillaIndexQueueView(@NotNull RequestContext context,@NotNull Asset asset,@NotNull QueueView<?,V> queueView){
  this.asset=asset;
  @NotNull final EventLoop eventLoop=asset.acquireView(EventLoop.class);
  @NotNull final ChronicleQueueView chronicleQueueView=(ChronicleQueueView)queueView;
  chronicleQueue=chronicleQueueView.chronicleQueue();
  @NotNull final ExcerptTailer tailer=chronicleQueue.createTailer();
  @NotNull AtomicBoolean hasMovedToStart=new AtomicBoolean();
  typeToString=asset.root().findView(TypeToString.class);
  eventLoop.addHandler(() -> {
    if (!hasMovedToStart.get()) {
      @NotNull final RollingChronicleQueue chronicleQueue=(RollingChronicleQueue)this.chronicleQueue;
      final int cycle=chronicleQueue.cycle();
      long startOfCurrentCycle=chronicleQueue.rollCycle().toIndex(cycle,0);
      final boolean success=tailer.moveToIndex(startOfCurrentCycle);
      hasMovedToStart.set(success);
      if (!success)       return false;
    }
    long currentSecond=TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis());
    if (currentSecond >= lastSecond + 10) {
      lastSecond=currentSecond;
      LOG.info("String_Node_Str" + messagesReadPerSecond / 10);
      messagesReadPerSecond=0;
    }
    if (isClosed.get())     throw new InvalidEventHandlerException();
    try (DocumentContext dc=tailer.readingDocument()){
      if (!dc.isPresent())       return false;
      long start=dc.wire().bytes().readPosition();
      try {
        for (; ; ) {
          dc.wire().consumePadding();
          if (dc.wire().bytes().readRemaining() == 0)           return true;
          final StringBuilder sb=acquireStringBuilder();
          @NotNull final ValueIn read=dc.wire().read(sb);
          if ("String_Node_Str".contentEquals(sb)) {
            read.marshallable(MessageHistory.get());
            return true;
          }
          if (sb.length() == 0)           continue;
          Class<? extends Marshallable> type=typeToString.toType(sb);
          if (type == null)           continue;
          @NotNull final V v=(V)VanillaObjectCacheFactory.INSTANCE.get().apply(type);
          long readPosition=dc.wire().bytes().readPosition();
          try {
            read.marshallable(v);
          }
 catch (          Exception e) {
            @NotNull final String msg=dc.wire().bytes().toHexString(readPosition,dc.wire().bytes().readLimit() - readPosition);
            LOG.error("String_Node_Str" + v.getClass().getSimpleName() + "String_Node_Str"+ msg,e);
            return false;
          }
          Object k;
          if (v instanceof KeyedMarshallable) {
            final Bytes bytes=Wires.acquireBytes();
            ((KeyedMarshallable)v).writeKey(bytes);
            k=bytesToKey.get(bytes);
            if (k == null) {
              BytesStore copy=bytes.copy();
              bytesToKey.put(copy.bytesForRead(),copy);
              k=copy;
            }
          }
 else           continue;
          messagesReadPerSecond++;
          @NotNull final String eventName=sb.toString();
synchronized (lastIndexLock) {
            multiMap.computeIfAbsent(eventName,e -> new ConcurrentHashMap<>()).compute(k,(k1,vOld) -> {
              if (vOld == null)               return new IndexedValue<>(deepCopy(v),dc.index());
 else {
                copyTo(v,vOld.v());
                vOld.index(dc.index());
                return vOld;
              }
            }
);
            lastIndexRead=dc.index();
          }
        }
      }
 catch (      RuntimeException e) {
        Jvm.warn().on(getClass(),fromSizePrefixedBlobs(dc.wire().bytes(),start - 4),e);
      }
    }
     return true;
  }
);
}

Fixed version (ground truth):
public VanillaIndexQueueView(@NotNull RequestContext context,@NotNull Asset asset,@NotNull QueueView<?,V> queueView){
  this.asset=asset;
  @NotNull final EventLoop eventLoop=asset.acquireView(EventLoop.class);
  @NotNull final ChronicleQueueView chronicleQueueView=(ChronicleQueueView)queueView;
  chronicleQueue=chronicleQueueView.chronicleQueue();
  @NotNull final ExcerptTailer tailer=chronicleQueue.createTailer();
  @NotNull AtomicBoolean hasMovedToStart=new AtomicBoolean();
  typeToString=asset.root().findView(TypeToString.class);
  eventLoop.addHandler(() -> handleAction(tailer,hasMovedToStart));
}