Discovered while taking over the archived ITKCuberille#80 reproducer and fixing the unrelated out-of-range crash (see #6284, #6285).
CuberilleImageToMeshFilter produces a nondeterministic vertex count when the output mesh is a plain itk::Mesh (the itk::QuadEdgeMesh instantiation is stable).
Repro: TC_prob_float_9021791_96M_right_cropped.nrrd (from ITKCuberille#80), float input image, iso-value 0.5, CuberilleTest01 (runs the QEMesh then the Mesh instantiation).
Across 5 consecutive runs of the same binary on the same input:
| Mesh type |
Points |
Cells |
itk::QuadEdgeMesh |
134 (stable) |
222 (stable) |
itk::Mesh |
132 / 132 / 137 / 134 / 132 |
230 (stable) |
The point count for the itk::Mesh path varies run-to-run while the cell count is stable, which points at an order-/thread-dependent vertex de-duplication or point-insertion path specific to the non-QuadEdge mesh output (the filter uses itk::PoolMultiThreader, 16 threads).
This is a separate defect from the out-of-range crash fixed for #6284/#6285 (that fix — keying the vertex lookup by the full (z,y,x) grid identity — is deterministic and regression-free for the tibial and prostate fixtures). TC_prob is therefore not included as a CTest in the supersedes-#80 PR; this issue tracks the remaining nondeterminism.
Discovered while taking over the archived
ITKCuberille#80reproducer and fixing the unrelated out-of-range crash (see #6284, #6285).CuberilleImageToMeshFilterproduces a nondeterministic vertex count when the output mesh is a plainitk::Mesh(theitk::QuadEdgeMeshinstantiation is stable).Repro:
TC_prob_float_9021791_96M_right_cropped.nrrd(fromITKCuberille#80),floatinput image, iso-value0.5,CuberilleTest01(runs the QEMesh then the Mesh instantiation).Across 5 consecutive runs of the same binary on the same input:
itk::QuadEdgeMeshitk::MeshThe point count for the
itk::Meshpath varies run-to-run while the cell count is stable, which points at an order-/thread-dependent vertex de-duplication or point-insertion path specific to the non-QuadEdge mesh output (the filter usesitk::PoolMultiThreader, 16 threads).This is a separate defect from the out-of-range crash fixed for #6284/#6285 (that fix — keying the vertex lookup by the full
(z,y,x)grid identity — is deterministic and regression-free for the tibial and prostate fixtures). TC_prob is therefore not included as a CTest in the supersedes-#80 PR; this issue tracks the remaining nondeterminism.