You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VM崩溃后Maven与Gradle执行单元测试时卡住的问题求助

解决Ubuntu 17.10虚拟机中Maven/Gradle单元测试卡住的问题

从你提供的堆栈跟踪来看,问题出在测试框架初始化**系统调用过滤器(SystemCallFilter)**的native代码阶段——这通常是Elasticsearch测试套件的特性,它依赖操作系统的seccomp内核模块来限制测试进程的系统调用。虚拟机崩溃后,系统的内核特性或权限状态可能被破坏,导致这个初始化步骤卡住。

下面是几个针对性的解决方案:

1. 直接禁用系统调用过滤

这是最快绕过问题的方法,通过设置JVM参数让测试框架跳过系统调用过滤器的安装:

  • Maven:运行测试时添加参数
    mvn test -DargLine="-Des.bootstrap.system_call_filter=false"
    
    或者在pom.xml的maven-surefire-plugin中永久配置:
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
            <argLine>-Des.bootstrap.system_call_filter=false</argLine>
        </configuration>
    </plugin>
    
  • Gradle:运行测试时添加参数
    gradle test -Dorg.gradle.jvmargs="-Des.bootstrap.system_call_filter=false"
    
    或者在build.gradle的test任务中永久配置:
    test {
        jvmArgs "-Des.bootstrap.system_call_filter=false"
    }
    

2. 修复虚拟机的内核模块问题

系统调用过滤器依赖seccomp内核模块,虚拟机崩溃可能导致该模块未正确加载或损坏:

  • 检查模块是否加载:
    lsmod | grep seccomp
    
  • 如果未加载,手动加载:
    sudo modprobe seccomp
    
  • 还可以检查文件系统是否损坏(需重启虚拟机进入单用户模式或用Live CD),运行:
    sudo fsck /dev/sda1  # 替换为你的系统分区
    

3. 调整虚拟机权限与配置

VM Player的虚拟化设置可能影响内核特性的可用性:

  • 打开VM Player的虚拟机设置,确认虚拟化引擎选项中已启用Intel VT-x/EPT或AMD-V/RVI(根据你的CPU类型)
  • 给虚拟机分配足够的内存和CPU资源,避免因资源不足导致初始化卡住

4. 检查JDK兼容性

你当前使用的Java HotSpot可能和Ubuntu 17.10存在兼容性问题,试试切换到OpenJDK 8:

sudo apt install openjdk-8-jdk
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

以上方案中,禁用系统调用过滤应该能立即解决问题;如果需要保留这个安全特性,再尝试修复内核模块或虚拟机配置。

内容的提问来源于stack exchange,提问作者Varun Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:18:02