问题描述
用户在 Windows 上运行 OOOSplat 生成流程时,FFmpeg 和 COLMAP 均成功完成,但 Brush v0.3.0 在训练初始化阶段约 7 秒后崩溃。
界面最终仅显示 Brush 外部进程失败,退出码为:
该退出码对应 0xC0000409,是连续 Rust panic 后触发的 Windows fail-fast,不是根本原因。
运行参数
brush-cli 0.3.0
--total-steps 15000
--max-resolution 1600
--export-every 15000
--export-name final.ply.tmp
为保护用户隐私,项目路径和输入文件名已省略。
实际错误
首个有效错误:
thread 'main' panicked at
cubecl-wgpu/src/compute/stream.rs:404:18:
called `Option::unwrap()` on a `None` value
随后出现连锁错误:
thread 'main' panicked at
burn-fusion/src/stream/execution/ordering.rs:67:38:
index out of bounds: the len is 0 but the index is 0
进程信息:
exit_code: Some(-1073740791)
elapsed_ms: 7129
第二个 Burn panic 应为第一个 GPU 计算流异常后的连锁反应。
已排除的输入与 COLMAP 问题
已使用 COLMAP model_analyzer 检查实际生成的稀疏模型:
Frames: 219
Registered frames: 219
Images: 219
Registered images: 219
Points: 11999
Observations: 164321
Mean track length: 13.694558
Mean observations per image: 750.324201
Mean reprojection error: 0.820348px
其他检查结果:
- FFprobe 和 FFmpeg 均以退出码 0 完成。
- FFmpeg实际抽取 219 张 720×1280 JPG。
- COLMAP 特征提取和匹配使用 CPU:
use_gpu=0。
- COLMAP Mapper 输出
Keeping successful reconstruction,退出码 0。
- 将
cameras.bin、images.bin、points3D.bin 转换为 TXT 后,没有发现 NaN 或 Inf。
- 相机参数正常:单个
SIMPLE_RADIAL 相机,焦距约 897 px。
- COLMAP 中虽出现 Bundle Adjustment Cholesky 求解警告,但后续成功恢复并完成全部图像注册。
因此现有证据不支持“COLMAP 数据损坏或注册率不足导致 Brush 崩溃”。
初步判断
这是 Brush v0.3.0 所使用的 WGPU/CubeCL/Burn GPU 运行时问题。最可能的故障链:
- WGPU 设备丢失、GPU 命令提交失败或资源分配失败。
- CubeCL 未能取得有效计算流,却直接对
None 执行 unwrap()。
- Burn Fusion 在空执行队列上继续排序,产生第二次 panic。
- Windows 以
0xC0000409 终止进程。
上游存在相同 CubeCL 提交和相同 stream.rs:404 panic 的记录;该记录在 panic 前明确出现 Not enough memory for command submission 和 Parent device is lost:
但本次日志没有捕获到最初的 WGPU device-lost reason,因此目前不能断言具体触发因素一定是 OOM。需要区分:
- GPU 驱动重置或设备丢失;
- 单次 Buffer/连续显存分配失败;
- WGPU 显存预算或资源上限;
- 双显卡选择错误;
- AMD/Intel/NVIDIA 特定驱动兼容性;
- Brush 初始化、KNN 或首批计算 Kernel 缺陷。
Brush 的另一个显式大型 Buffer 问题可供对照,但不是本次相同的直接错误:
当前日志缺口
现有项目日志没有记录:
- Brush 实际选择的 GPU 名称和设备索引;
- GPU 厂商、驱动版本;
- WGPU backend(DX12/Vulkan 等);
- WGPU device-lost reason;
- 崩溃前显存预算和关键 Buffer 分配;
- Windows Display/WHEA 事件。
COLMAP 使用 CPU 只能说明当时没有启用 NVIDIA COLMAP 加速;Brush 的 GPU 选择与 COLMAP 独立,不能据此确认 Brush 使用了哪块显卡。
建议处理
诊断
- 在启动 Brush 前记录 OS、GPU 厂商/型号、驱动版本和可用适配器。
- 为 Brush 设置适当的 WGPU/CubeCL日志环境变量,并完整捕获 device-lost/OOM 信息。
- 记录 Brush 启动阶段:数据读取、图像解码、KNN 初始化、GPU Buffer 创建和首个训练 step。
- 记录任务使用的 Brush 版本与二进制 SHA-256。
- 若检测到双显卡,记录实际选择的设备。
- 保留 Windows事件查看器中同一时间的 Display、WHEA、
nvlddmkm 或 amdwddmg 错误。
用户侧错误提示
识别以下已知 panic 特征:
cubecl-wgpu/src/compute/stream.rs
Option::unwrap() on a None value
burn-fusion/src/stream/execution/ordering.rs
不要只显示“外部进程执行失败”,应提示:
Brush GPU 计算设备在初始化阶段失效。请更新显卡驱动、关闭其他 GPU 应用或降低生成质量,并提交 GPU 型号、驱动版本和 Brush 日志。
稳定性
- 评估是否可以降低分辨率后进行一次明确告知用户的重试。
- 不应将该错误误报为 COLMAP 注册率或输入素材问题。
- Brush崩溃后应保留已经生成的 COLMAP 数据和真实阶段状态,方便诊断与未来重试。
待补充环境信息
验收建议
- Brush设备丢失/OOM时,OOOSplat显示可理解、可操作的错误原因。
- 完整日志能确认实际GPU适配器、驱动、WGPU backend和首个GPU错误。
- Brush失败不会覆盖或丢失成功的COLMAP阶段状态。
- 对相同数据重试时能判断是稳定复现、设备相关还是负载相关。
问题描述
用户在 Windows 上运行 OOOSplat 生成流程时,FFmpeg 和 COLMAP 均成功完成,但 Brush v0.3.0 在训练初始化阶段约 7 秒后崩溃。
界面最终仅显示 Brush 外部进程失败,退出码为:
该退出码对应
0xC0000409,是连续 Rust panic 后触发的 Windows fail-fast,不是根本原因。运行参数
为保护用户隐私,项目路径和输入文件名已省略。
实际错误
首个有效错误:
随后出现连锁错误:
进程信息:
第二个 Burn panic 应为第一个 GPU 计算流异常后的连锁反应。
已排除的输入与 COLMAP 问题
已使用 COLMAP
model_analyzer检查实际生成的稀疏模型:其他检查结果:
use_gpu=0。Keeping successful reconstruction,退出码 0。cameras.bin、images.bin、points3D.bin转换为 TXT 后,没有发现NaN或Inf。SIMPLE_RADIAL相机,焦距约 897 px。因此现有证据不支持“COLMAP 数据损坏或注册率不足导致 Brush 崩溃”。
初步判断
这是 Brush v0.3.0 所使用的 WGPU/CubeCL/Burn GPU 运行时问题。最可能的故障链:
None执行unwrap()。0xC0000409终止进程。上游存在相同 CubeCL 提交和相同
stream.rs:404panic 的记录;该记录在 panic 前明确出现Not enough memory for command submission和Parent device is lost:但本次日志没有捕获到最初的 WGPU device-lost reason,因此目前不能断言具体触发因素一定是 OOM。需要区分:
Brush 的另一个显式大型 Buffer 问题可供对照,但不是本次相同的直接错误:
当前日志缺口
现有项目日志没有记录:
COLMAP 使用 CPU 只能说明当时没有启用 NVIDIA COLMAP 加速;Brush 的 GPU 选择与 COLMAP 独立,不能据此确认 Brush 使用了哪块显卡。
建议处理
诊断
nvlddmkm或amdwddmg错误。用户侧错误提示
识别以下已知 panic 特征:
不要只显示“外部进程执行失败”,应提示:
稳定性
待补充环境信息
max-resolution后是否仍在初始化阶段崩溃验收建议