解码netty通道缓冲区遇到java.lang.IncompatibleClassChangeError:vtable stub

时间:2016-02-27 10:41:40

标签: java jvm netty

在我们的应用程序中,我们看到“java.lang.IncompatibleClassChangeError:vtable stub”随机弹出,很少见。我们进行了干净的重建,因此构建环境中的netty jar文件与运行环境中的相同。

代码是:

@Override
protected Object decode(ChannelHandlerContext ctx, Channel channel, ChannelBuffer buffer)
    throws CorruptedFrameException
{
    ...
    buffer.readShort();            
    int subLength = buffer.readShort();
    ...
}

第一个buffer.readShort()运行良好,但第二个buffer.readShort()可能会随机抛出此错误。问题类似于What causes "java.lang.IncompatibleClassChangeError: vtable stub"?。它使用jdk 1.6.0_16运行,看起来像未解决。

  • 我们正在使用armv7 cpu
  • Netty版本为3.5.4
  • java版本是

    0101C2:~ # java -version
    java version "1.8.0_65"
    Java(TM) SE Embedded Runtime Environment (build 1.8.0_65-b17, headless)
    Java HotSpot(TM) Embedded Client VM (build 25.65-b01, mixed mode)
    

更新

  • 它适用于-Xint选项:我测试了很多次,IncompatibleClassChangeError在没有-Xint的情况下发生了20多次,而且-Xint永远不会发生。每次测试我用-Xint重启应用程序3次,然后在没有-Xint的情况下重启应用程序3次。

0 个答案:

没有答案