JVM崩溃问题框架:Canonicalizer :: do_If [英] JVM Crash Problematic Frame: Canonicalizer::do_If

查看:188
本文介绍了JVM崩溃问题框架:Canonicalizer :: do_If的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在启用热部署时,Iam始终面对JVM崩溃(在启动以下Java选项时使用 JAVA_OPTS -Xmx4096m -XX:MetaspaceSize = 512m -XX:+ HeapDumpOnOutOfMemoryError -XX:HeapDumpPath = crash -XX:ThreadStackSize = 512 -XX :+ UseConcMarkSweepGC -XX:ParallelGCThreads = 5 -XX:NewRatio = 2 -XX:+ UnlockDiagnosticVMOptions -XX:-UseLoopPredicate -Xdebug -Xrunjdwp:transport = dt_socket,address = $ DEBUG_PORT,server = y,suspend = n -XX:NewRatio = 2 -Dspringloaded.synchronize = true J​​AVA_OPTS =`echo $ JAVA_OPTS -Dspringloaded.synchronize = true -javaagent:springloaded-1.2.1.jar -noverify )

Iam facing JVM Crash cosistently while enabling hotdeploy (USING below java options on starting up JAVA_OPTS -Xmx4096m -XX:MetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=crash -XX:ThreadStackSize=512 -XX:+UseConcMarkSweepGC -XX:ParallelGCThreads=5 -XX:NewRatio=2 -XX:+UnlockDiagnosticVMOptions -XX:-UseLoopPredicate -Xdebug -Xrunjdwp:transport=dt_socket,address=$DEBUG_PORT,server=y,suspend=n -XX:NewRatio=2 -Dspringloaded.synchronize=true JAVA_OPTS=`echo $JAVA_OPTS -Dspringloaded.synchronize=true -javaagent:springloaded-1.2.1.jar -noverify )

环境:JDK 1.8 U 66,RHEL 6.7

Environment : JDK 1.8 U 66, RHEL 6.7



    #
    # A fatal error has been detected by the Java Runtime Environment:
    #
    #  SIGSEGV (0xb) at pc=0x00007faee9a1e27c, pid=27208, tid=140379827795712
    #
    # JRE version: Java(TM) SE Runtime Environment (8.0_66-b17) (build 1.8.0_66-b17)
    # Java VM: Java HotSpot(TM) 64-Bit Server VM (25.66-b17 mixed mode linux-amd64 )
    # Problematic frame:
    # V  [libjvm.so+0x35027c]  Canonicalizer::do_If(If*)+0x1c
    #
    # Core dump written. Default location:  core.27208
    #
    # An error report file with more information is saved as:
    # hs_err_pid27208.log
    # [ timer expired, abort... ]

推荐答案

我注意到Java选项列表中的-javaagent-noverify.

I've noticed both -javaagent and -noverify in Java options list.

springloaded代理似乎生成了无效的字节码,而字节码验证已明确关闭.不足为奇,这可能会导致不可预测的结果,包括JVM崩溃.

It looks like springloaded agent generates invalid bytecode, while the bytecode verification is explicitly turned off. No surprise, this may lead to unpredictable results including JVM crash.

这不是JVM问题,但很可能是springloaded代理中的错误.尝试删除-noverify选项.

This is not a JVM problem, but most likely a bug in springloaded agent. Try to remove -noverify option.

-XX:-TieredCompilation也可以解决此特定问题,但是如果字节码未能通过验证,则不要期望应用程序正常运行.最好远离越野车代理库.

-XX:-TieredCompilation may also work around this particular problem, but don't expect application to work correctly if the bytecode fails to pass verification. It's better to stay away from the buggy agent libraries.

这篇关于JVM崩溃问题框架:Canonicalizer :: do_If的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆