From 5828f801b4a8ad0cbf7f2ddc6db837a781572584 Mon Sep 17 00:00:00 2001 From: Arnaud Botella Date: Wed, 1 Jul 2026 11:11:19 +0200 Subject: [PATCH 1/3] fix(AABBHelpers): remove parallel loop that trigger deadlock --- .../mesh/helpers/aabb_edged_curve_helpers.cpp | 14 +++++++------- src/geode/mesh/helpers/aabb_solid_helpers.cpp | 18 ++++++++---------- .../mesh/helpers/aabb_surface_helpers.cpp | 18 ++++++++---------- 3 files changed, 23 insertions(+), 27 deletions(-) diff --git a/src/geode/mesh/helpers/aabb_edged_curve_helpers.cpp b/src/geode/mesh/helpers/aabb_edged_curve_helpers.cpp index a68c6448b..0d33238c9 100644 --- a/src/geode/mesh/helpers/aabb_edged_curve_helpers.cpp +++ b/src/geode/mesh/helpers/aabb_edged_curve_helpers.cpp @@ -48,13 +48,13 @@ namespace geode { absl::FixedArray< BoundingBox< dimension > > box_vector( mesh.nb_edges() ); - async::parallel_for( async::irange( index_t{ 0 }, mesh.nb_edges() ), - [&box_vector, &mesh]( index_t e ) { - BoundingBox< dimension > bbox; - bbox.add_point( mesh.point( mesh.edge_vertex( { e, 0 } ) ) ); - bbox.add_point( mesh.point( mesh.edge_vertex( { e, 1 } ) ) ); - box_vector[e] = std::move( bbox ); - } ); + for( const auto e : Range{ mesh.nb_edges() } ) + { + box_vector[e].add_point( + mesh.point( mesh.edge_vertex( { e, 0 } ) ) ); + box_vector[e].add_point( + mesh.point( mesh.edge_vertex( { e, 1 } ) ) ); + } return AABBTree< dimension >{ box_vector }; } diff --git a/src/geode/mesh/helpers/aabb_solid_helpers.cpp b/src/geode/mesh/helpers/aabb_solid_helpers.cpp index 49d32a65e..cc177269d 100644 --- a/src/geode/mesh/helpers/aabb_solid_helpers.cpp +++ b/src/geode/mesh/helpers/aabb_solid_helpers.cpp @@ -39,16 +39,14 @@ namespace geode { absl::FixedArray< BoundingBox< dimension > > box_vector( mesh.nb_polyhedra() ); - async::parallel_for( async::irange( index_t{ 0 }, mesh.nb_polyhedra() ), - [&box_vector, &mesh]( index_t p ) { - BoundingBox< dimension > bbox; - for( const auto v : LRange{ mesh.nb_polyhedron_vertices( p ) } ) - { - bbox.add_point( - mesh.point( mesh.polyhedron_vertex( { p, v } ) ) ); - } - box_vector[p] = std::move( bbox ); - } ); + for( const auto p : Range{ mesh.nb_polyhedra() } ) + { + for( const auto v : LRange{ mesh.nb_polyhedron_vertices( p ) } ) + { + box_vector[p].add_point( + mesh.point( mesh.polyhedron_vertex( { p, v } ) ) ); + } + } return AABBTree< dimension >{ box_vector }; } diff --git a/src/geode/mesh/helpers/aabb_surface_helpers.cpp b/src/geode/mesh/helpers/aabb_surface_helpers.cpp index 449ac26c5..fd3b80448 100644 --- a/src/geode/mesh/helpers/aabb_surface_helpers.cpp +++ b/src/geode/mesh/helpers/aabb_surface_helpers.cpp @@ -47,16 +47,14 @@ namespace geode { absl::FixedArray< BoundingBox< dimension > > box_vector( mesh.nb_polygons() ); - async::parallel_for( async::irange( index_t{ 0 }, mesh.nb_polygons() ), - [&box_vector, &mesh]( index_t p ) { - BoundingBox< dimension > bbox; - for( const auto v : LRange{ mesh.nb_polygon_vertices( p ) } ) - { - bbox.add_point( - mesh.point( mesh.polygon_vertex( { p, v } ) ) ); - } - box_vector[p] = std::move( bbox ); - } ); + for( const auto p : Range{ mesh.nb_polygons() } ) + { + for( const auto v : LRange{ mesh.nb_polygon_vertices( p ) } ) + { + box_vector[p].add_point( + mesh.point( mesh.polygon_vertex( { p, v } ) ) ); + } + } return AABBTree< dimension >{ box_vector }; } From d4e5dd3839743044e8d0e3b70763505d4b7b5826 Mon Sep 17 00:00:00 2001 From: Arnaud Botella Date: Wed, 1 Jul 2026 11:11:57 +0200 Subject: [PATCH 2/3] no async --- src/geode/mesh/helpers/aabb_edged_curve_helpers.cpp | 2 -- src/geode/mesh/helpers/aabb_solid_helpers.cpp | 2 -- src/geode/mesh/helpers/aabb_surface_helpers.cpp | 2 -- 3 files changed, 6 deletions(-) diff --git a/src/geode/mesh/helpers/aabb_edged_curve_helpers.cpp b/src/geode/mesh/helpers/aabb_edged_curve_helpers.cpp index 0d33238c9..0e93e7a68 100644 --- a/src/geode/mesh/helpers/aabb_edged_curve_helpers.cpp +++ b/src/geode/mesh/helpers/aabb_edged_curve_helpers.cpp @@ -29,8 +29,6 @@ #include -#include - #include #include #include diff --git a/src/geode/mesh/helpers/aabb_solid_helpers.cpp b/src/geode/mesh/helpers/aabb_solid_helpers.cpp index cc177269d..def261b2a 100644 --- a/src/geode/mesh/helpers/aabb_solid_helpers.cpp +++ b/src/geode/mesh/helpers/aabb_solid_helpers.cpp @@ -23,8 +23,6 @@ #include -#include - #include #include #include diff --git a/src/geode/mesh/helpers/aabb_surface_helpers.cpp b/src/geode/mesh/helpers/aabb_surface_helpers.cpp index fd3b80448..9866f5063 100644 --- a/src/geode/mesh/helpers/aabb_surface_helpers.cpp +++ b/src/geode/mesh/helpers/aabb_surface_helpers.cpp @@ -29,8 +29,6 @@ #include -#include - #include #include #include From ecb7f18990d511c7a4c10428d0ef06285b716727 Mon Sep 17 00:00:00 2001 From: Arnaud Botella Date: Wed, 1 Jul 2026 12:14:50 +0200 Subject: [PATCH 3/3] tidy --- src/geode/mesh/helpers/aabb_solid_helpers.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/geode/mesh/helpers/aabb_solid_helpers.cpp b/src/geode/mesh/helpers/aabb_solid_helpers.cpp index def261b2a..1d778afa7 100644 --- a/src/geode/mesh/helpers/aabb_solid_helpers.cpp +++ b/src/geode/mesh/helpers/aabb_solid_helpers.cpp @@ -62,15 +62,16 @@ namespace geode { const auto tetrahedron_vertices = mesh_.tetrahedron( cur_box ).vertices(); - const auto p0 = + const auto point0 = coordinate_system_.coordinates( tetrahedron_vertices[0] ); - const auto p1 = + const auto point1 = coordinate_system_.coordinates( tetrahedron_vertices[1] ); - const auto p2 = + const auto point2 = coordinate_system_.coordinates( tetrahedron_vertices[2] ); - const auto p3 = + const auto point3 = coordinate_system_.coordinates( tetrahedron_vertices[3] ); - const Tetrahedron tetrahedron_in_metric_space{ p0, p1, p2, p3 }; + const Tetrahedron tetrahedron_in_metric_space{ point0, point1, point2, + point3 }; const auto query_in_metric_space = coordinate_system_.coordinates( query ); return std::get< 0 >( point_tetrahedron_distance(