最近 Java 8 更新,现在 +PrintAssembly 在 14.10 上崩溃

最近 Java 8 更新,现在 +PrintAssembly 在 14.10 上崩溃

一切都很好,但最近的 Java 更新将 Java 目录中的所有内容都删除了,包括不属于它的内容。现在我试图让 Hotspot 汇编打印输出再次工作,但它不断导致 VM 崩溃。

我已经多次这样做了(而且似乎经常会出现问题)。

我从 Kenai 下载了 hsdis-amd64.so:https://kenai.com/projects/base-hsdis/downloads

我将其移至:/usr/lib/jvm/java-8-oracle/jre/lib/amd64/hsdis-amd64.so

现在,当我尝试使用 Java 时,它会崩溃。我在网上找不到任何关于此问题的信息。如果我无法让它正常工作,我将不得不以某种方式恢复到以前的 Java 更新。

me@machine:~$ java -XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly -version
     76    1       3       java.lang.String::hashCode (55 bytes)
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGBUS (0x7) at pc=0x00007f5e56e7f97a, pid=16820, tid=140042649700096
#
# JRE version: Java(TM) SE Runtime Environment (8.0_31-b13) (build 1.8.0_31-b13)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.31-b07 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# C  [ld-linux-x86-64.so.2+0x1a97a]

答案1

哦不。愚蠢的回答。

当 Ubuntu 如此好心地决定为我升级 Java 版本时,它删除了我的 Oracle JDK 并将其替换为 Open JDK。据我所知,旧的 hsdis 插件仅适用于 Oracle JDK。

解决方案是构建一个与 Open JDK 兼容的新 hsdis。值得庆幸的是,有人(实际上是几个人)已经完成了大部分工作:

https://github.com/abak/openjdk-hsdis

所有构建说明均位于底部。

(是的,用一个非常简单的答案来回答我自己的问题,我感觉有点愚蠢。我不会删除这个问题,而是让其他人来决定。不过,如果这个问题出现在搜索结果中,我会让我一天中多花一半的时间更有效率。)

相关内容