0

In our application, we have seen "java.lang.IncompatibleClassChangeError: vtable stub" pop up randomly and seldom. We did a clean rebuild, so the netty jar file in building environment is the same as the one in the running environment.

The code is:

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

The first buffer.readShort() works well, but the second buffer.readShort() may throw this error randomly. The problem is similar to What causes "java.lang.IncompatibleClassChangeError: vtable stub"?. It runs with jdk 1.6.0_16, and looks like unsolved.

  • We are using armv7 cpu
  • the Netty version is 3.5.4
  • the java version is

    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)
    

UPDATE:

  • It works well with -Xint option: I tested many times, the IncompatibleClassChangeError occurs over 20 times without -Xint, and It never occurs with -Xint. Every test I restart application 3 times with -Xint, and then restart application 3 times without -Xint.
Community
  • 1
  • 1
lxy
  • 1
  • 1
  • If you are deploying a new version of your application, how are you doing this? – Ferrybig Feb 27 '16 at 13:46
  • Given that this is an ARM build of JVM, I suspect this might be a JVM bug. Does the problem reproduce with `-Xint`? – apangin Feb 28 '16 at 01:22
  • @Ferrybig I build Netty and our application from source in X86 Linux OS with JDK 1.8.0_65, and copy all jar files to arm Linux OS with JRE 1.8.0_65 – lxy Feb 29 '16 at 12:18
  • @apangin With -Xint, the problem does not reproduce. And It is strange that the problem also does not reproduce if I add logger.debug("buffer: " + buffer); before buffer.readShort(). – lxy Mar 01 '16 at 02:49

0 Answers0