Java Netty Unoleadheapbytbuf,奇怪且不合理的IndexofboundsException

Java Netty Unoleadheapbytbuf,奇怪且不合理的IndexofboundsException,java,netty,Java,Netty,在极少数情况下,Netty会抛出此类异常: java.lang.IndexOutOfBoundsException:readerIndex(37)+长度(2) 超过writerIndex(185):未冷却的HEAPByteBuf(ridx:37,widx:185, 第185/185章) 位于io.netty.buffer.AbstractByteBuf.checkReadableBytes0(AbstractByteBuf.java:1405) 位于io.netty.buffer.Abstrac

在极少数情况下,Netty会抛出此类异常:

java.lang.IndexOutOfBoundsException:readerIndex(37)+长度(2) 超过writerIndex(185):未冷却的HEAPByteBuf(ridx:37,widx:185, 第185/185章) 位于io.netty.buffer.AbstractByteBuf.checkReadableBytes0(AbstractByteBuf.java:1405) 位于io.netty.buffer.AbstractByteBuf.checkReadableBytes(AbstractByteBuf.java:1392) 位于io.netty.buffer.AbstractByteBuf.readBytes(AbstractByteBuf.java:872) 位于io.netty.buffer.AbstractByteBuf.readBytes(AbstractByteBuf.java:880)

代码是:

private void checkReadableBytes0(int minimumReadableBytes) {
    ensureAccessible();
    if (readerIndex > writerIndex - minimumReadableBytes) {
        throw new IndexOutOfBoundsException(String.format(
                "readerIndex(%d) + length(%d) exceeds writerIndex(%d): %s",
                readerIndex, minimumReadableBytes, writerIndex, this));
    }
}

(37>185-2)应该是真的,它怎么会引发异常???

这看起来很奇怪。您确定不与不同的线程共享相同的
ByteBuf
?如果不是这样,请在Netty issue tracker中打开一个包含更多信息的问题或更好的复制者:


并发可能有问题吗?计算结果为true,并在显示消息之前更改。Netty是异步的,所以我敢打赌。