Skip to content

poisson_mesher crashes with PoissonRecon::Exception on ARM64 (aarch64) — "Failed to close loop for node" #4335

@LeanderFischer

Description

@LeanderFischer

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

  1. Build COLMAP from source on an aarch64 system (tested on NVIDIA DGX Spark with GB10 GPU)
  2. Run a standard dense reconstruction pipeline (feature_extractorexhaustive_matchermapperpatch_match_stereostereo_fusion)
  3. Run colmap poisson_mesher --input_path <fused_geometric.ply> --output_path <output.ply>
  4. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions