From 2a42405a00b0837cf99eff8c82a1c04b5fd3bce1 Mon Sep 17 00:00:00 2001 From: chapman39 Date: Wed, 11 Feb 2026 17:09:52 -0800 Subject: [PATCH 01/17] add asan ci job --- .gitlab-ci.yml | 3 +++ .gitlab/build_toss4.yml | 11 +++++++++++ src/docs/sphinx/dev_guide/memory_checking.rst | 2 +- 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 57d3622c8e..537a07c97c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -78,6 +78,8 @@ stages: script: # Build source, run unit tests, and test install examples. Conditionally run # integration tests + - echo $LSAN_OPTIONS # TODO remove + - echo $ASAN_OPTIONS # TODO remove - echo -e "section_start:$(date +%s):src_build_and_unit_test\r\e[0K Source Build and Unit Tests ${CI_PROJECT_NAME}" - ./scripts/gitlab/build_and_test.sh @@ -90,6 +92,7 @@ stages: - _smith_build_and_test_*/build-*/output.log*.txt - _smith_build_and_test_*/build-*/*.*.logs/*.log - _smith_build_and_test_*/build-*/*.*.logs/*.err + - asan.out reports: junit: - _smith_build_and_test_*/build-*/junit.xml diff --git a/.gitlab/build_toss4.yml b/.gitlab/build_toss4.yml index 308ef51e64..66ab23c94e 100644 --- a/.gitlab/build_toss4.yml +++ b/.gitlab/build_toss4.yml @@ -88,6 +88,17 @@ toss4-gcc_13_3_1-src-no-optional-solvers: ALLOC_TIME: "30" extends: .src_build_on_toss4 +toss4-llvm_19_1_3-src-asan: + variables: + COMPILER: "llvm@19.1.3" + HOST_CONFIG: "dane-toss_4_x86_64_ib-${COMPILER}.cmake" + EXTRA_CMAKE_OPTIONS: "-DENABLE_DOCS=OFF -DCMAKE_BUILD_TYPE=Debug -DENABLE_ASAN=ON" + LSAN_OPTIONS: "suppressions=${CI_PROJECT_DIR}/suppressions.asan" + ASAN_OPTIONS: "log_path=${CI_PROJECT_DIR}/asan.out" + ALLOC_NODES: "1" + ALLOC_TIME: "30" + extends: .src_build_on_toss4 + toss4-llvm_19_1_3-tpl: variables: COMPILER: "llvm@19.1.3" diff --git a/src/docs/sphinx/dev_guide/memory_checking.rst b/src/docs/sphinx/dev_guide/memory_checking.rst index b1ff36359e..a26c140a8e 100644 --- a/src/docs/sphinx/dev_guide/memory_checking.rst +++ b/src/docs/sphinx/dev_guide/memory_checking.rst @@ -52,7 +52,7 @@ Helpful options: * ``fast_unwind_on_malloc=0``: This improves Asan's stack tracing ability but also greatly slows down the run - * ``exitcode=0``: This stops Asan from returning a a non-zero exit code from your executable + * ``exitcode=0``: This stops Asan from returning a non-zero exit code from your executable (defaults to 23) (``LSAN_OPTIONS``) From 5d4372a19ccdd09baac07052e89a6ceea0b4cbfc Mon Sep 17 00:00:00 2001 From: chapman39 Date: Fri, 13 Feb 2026 10:20:23 -0800 Subject: [PATCH 02/17] fix asan options --- .gitlab-ci.yml | 2 +- .gitlab/build_toss4.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 537a07c97c..41352b5c63 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -90,9 +90,9 @@ stages: paths: - _smith_build_and_test_*/output.log*.txt - _smith_build_and_test_*/build-*/output.log*.txt + - _smith_build_and_test_*/build-*/asan.out.*.* - _smith_build_and_test_*/build-*/*.*.logs/*.log - _smith_build_and_test_*/build-*/*.*.logs/*.err - - asan.out reports: junit: - _smith_build_and_test_*/build-*/junit.xml diff --git a/.gitlab/build_toss4.yml b/.gitlab/build_toss4.yml index 66ab23c94e..99f50fd13e 100644 --- a/.gitlab/build_toss4.yml +++ b/.gitlab/build_toss4.yml @@ -94,7 +94,7 @@ toss4-llvm_19_1_3-src-asan: HOST_CONFIG: "dane-toss_4_x86_64_ib-${COMPILER}.cmake" EXTRA_CMAKE_OPTIONS: "-DENABLE_DOCS=OFF -DCMAKE_BUILD_TYPE=Debug -DENABLE_ASAN=ON" LSAN_OPTIONS: "suppressions=${CI_PROJECT_DIR}/suppressions.asan" - ASAN_OPTIONS: "log_path=${CI_PROJECT_DIR}/asan.out" + ASAN_OPTIONS: "log_path=asan.out:log_exe_name=true" ALLOC_NODES: "1" ALLOC_TIME: "30" extends: .src_build_on_toss4 From 10a9a007100db1d357bf6fadca090640bd95ff60 Mon Sep 17 00:00:00 2001 From: chapman39 Date: Fri, 13 Feb 2026 14:04:19 -0800 Subject: [PATCH 03/17] trying again --- .gitlab-ci.yml | 2 +- .gitlab/build_toss4.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 41352b5c63..bf87e52151 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -90,9 +90,9 @@ stages: paths: - _smith_build_and_test_*/output.log*.txt - _smith_build_and_test_*/build-*/output.log*.txt - - _smith_build_and_test_*/build-*/asan.out.*.* - _smith_build_and_test_*/build-*/*.*.logs/*.log - _smith_build_and_test_*/build-*/*.*.logs/*.err + - asan_logs/ reports: junit: - _smith_build_and_test_*/build-*/junit.xml diff --git a/.gitlab/build_toss4.yml b/.gitlab/build_toss4.yml index 99f50fd13e..9ec8cdeb25 100644 --- a/.gitlab/build_toss4.yml +++ b/.gitlab/build_toss4.yml @@ -94,7 +94,7 @@ toss4-llvm_19_1_3-src-asan: HOST_CONFIG: "dane-toss_4_x86_64_ib-${COMPILER}.cmake" EXTRA_CMAKE_OPTIONS: "-DENABLE_DOCS=OFF -DCMAKE_BUILD_TYPE=Debug -DENABLE_ASAN=ON" LSAN_OPTIONS: "suppressions=${CI_PROJECT_DIR}/suppressions.asan" - ASAN_OPTIONS: "log_path=asan.out:log_exe_name=true" + ASAN_OPTIONS: "log_path=${CI_PROJECT_DIR}/asan_logs/asan.out:log_exe_name=true" ALLOC_NODES: "1" ALLOC_TIME: "30" extends: .src_build_on_toss4 From 96a42dd404f51207edaa8a9991c50a812026f1e6 Mon Sep 17 00:00:00 2001 From: chapman39 Date: Tue, 10 Mar 2026 15:21:06 -0700 Subject: [PATCH 04/17] save as txt file --- .gitlab/build_toss4.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab/build_toss4.yml b/.gitlab/build_toss4.yml index 8c456c5d3e..c56ec6097a 100644 --- a/.gitlab/build_toss4.yml +++ b/.gitlab/build_toss4.yml @@ -94,7 +94,7 @@ toss4-llvm_19_1_3-src-asan: HOST_CONFIG: "dane-toss_4_x86_64_ib-${COMPILER}.cmake" EXTRA_CMAKE_OPTIONS: "-DENABLE_DOCS=OFF -DCMAKE_BUILD_TYPE=Debug -DENABLE_ASAN=ON" LSAN_OPTIONS: "suppressions=${CI_PROJECT_DIR}/suppressions.asan" - ASAN_OPTIONS: "log_path=${CI_PROJECT_DIR}/asan_logs/asan.out:log_exe_name=true" + ASAN_OPTIONS: "log_path=${CI_PROJECT_DIR}/asan_logs/asan.txt:log_exe_name=true" ALLOC_NODES: "1" ALLOC_TIME: "30" extends: .src_build_on_toss4 From 726ba3a4ceeb3370da979f9915e850f3a89d3c9d Mon Sep 17 00:00:00 2001 From: chapman39 Date: Tue, 10 Mar 2026 16:39:36 -0700 Subject: [PATCH 05/17] try no logs --- .gitlab/build_toss4.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitlab/build_toss4.yml b/.gitlab/build_toss4.yml index c56ec6097a..b9072dc4dc 100644 --- a/.gitlab/build_toss4.yml +++ b/.gitlab/build_toss4.yml @@ -94,7 +94,6 @@ toss4-llvm_19_1_3-src-asan: HOST_CONFIG: "dane-toss_4_x86_64_ib-${COMPILER}.cmake" EXTRA_CMAKE_OPTIONS: "-DENABLE_DOCS=OFF -DCMAKE_BUILD_TYPE=Debug -DENABLE_ASAN=ON" LSAN_OPTIONS: "suppressions=${CI_PROJECT_DIR}/suppressions.asan" - ASAN_OPTIONS: "log_path=${CI_PROJECT_DIR}/asan_logs/asan.txt:log_exe_name=true" ALLOC_NODES: "1" ALLOC_TIME: "30" extends: .src_build_on_toss4 From 7ec5b79efc86e2af067089e7425353f69571d025 Mon Sep 17 00:00:00 2001 From: chapman39 Date: Mon, 23 Mar 2026 17:15:57 -0700 Subject: [PATCH 06/17] fix domain_tests asan failure --- src/smith/numerics/functional/tests/domain_tests.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/smith/numerics/functional/tests/domain_tests.cpp b/src/smith/numerics/functional/tests/domain_tests.cpp index a73da97f0e..b58d544a39 100644 --- a/src/smith/numerics/functional/tests/domain_tests.cpp +++ b/src/smith/numerics/functional/tests/domain_tests.cpp @@ -97,7 +97,6 @@ TEST(domain, of_edges) { constexpr int dim = 2; auto bmesh = import_mesh("beam-quad.mesh"); - bmesh.FinalizeQuadMesh(true); auto mesh = smith::mesh::refineAndDistribute(std::move(bmesh)); Domain d0 = Domain::ofEdges(*mesh, std::function([](std::vector x, int /* bdr_attr */) { return (0.5 * (x[0][0] + x[1][0])) < 0.25; // x coordinate of edge midpoint From d4431ad258d4f39baacdc3e589cca3a2e24939f9 Mon Sep 17 00:00:00 2001 From: chapman39 Date: Thu, 26 Mar 2026 09:54:18 -0700 Subject: [PATCH 07/17] add space to hip flag in case more flags get added to string --- scripts/spack/spack_repo/smith/packages/smith/package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/spack/spack_repo/smith/packages/smith/package.py b/scripts/spack/spack_repo/smith/packages/smith/package.py index 9cbb4c2b1e..3492d05e2e 100644 --- a/scripts/spack/spack_repo/smith/packages/smith/package.py +++ b/scripts/spack/spack_repo/smith/packages/smith/package.py @@ -467,7 +467,7 @@ def initconfig_hardware_entries(self): hip_link_flags += "-lompstub " if spec.satisfies("^hipblas"): - hip_link_flags += "-lhipblas" + hip_link_flags += "-lhipblas " entries.append(cmake_cache_string("CMAKE_EXE_LINKER_FLAGS", hip_link_flags)) From 1b5fd34284376a54445182db2bd387acb94501b9 Mon Sep 17 00:00:00 2001 From: chapman39 Date: Thu, 26 Mar 2026 09:55:27 -0700 Subject: [PATCH 08/17] destroy zero vector --- src/smith/numerics/petsc_solvers.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/smith/numerics/petsc_solvers.cpp b/src/smith/numerics/petsc_solvers.cpp index 03f29b31fa..3275b34a47 100644 --- a/src/smith/numerics/petsc_solvers.cpp +++ b/src/smith/numerics/petsc_solvers.cpp @@ -306,6 +306,7 @@ void PetscPCSolver::SetOperator(const mfem::Operator& op) PetscCallAbort(GetComm(), MatCreateVecs(A22, &zero, nullptr)); PetscCallAbort(GetComm(), VecSet(zero, 0)); PetscCallAbort(GetComm(), MatDiagonalSet(A22, zero, ADD_VALUES)); + PetscCallAbort(GetComm(), VecDestroy(&zero)); if (delete_pA) { delete pA; } From c1a67f431a42fbd6b69556ec4d086e59d1541c22 Mon Sep 17 00:00:00 2001 From: chapman39 Date: Tue, 31 Mar 2026 14:08:23 -0700 Subject: [PATCH 09/17] fix equation solver petsc asan leaks --- src/smith/numerics/petsc_solvers.cpp | 17 +++++++++++++++++ src/smith/numerics/petsc_solvers.hpp | 6 ++++++ 2 files changed, 23 insertions(+) diff --git a/src/smith/numerics/petsc_solvers.cpp b/src/smith/numerics/petsc_solvers.cpp index 3275b34a47..8cef91c7f7 100644 --- a/src/smith/numerics/petsc_solvers.cpp +++ b/src/smith/numerics/petsc_solvers.cpp @@ -667,6 +667,23 @@ PetscKSPSolver::PetscKSPSolver(const mfem::HypreParMatrix& A, KSPType ksp_type, Customize(); } +PetscKSPSolver::~PetscKSPSolver() +{ + if (pA_) { + delete pA_; + } + if (X) { + delete X; + } + if (B) { + delete B; + } + + pA_ = nullptr; + X = nullptr; + B = nullptr; +} + void PetscKSPSolver::SetTolerances() { PetscCallAbort(GetComm(), KSPSetTolerances(*this, rel_tol, abs_tol, PETSC_DEFAULT, max_iter)); diff --git a/src/smith/numerics/petsc_solvers.hpp b/src/smith/numerics/petsc_solvers.hpp index 20092560a5..a2f48176db 100644 --- a/src/smith/numerics/petsc_solvers.hpp +++ b/src/smith/numerics/petsc_solvers.hpp @@ -327,6 +327,12 @@ class PetscKSPSolver : virtual public mfem::IterativeSolver, public mfem::PetscL PetscKSPSolver(const mfem::HypreParMatrix& A, KSPType ksp_type = KSPCG, const std::string& prefix = std::string(), bool wrap = false, bool iter_mode = false); + /** + * @brief Cleanup extra petsc variables (pa_, B, X) + * + */ + ~PetscKSPSolver(); + /** * @brief Get the MPI communicator * @return The MPI communicator used by the vectors and matrices in the solve From b3894973e4e2026052b7741eb8ed58a7e0e22766 Mon Sep 17 00:00:00 2001 From: chapman39 Date: Tue, 31 Mar 2026 14:08:53 -0700 Subject: [PATCH 10/17] prepend tests with "test_" in numerics --- src/smith/numerics/tests/CMakeLists.txt | 10 +++++----- .../tests/{eigensolver.cpp => test_eigensolver.cpp} | 0 .../{equationsolver.cpp => test_equationsolver.cpp} | 0 ...nsolver_petsc.cpp => test_equationsolver_petsc.cpp} | 0 src/smith/numerics/tests/{odes.cpp => test_odes.cpp} | 0 .../numerics/tests/{operator.cpp => test_operator.cpp} | 0 6 files changed, 5 insertions(+), 5 deletions(-) rename src/smith/numerics/tests/{eigensolver.cpp => test_eigensolver.cpp} (100%) rename src/smith/numerics/tests/{equationsolver.cpp => test_equationsolver.cpp} (100%) rename src/smith/numerics/tests/{equationsolver_petsc.cpp => test_equationsolver_petsc.cpp} (100%) rename src/smith/numerics/tests/{odes.cpp => test_odes.cpp} (100%) rename src/smith/numerics/tests/{operator.cpp => test_operator.cpp} (100%) diff --git a/src/smith/numerics/tests/CMakeLists.txt b/src/smith/numerics/tests/CMakeLists.txt index afce056899..b369f6eddf 100644 --- a/src/smith/numerics/tests/CMakeLists.txt +++ b/src/smith/numerics/tests/CMakeLists.txt @@ -7,9 +7,9 @@ set(numerics_test_dependencies smith_numerics smith_boundary_conditions gtest) set(numerics_serial_test_sources - equationsolver.cpp - operator.cpp - odes.cpp + test_equationsolver.cpp + test_operator.cpp + test_odes.cpp test_block_preconditioner.cpp test_block_preconditioner_backend.cpp ) @@ -20,7 +20,7 @@ smith_add_tests( SOURCES ${numerics_serial_test_sources} if(PETSC_FOUND) set(petsc_solver_tests - equationsolver_petsc.cpp + test_equationsolver_petsc.cpp ) smith_add_tests(SOURCES ${petsc_solver_tests} DEPENDS_ON ${numerics_test_dependencies} @@ -28,7 +28,7 @@ if(PETSC_FOUND) if(SLEPC_FOUND) set(slepc_solver_tests - eigensolver.cpp + test_eigensolver.cpp test_trust_region_solver.cpp ) smith_add_tests(SOURCES ${slepc_solver_tests} diff --git a/src/smith/numerics/tests/eigensolver.cpp b/src/smith/numerics/tests/test_eigensolver.cpp similarity index 100% rename from src/smith/numerics/tests/eigensolver.cpp rename to src/smith/numerics/tests/test_eigensolver.cpp diff --git a/src/smith/numerics/tests/equationsolver.cpp b/src/smith/numerics/tests/test_equationsolver.cpp similarity index 100% rename from src/smith/numerics/tests/equationsolver.cpp rename to src/smith/numerics/tests/test_equationsolver.cpp diff --git a/src/smith/numerics/tests/equationsolver_petsc.cpp b/src/smith/numerics/tests/test_equationsolver_petsc.cpp similarity index 100% rename from src/smith/numerics/tests/equationsolver_petsc.cpp rename to src/smith/numerics/tests/test_equationsolver_petsc.cpp diff --git a/src/smith/numerics/tests/odes.cpp b/src/smith/numerics/tests/test_odes.cpp similarity index 100% rename from src/smith/numerics/tests/odes.cpp rename to src/smith/numerics/tests/test_odes.cpp diff --git a/src/smith/numerics/tests/operator.cpp b/src/smith/numerics/tests/test_operator.cpp similarity index 100% rename from src/smith/numerics/tests/operator.cpp rename to src/smith/numerics/tests/test_operator.cpp From dd73ab158efe89f2c8775e3241169f114b9b8e16 Mon Sep 17 00:00:00 2001 From: chapman39 Date: Tue, 31 Mar 2026 17:50:01 -0700 Subject: [PATCH 11/17] fix mesh_generation asan leaks --- src/smith/mesh_utils/mesh_utils.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/smith/mesh_utils/mesh_utils.cpp b/src/smith/mesh_utils/mesh_utils.cpp index 6474042317..faaf203fbc 100644 --- a/src/smith/mesh_utils/mesh_utils.cpp +++ b/src/smith/mesh_utils/mesh_utils.cpp @@ -240,7 +240,8 @@ mfem::Mesh buildCylinderMesh(int radial_refinement, int elements_lengthwise, dou mesh.SetVertices(new_vertices); } - return mfem::Mesh(*mfem::Extrude2D(&mesh, elements_lengthwise, height)); + auto extruded = std::unique_ptr(mfem::Extrude2D(&mesh, elements_lengthwise, height)); + return std::move(*extruded); } /// @brief Constructs a 2D MFEM mesh of a ring @@ -357,7 +358,8 @@ mfem::Mesh buildHollowCylinderMesh(int radial_refinement, int elements_lengthwis double outer_radius, double height, double total_angle, int sectors) { auto mesh = buildRing(radial_refinement, inner_radius, outer_radius, total_angle, sectors); - return mfem::Mesh(*mfem::Extrude2D(&mesh, elements_lengthwise, height)); + auto extruded = std::unique_ptr(mfem::Extrude2D(&mesh, elements_lengthwise, height)); + return std::move(*extruded); } /// @brief Constructs an MFEM mesh of a hollow cylinder restricted to the first orthant From 644666c6325ee11b8452889e46246269b51c6b64 Mon Sep 17 00:00:00 2001 From: chapman39 Date: Tue, 31 Mar 2026 17:50:19 -0700 Subject: [PATCH 12/17] silence mvapich2 asan leaks coming from test_eigensolver --- suppressions.asan | 1 + 1 file changed, 1 insertion(+) diff --git a/suppressions.asan b/suppressions.asan index 227385f139..47bd8acc95 100644 --- a/suppressions.asan +++ b/suppressions.asan @@ -1,2 +1,3 @@ # Library that isn't built by us leak:libpsm2.so.2 +leak:MPIU_Find_local_and_external From 3992dc69b4f73dea5ff56806b20bdfc2f4c121f3 Mon Sep 17 00:00:00 2001 From: chapman39 Date: Wed, 8 Apr 2026 18:16:30 -0700 Subject: [PATCH 13/17] style --- .gitlab-ci.yml | 2 -- src/smith/numerics/petsc_solvers.hpp | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index bf87e52151..5b17faa90d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -78,8 +78,6 @@ stages: script: # Build source, run unit tests, and test install examples. Conditionally run # integration tests - - echo $LSAN_OPTIONS # TODO remove - - echo $ASAN_OPTIONS # TODO remove - echo -e "section_start:$(date +%s):src_build_and_unit_test\r\e[0K Source Build and Unit Tests ${CI_PROJECT_NAME}" - ./scripts/gitlab/build_and_test.sh diff --git a/src/smith/numerics/petsc_solvers.hpp b/src/smith/numerics/petsc_solvers.hpp index a2f48176db..c26d58dc49 100644 --- a/src/smith/numerics/petsc_solvers.hpp +++ b/src/smith/numerics/petsc_solvers.hpp @@ -329,7 +329,7 @@ class PetscKSPSolver : virtual public mfem::IterativeSolver, public mfem::PetscL /** * @brief Cleanup extra petsc variables (pa_, B, X) - * + * */ ~PetscKSPSolver(); From e11b6b21e55b540b76c03a67342dfcfde7218354 Mon Sep 17 00:00:00 2001 From: Alex Tyler Chapman <100869159+chapman39@users.noreply.github.com> Date: Thu, 9 Apr 2026 10:44:33 -0700 Subject: [PATCH 14/17] Apply suggestion from @chapman39 --- .gitlab-ci.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5b17faa90d..57d3622c8e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -90,7 +90,6 @@ stages: - _smith_build_and_test_*/build-*/output.log*.txt - _smith_build_and_test_*/build-*/*.*.logs/*.log - _smith_build_and_test_*/build-*/*.*.logs/*.err - - asan_logs/ reports: junit: - _smith_build_and_test_*/build-*/junit.xml From e87c3b4e22f8f18fc95428e5d399a5c81198fb27 Mon Sep 17 00:00:00 2001 From: chapman39 Date: Thu, 9 Apr 2026 16:56:57 -0700 Subject: [PATCH 15/17] setup nightly asan pipeline --- .gitlab-ci.yml | 9 ++++++++- .gitlab/build_toss4.yml | 6 +++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5b17faa90d..df346c359c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -24,6 +24,7 @@ variables: stages: - src - tpl + - asan - examples - benchmarks - comparison @@ -35,6 +36,7 @@ stages: rules: - if: $SMITH_CI_WORKFLOW_TYPE != "examples" && $SMITH_CI_WORKFLOW_TYPE != "tpl" && + $SMITH_CI_WORKFLOW_TYPE != "asan" && $SMITH_CI_WORKFLOW_TYPE != "benchmarks" && $SMITH_CI_WORKFLOW_TYPE != "comparison" @@ -50,6 +52,12 @@ stages: rules: - if: $SMITH_CI_WORKFLOW_TYPE == "tpl" +# Run asan build as a nightly scheduled pipeline +.asan_workflow: + stage: asan + rules: + - if: $SMITH_CI_WORKFLOW_TYPE == "asan" + # Run benchmarks build as a weekly scheduled pipeline # or, run benchmarks and save them in tmp location for comparison .benchmarks_workflow: @@ -90,7 +98,6 @@ stages: - _smith_build_and_test_*/build-*/output.log*.txt - _smith_build_and_test_*/build-*/*.*.logs/*.log - _smith_build_and_test_*/build-*/*.*.logs/*.err - - asan_logs/ reports: junit: - _smith_build_and_test_*/build-*/junit.xml diff --git a/.gitlab/build_toss4.yml b/.gitlab/build_toss4.yml index b9072dc4dc..8394c698fa 100644 --- a/.gitlab/build_toss4.yml +++ b/.gitlab/build_toss4.yml @@ -21,6 +21,10 @@ .src_build_on_toss4: extends: [.src_build_script, .on_toss4, .src_workflow] +# NOTE: the asan build is just a src build with a different pipeline schedule, so re-use src build script. +.asan_build_on_toss4: + extends: [.src_build_script, .on_toss4, .asan_workflow] + .examples_build_on_toss4: extends: [.examples_build_script, .on_toss4, .examples_workflow] @@ -96,7 +100,7 @@ toss4-llvm_19_1_3-src-asan: LSAN_OPTIONS: "suppressions=${CI_PROJECT_DIR}/suppressions.asan" ALLOC_NODES: "1" ALLOC_TIME: "30" - extends: .src_build_on_toss4 + extends: .asan_build_on_toss4 toss4-llvm_19_1_3-tpl: variables: From 90c53d52e00356e4bbc006f9934afbda73575598 Mon Sep 17 00:00:00 2001 From: chapman39 Date: Fri, 10 Apr 2026 16:34:45 -0700 Subject: [PATCH 16/17] remove mfem mesh pointer explicitly for clarity --- src/smith/mesh_utils/mesh_utils.cpp | 12 ++++++++---- src/smith/mesh_utils/mesh_utils_base.hpp | 2 +- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/smith/mesh_utils/mesh_utils.cpp b/src/smith/mesh_utils/mesh_utils.cpp index faaf203fbc..d6d74a9131 100644 --- a/src/smith/mesh_utils/mesh_utils.cpp +++ b/src/smith/mesh_utils/mesh_utils.cpp @@ -240,8 +240,10 @@ mfem::Mesh buildCylinderMesh(int radial_refinement, int elements_lengthwise, dou mesh.SetVertices(new_vertices); } - auto extruded = std::unique_ptr(mfem::Extrude2D(&mesh, elements_lengthwise, height)); - return std::move(*extruded); + mfem::Mesh* extruded_ptr = mfem::Extrude2D(&mesh, elements_lengthwise, height); + mfem::Mesh extruded_obj(*extruded_ptr); + delete extruded_ptr; + return extruded_obj; } /// @brief Constructs a 2D MFEM mesh of a ring @@ -358,8 +360,10 @@ mfem::Mesh buildHollowCylinderMesh(int radial_refinement, int elements_lengthwis double outer_radius, double height, double total_angle, int sectors) { auto mesh = buildRing(radial_refinement, inner_radius, outer_radius, total_angle, sectors); - auto extruded = std::unique_ptr(mfem::Extrude2D(&mesh, elements_lengthwise, height)); - return std::move(*extruded); + mfem::Mesh* extruded_ptr = mfem::Extrude2D(&mesh, elements_lengthwise, height); + mfem::Mesh extruded_obj(*extruded_ptr); + delete extruded_ptr; + return extruded_obj; } /// @brief Constructs an MFEM mesh of a hollow cylinder restricted to the first orthant diff --git a/src/smith/mesh_utils/mesh_utils_base.hpp b/src/smith/mesh_utils/mesh_utils_base.hpp index 9417d0c28e..b3462dc837 100644 --- a/src/smith/mesh_utils/mesh_utils_base.hpp +++ b/src/smith/mesh_utils/mesh_utils_base.hpp @@ -103,7 +103,7 @@ mfem::Mesh buildCylinderMesh(int radial_refinement, int elements_lengthwise, dou * @param[in] total_angle the angle in radians over which to generate the portion of an extruded cylinder * @param[in] sectors the number of starting sectors in the hollow cylinder * - * @return A unique_ptr containing the constructed mesh + * @return The constructed mesh */ mfem::Mesh buildHollowCylinderMesh(int radial_refinement, int elements_lengthwise, double inner_radius, double outer_radius, double height, double total_angle = M_PI, int sectors = 8); From b244ed608ea513ccd9bb923243cb9a47bce2de55 Mon Sep 17 00:00:00 2001 From: chapman39 Date: Tue, 14 Apr 2026 10:50:47 -0700 Subject: [PATCH 17/17] force build