首页 > 解决方案 > Java 8 gradle 脚本导致内核恐慌

问题描述

我有一个问题,Java 8 和 Gradle 导致 Linux VM 崩溃。这是有趣的部分:Java 7 不会导致这种行为。我们也尝试过启用堆栈跟踪和调试,但机器会在任何调试/堆栈输出之前出现恐慌。

内核恐慌 - 不同步:中断中的致命异常。

Gradle:4.3.1 Java:8u101 操作系统:CentOS 6.9 / 2.6 内核

我已经在多台机器上对此进行了测试,但似乎无法确定。

这使我假设更改与 Java 8 有关?然而,gradle 脚本是如此简单。它读取一个清单文件,然后下载依赖项以完成我们的构建。

标签: javalinuxgradlekernelvmware

解决方案


看来VMware实际上是问题的根本原因。我们的 Gradle 脚本碰巧触发了这种行为,因为当我们从 Maven 拉取依赖项时,会发生大量的网络 I/O;从而导致以下行为:

VMware 知识库文章引用:

出现此问题的原因是 vmxnet3 vNIC 后端中的错误,该后端是 vmkernel 的一部分。如果满足以下所有条件,则会出现此问题:

Linux VM is running kernel >= 4.8
HW version of VM is >=13
ESXi version is 6.5

来源 - 知识库文章

最后,通过将以下内容应用于我们的 .vmx 文件,我解决了这个问题。显然需要重新启动机器才能使此更改通过。

vmxnet3.rev.30 = "FALSE"

我很想知道这个问题是否在不同的应用程序工作负载下表现出来。


推荐阅读