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

如何增大cargo test所用线程的栈大小?

Rust多线程测试栈溢出的解决办法

1. 代码中指定测试线程栈大小

手动在测试用例里创建自定义栈大小的线程,绕过默认测试线程的限制:

#[test]
fn test_heavy_stack() {
    let thread = std::thread::Builder::new()
        .stack_size(1024 * 1024 * 1024) // 设置为1GB(字节单位)
        .spawn(|| {
            // 执行你的测试逻辑
            run_large_stack_task();
        })
        .unwrap();
    thread.join().unwrap();
}

2. 用环境变量全局设置线程最小栈大小

运行测试时通过RUST_MIN_STACK环境变量指定所有Rust线程的最小栈大小:

RUST_MIN_STACK=1073741824 cargo test -- --test-threads 2

1073741824对应1GB,可根据实际需求调整数值。该变量会让测试框架启动的所有线程都使用不低于此值的栈大小。

3. 系统级栈限制调整(可选)

如果上述方法仍有问题,可修改系统全局栈限制。编辑/etc/security/limits.conf,添加:

* soft stack 1048576
* hard stack 1048576

修改后需重新登录生效,此方法为全局设置,适合所有进程,不如前两种针对测试场景灵活。

注意:栈大小并非越大越好,过大可能导致系统内存资源不足,需根据实际测试需求调整合理数值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 11:50:32