Describe the bug
colmap poisson_mesher crashes with a PoissonRecon::Exception on an ARM64 (aarch64) system (NVIDIA DGX Spark / Grace Blackwell). The same pipeline and data work correctly on x86_64 machines. The crash occurs during isosurface extraction (extractLevelSet) inside a parallel region (GOMP_parallel), suggesting either a threading race condition or a floating-point behavior difference on ARM/NEON.
The error message is:
terminate called after throwing an instance of 'PoissonRecon::Exception'
what(): [EXCEPTION] .../PoissonRecon/FEMTree.LevelSet.3D.inl (Line 1645)
operator()
Failed to close loop for node[57220]: [2 40 14 @ 6] | ...
The crash is not data-dependent — it occurs on both the raw fused_geometric.ply output from patch_match_stereo + stereo_fusion and on cleaned/filtered versions of the same point cloud. It also occurs at any --PoissonMeshing.depth (tested 10 and default 13).
To Reproduce
- Build COLMAP from source on an aarch64 system (tested on NVIDIA DGX Spark with GB10 GPU)
- Run a standard dense reconstruction pipeline (
feature_extractor → exhaustive_matcher → mapper → patch_match_stereo → stereo_fusion)
- Run
colmap poisson_mesher --input_path <fused_geometric.ply> --output_path <output.ply>
- Crash with
PoissonRecon::Exception / SIGABRT
The input point cloud has ~30M vertices with valid normals (float x/y/z/nx/ny/nz + uchar RGB).
Expected behavior
poisson_mesher should produce a Poisson surface mesh, as it does on x86_64 with the same COLMAP version and equivalent data.
Environment:
- OS: Ubuntu 24.04.4 LTS (Noble Numbat)
- Architecture: aarch64 (ARM64)
- Hardware: NVIDIA DGX Spark (Grace CPU + Blackwell GB10 GPU)
- COLMAP Version: 4.1.0.dev0 (commit
9b4190b8, built with CUDA)
- GPU Driver: 580.126.09
- CPU cores: 20
- Capture Device: DJI Matrice 4T (drone)
Additional context
- The recent commit
9b4190b8 ("Fix empty PatchMatch results on Blackwell GPUs") was needed to get patch_match_stereo working on this platform — so ARM/Blackwell support is still maturing.
- The crash occurs in
FEMTree.LevelSet.3D.inl line 1645, inside a ParallelFor lambda during SetLevelSet / extractLevelSet.
Describe the bug
colmap poisson_meshercrashes with aPoissonRecon::Exceptionon an ARM64 (aarch64) system (NVIDIA DGX Spark / Grace Blackwell). The same pipeline and data work correctly on x86_64 machines. The crash occurs during isosurface extraction (extractLevelSet) inside a parallel region (GOMP_parallel), suggesting either a threading race condition or a floating-point behavior difference on ARM/NEON.The error message is:
The crash is not data-dependent — it occurs on both the raw
fused_geometric.plyoutput frompatch_match_stereo+stereo_fusionand on cleaned/filtered versions of the same point cloud. It also occurs at any--PoissonMeshing.depth(tested 10 and default 13).To Reproduce
feature_extractor→exhaustive_matcher→mapper→patch_match_stereo→stereo_fusion)colmap poisson_mesher --input_path <fused_geometric.ply> --output_path <output.ply>PoissonRecon::Exception/SIGABRTThe input point cloud has ~30M vertices with valid normals (
floatx/y/z/nx/ny/nz + uchar RGB).Expected behavior
poisson_meshershould produce a Poisson surface mesh, as it does on x86_64 with the same COLMAP version and equivalent data.Environment:
9b4190b8, built with CUDA)Additional context
9b4190b8("Fix empty PatchMatch results on Blackwell GPUs") was needed to getpatch_match_stereoworking on this platform — so ARM/Blackwell support is still maturing.FEMTree.LevelSet.3D.inlline 1645, inside aParallelForlambda duringSetLevelSet/extractLevelSet.