From 84fcd98ab1322bba3ba2c3f3ea67725f533871a6 Mon Sep 17 00:00:00 2001 From: mcbarton Date: Thu, 6 Nov 2025 17:11:14 +0000 Subject: [PATCH 01/15] Add Valgrind command ci --- .github/workflows/main.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 3a4a1689..bb6cf971 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -133,6 +133,14 @@ jobs: cd build make install -j ${{ env.ncpus }} make -j ${{ env.ncpus }} check-xeus-cpp + if [[ "${os}" != "macos"* ]]; then + sudo apt-get install valgrind + SUPPRESSION_FILE="${{ github.workspace }}/etc/xeus-cpp-valgrind.supp" + valgrind --show-error-list=yes --track-origins=yes --error-exitcode=1 \ + --show-leak-kinds=definite,possible \ + --suppressions="${SUPPRESSION_FILE}" \ + test/test_xeus_cpp + fi - name: Python tests Unix Systems if: ${{ runner.os != 'windows' }} From 63c9cbc721a21c399aa7e7bda52fa20d4a0c4c98 Mon Sep 17 00:00:00 2001 From: mcbarton <150042563+mcbarton@users.noreply.github.com> Date: Thu, 6 Nov 2025 17:12:46 +0000 Subject: [PATCH 02/15] Create xeus-cpp-valgrind.supp --- etc/xeus-cpp-valgrind.supp | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 etc/xeus-cpp-valgrind.supp diff --git a/etc/xeus-cpp-valgrind.supp b/etc/xeus-cpp-valgrind.supp new file mode 100644 index 00000000..e69de29b From 9f0d8430c2850df08ccbcbe4c9109b384f93917f Mon Sep 17 00:00:00 2001 From: mcbarton Date: Thu, 6 Nov 2025 17:13:59 +0000 Subject: [PATCH 03/15] Generate Valgrind suppression file ci --- .github/workflows/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index bb6cf971..37ce2a54 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -138,6 +138,7 @@ jobs: SUPPRESSION_FILE="${{ github.workspace }}/etc/xeus-cpp-valgrind.supp" valgrind --show-error-list=yes --track-origins=yes --error-exitcode=1 \ --show-leak-kinds=definite,possible \ + --gen-suppressions=all \ --suppressions="${SUPPRESSION_FILE}" \ test/test_xeus_cpp fi From 60ee5a0808d7555a373e0e0fc6decf7d56257d89 Mon Sep 17 00:00:00 2001 From: mcbarton Date: Thu, 6 Nov 2025 17:26:09 +0000 Subject: [PATCH 04/15] Update main.yml --- .github/workflows/main.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 37ce2a54..1ecde9f8 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -133,8 +133,9 @@ jobs: cd build make install -j ${{ env.ncpus }} make -j ${{ env.ncpus }} check-xeus-cpp + os="${{ matrix.os }}" if [[ "${os}" != "macos"* ]]; then - sudo apt-get install valgrind + sudo apt install valgrind SUPPRESSION_FILE="${{ github.workspace }}/etc/xeus-cpp-valgrind.supp" valgrind --show-error-list=yes --track-origins=yes --error-exitcode=1 \ --show-leak-kinds=definite,possible \ From 36856b5531e8f7ef47067112784ec066d4e56825 Mon Sep 17 00:00:00 2001 From: mcbarton Date: Thu, 6 Nov 2025 17:33:51 +0000 Subject: [PATCH 05/15] Update main.yml --- .github/workflows/main.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 1ecde9f8..95a0dafb 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -135,7 +135,8 @@ jobs: make -j ${{ env.ncpus }} check-xeus-cpp os="${{ matrix.os }}" if [[ "${os}" != "macos"* ]]; then - sudo apt install valgrind + sudo apt-get update + sudo apt-get install valgrind SUPPRESSION_FILE="${{ github.workspace }}/etc/xeus-cpp-valgrind.supp" valgrind --show-error-list=yes --track-origins=yes --error-exitcode=1 \ --show-leak-kinds=definite,possible \ From 3b3ff5f74b47f1c3f169677bd3577f4d46602dc5 Mon Sep 17 00:00:00 2001 From: mcbarton <150042563+mcbarton@users.noreply.github.com> Date: Thu, 6 Nov 2025 19:39:10 +0000 Subject: [PATCH 06/15] Update ci to only to Valgrind command for debug builds --- .github/workflows/main.yml | 16 +++++++++++----- ...-valgrind.supp => xeus-cpp-valgrind_arm.supp} | 0 etc/xeus-cpp-valgrind_x86.supp | 0 3 files changed, 11 insertions(+), 5 deletions(-) rename etc/{xeus-cpp-valgrind.supp => xeus-cpp-valgrind_arm.supp} (100%) create mode 100644 etc/xeus-cpp-valgrind_x86.supp diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 95a0dafb..762b9269 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -33,7 +33,7 @@ jobs: - name: ubu24-analyzers os: ubuntu-24.04 coverage: true - extra_cmake_flags: -DCMAKE_BUILD_TYPE=Debug + debug: on micromamba_shell_init: bash - name: ubu22 os: ubuntu-22.04 @@ -77,6 +77,9 @@ jobs: if: ${{ runner.os != 'windows' }} run: | os="${{ matrix.os }}" + if [[ "${{ matrix.debug }}" == "on" ]]; then + echo "BUILD_TYPE=Debug" >> $GITHUB_ENV + fi if [[ "${os}" == "macos"* ]]; then echo "ncpus=$(sysctl -n hw.ncpu)" >> $GITHUB_ENV else @@ -114,7 +117,7 @@ jobs: -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX \ -DXEUS_CPP_ENABLE_CODE_COVERAGE=${{ matrix.coverage }} \ -DCMAKE_COMPILE_WARNING_AS_ERROR=ON \ - ${{ matrix.extra_cmake_flags }} + -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} - name: build, run C++ tests & install if: ${{ runner.os == 'windows' }} @@ -133,11 +136,14 @@ jobs: cd build make install -j ${{ env.ncpus }} make -j ${{ env.ncpus }} check-xeus-cpp - os="${{ matrix.os }}" - if [[ "${os}" != "macos"* ]]; then + if [[ "${{ matrix.os }}" != "macos"* && "${{ matrix.debug }}" == "on" ]]; then sudo apt-get update sudo apt-get install valgrind - SUPPRESSION_FILE="${{ github.workspace }}/etc/xeus-cpp-valgrind.supp" + if [[ "${{ matrix.os }}" == *"arm"* ]]; then + SUPPRESSION_FILE="${{ github.workspace }}/etc/xeus-cpp-valgrind_arm.supp" + else + SUPPRESSION_FILE="${{ github.workspace }}/etc/xeus-cpp-valgrind_x86.supp" + fi valgrind --show-error-list=yes --track-origins=yes --error-exitcode=1 \ --show-leak-kinds=definite,possible \ --gen-suppressions=all \ diff --git a/etc/xeus-cpp-valgrind.supp b/etc/xeus-cpp-valgrind_arm.supp similarity index 100% rename from etc/xeus-cpp-valgrind.supp rename to etc/xeus-cpp-valgrind_arm.supp diff --git a/etc/xeus-cpp-valgrind_x86.supp b/etc/xeus-cpp-valgrind_x86.supp new file mode 100644 index 00000000..e69de29b From dd8197df5805c9f3d966743d878523cff83ccd1e Mon Sep 17 00:00:00 2001 From: mcbarton Date: Thu, 6 Nov 2025 19:45:19 +0000 Subject: [PATCH 07/15] Update xeus-cpp-valgrind_x86.supp --- etc/xeus-cpp-valgrind_x86.supp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/etc/xeus-cpp-valgrind_x86.supp b/etc/xeus-cpp-valgrind_x86.supp index e69de29b..ca1fb6be 100644 --- a/etc/xeus-cpp-valgrind_x86.supp +++ b/etc/xeus-cpp-valgrind_x86.supp @@ -0,0 +1,18 @@ +{ + Suppression 1 + Memcheck:Addr8 + fun:memmove + fun:copy + fun:_S_copy + fun:_S_copy_chars + fun:_S_copy_chars + fun:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIN9__gnu_cxx17__normal_iteratorIPKcS4_EEEEvT_SB_St20forward_iterator_tag.isra.0 + fun:basic_string<__gnu_cxx::__normal_iterator > > + fun:str + fun:operator std::__cxx11::sub_match<__gnu_cxx::__normal_iterator > >::string_type + fun:_ZN4xcpp11interpreter20inspect_request_implERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii + fun:_ZN4xeus12xinterpreter15inspect_requestERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii + fun:_ZN21DOCTEST_ANON_SUITE_11L20DOCTEST_ANON_FUNC_14Ev + fun:_ZN7doctest7Context3runEv + fun:main +} From 871e1527546aae2a4536b1bbc5a97e919ccbb97e Mon Sep 17 00:00:00 2001 From: mcbarton Date: Thu, 6 Nov 2025 19:47:22 +0000 Subject: [PATCH 08/15] Update main.yml --- .github/workflows/main.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 762b9269..2f1c1af8 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -41,6 +41,10 @@ jobs: - name: ubu22-arm os: ubuntu-22.04-arm micromamba_shell_init: bash + - name: ubu24-arm-valgrind + os: ubuntu-24.04-arm + debug: on + micromamba_shell_init: bash - name: osx15-x86 os: macos-15-intel micromamba_shell_init: bash From 1b73c8d9726de738e73b50c36d62f1244c6b529c Mon Sep 17 00:00:00 2001 From: mcbarton Date: Thu, 6 Nov 2025 20:16:03 +0000 Subject: [PATCH 09/15] Update xeus-cpp-valgrind_x86.supp --- etc/xeus-cpp-valgrind_x86.supp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/etc/xeus-cpp-valgrind_x86.supp b/etc/xeus-cpp-valgrind_x86.supp index ca1fb6be..a1ee81de 100644 --- a/etc/xeus-cpp-valgrind_x86.supp +++ b/etc/xeus-cpp-valgrind_x86.supp @@ -16,3 +16,22 @@ fun:_ZN7doctest7Context3runEv fun:main } + +{ + Suppression 2 + Memcheck:Addr2 + fun:memmove + fun:copy + fun:_S_copy + fun:_S_copy_chars + fun:_S_copy_chars + fun:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIN9__gnu_cxx17__normal_iteratorIPKcS4_EEEEvT_SB_St20forward_iterator_tag.isra.0 + fun:basic_string<__gnu_cxx::__normal_iterator > > + fun:str + fun:operator std::__cxx11::sub_match<__gnu_cxx::__normal_iterator > >::string_type + fun:_ZN4xcpp11interpreter20inspect_request_implERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii + fun:_ZN4xeus12xinterpreter15inspect_requestERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii + fun:_ZN21DOCTEST_ANON_SUITE_11L20DOCTEST_ANON_FUNC_14Ev + fun:_ZN7doctest7Context3runEv + fun:main +} From ba5d60582d882a7f50f3a2598dd35ed96f838446 Mon Sep 17 00:00:00 2001 From: mcbarton Date: Thu, 6 Nov 2025 20:20:32 +0000 Subject: [PATCH 10/15] Update xeus-cpp-valgrind_x86.supp --- etc/xeus-cpp-valgrind_x86.supp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/etc/xeus-cpp-valgrind_x86.supp b/etc/xeus-cpp-valgrind_x86.supp index a1ee81de..fe796df0 100644 --- a/etc/xeus-cpp-valgrind_x86.supp +++ b/etc/xeus-cpp-valgrind_x86.supp @@ -35,3 +35,20 @@ fun:_ZN7doctest7Context3runEv fun:main } + +{ + Suppression 3 + Memcheck:Cond + fun:_ZN4llvm5APInt7setBitsEjj + fun:_ZL16computeKnownBitsPKN4llvm5ValueERKNS_5APIntERNS_9KnownBitsEjRKNS_13SimplifyQueryE + fun:_ZN4llvm16computeKnownBitsEPKNS_5ValueERNS_9KnownBitsERKNS_10DataLayoutEjPNS_15AssumptionCacheEPKNS_11InstructionEPKNS_13DominatorTreeEb + fun:_ZNK4llvm12SelectionDAG13InferPtrAlignENS_7SDValueE + fun:_ZN12_GLOBAL__N_111DAGCombiner9visitLOADEPN4llvm6SDNodeE + fun:_ZN12_GLOBAL__N_111DAGCombiner7combineEPN4llvm6SDNodeE + fun:_ZN4llvm12SelectionDAG7CombineENS_12CombineLevelEPNS_14BatchAAResultsENS_15CodeGenOptLevelE + fun:_ZN4llvm16SelectionDAGISel17CodeGenAndEmitDAGEv + fun:_ZN4llvm16SelectionDAGISel20SelectAllBasicBlocksERKNS_8FunctionE + fun:_ZN4llvm16SelectionDAGISel20runOnMachineFunctionERNS_15MachineFunctionE + fun:_ZN4llvm22SelectionDAGISelLegacy20runOnMachineFunctionERNS_15MachineFunctionE + fun:_ZN4llvm19MachineFunctionPass13runOnFunctionERNS_8FunctionE.part.0 +} From 06ec433e90be02049396e207173f1f47d7ab2c51 Mon Sep 17 00:00:00 2001 From: mcbarton Date: Thu, 6 Nov 2025 20:25:12 +0000 Subject: [PATCH 11/15] Update xeus-cpp-valgrind_x86.supp --- etc/xeus-cpp-valgrind_x86.supp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/etc/xeus-cpp-valgrind_x86.supp b/etc/xeus-cpp-valgrind_x86.supp index fe796df0..ca73ebdd 100644 --- a/etc/xeus-cpp-valgrind_x86.supp +++ b/etc/xeus-cpp-valgrind_x86.supp @@ -52,3 +52,22 @@ fun:_ZN4llvm22SelectionDAGISelLegacy20runOnMachineFunctionERNS_15MachineFunctionE fun:_ZN4llvm19MachineFunctionPass13runOnFunctionERNS_8FunctionE.part.0 } + +{ + Suppression 4 + Memcheck:Addr1 + fun:memmove + fun:copy + fun:_S_copy + fun:_S_copy_chars + fun:_S_copy_chars + fun:_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIN9__gnu_cxx17__normal_iteratorIPKcS4_EEEEvT_SB_St20forward_iterator_tag.isra.0 + fun:basic_string<__gnu_cxx::__normal_iterator > > + fun:str + fun:operator std::__cxx11::sub_match<__gnu_cxx::__normal_iterator > >::string_type + fun:_ZN4xcpp11interpreter20inspect_request_implERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii + fun:_ZN4xeus12xinterpreter15inspect_requestERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii + fun:_ZN21DOCTEST_ANON_SUITE_11L20DOCTEST_ANON_FUNC_14Ev + fun:_ZN7doctest7Context3runEv + fun:main +} From fe4705ef5efa237e0fb41593cfca27ace1b2e8ec Mon Sep 17 00:00:00 2001 From: mcbarton Date: Thu, 6 Nov 2025 20:40:07 +0000 Subject: [PATCH 12/15] Update xeus-cpp-valgrind_arm.supp --- etc/xeus-cpp-valgrind_arm.supp | 43 ++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/etc/xeus-cpp-valgrind_arm.supp b/etc/xeus-cpp-valgrind_arm.supp index e69de29b..fab92aa5 100644 --- a/etc/xeus-cpp-valgrind_arm.supp +++ b/etc/xeus-cpp-valgrind_arm.supp @@ -0,0 +1,43 @@ +{ + Suppression 1 + Memcheck:Addr8 + fun:__GI_memcpy + fun:_ZN4xcpp11interpreter20inspect_request_implERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii + fun:_ZN4xeus12xinterpreter15inspect_requestERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii + fun:_ZN21DOCTEST_ANON_SUITE_11L20DOCTEST_ANON_FUNC_14Ev + fun:_ZN7doctest7Context3runEv + fun:main +} + +{ + Suppression 2 + Memcheck:Addr2 + fun:__GI_memcpy + fun:_ZN4xcpp11interpreter20inspect_request_implERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii + fun:_ZN4xeus12xinterpreter15inspect_requestERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii + fun:_ZN21DOCTEST_ANON_SUITE_11L20DOCTEST_ANON_FUNC_14Ev + fun:_ZN7doctest7Context3runEv + fun:main +} + +{ + Suppression 3 + Memcheck:Overlap + fun:__GI_memcpy + fun:_ZN4xcpp11interpreter20inspect_request_implERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii + fun:_ZN4xeus12xinterpreter15inspect_requestERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii + fun:_ZN21DOCTEST_ANON_SUITE_11L20DOCTEST_ANON_FUNC_12Ev + fun:_ZN7doctest7Context3runEv + fun:main +} + +{ + Suppression 4 + Memcheck:Addr1 + fun:__GI_memcpy + fun:_ZN4xcpp11interpreter20inspect_request_implERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii + fun:_ZN4xeus12xinterpreter15inspect_requestERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEii + fun:_ZN21DOCTEST_ANON_SUITE_11L20DOCTEST_ANON_FUNC_14Ev + fun:_ZN7doctest7Context3runEv + fun:main +} From 90add1292d83efcc5fd72206b1de8b8b6fa97f56 Mon Sep 17 00:00:00 2001 From: mcbarton Date: Thu, 6 Nov 2025 20:59:59 +0000 Subject: [PATCH 13/15] Update main.yml --- .github/workflows/main.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 2f1c1af8..75c71840 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -141,8 +141,7 @@ jobs: make install -j ${{ env.ncpus }} make -j ${{ env.ncpus }} check-xeus-cpp if [[ "${{ matrix.os }}" != "macos"* && "${{ matrix.debug }}" == "on" ]]; then - sudo apt-get update - sudo apt-get install valgrind + micromamba install -c conda-forge valgrind if [[ "${{ matrix.os }}" == *"arm"* ]]; then SUPPRESSION_FILE="${{ github.workspace }}/etc/xeus-cpp-valgrind_arm.supp" else From 77ff62381fa1bc5c9142baf94574abe21938ba5a Mon Sep 17 00:00:00 2001 From: mcbarton Date: Thu, 6 Nov 2025 21:24:25 +0000 Subject: [PATCH 14/15] Update main.yml --- .github/workflows/main.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 75c71840..48c584bf 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -141,6 +141,8 @@ jobs: make install -j ${{ env.ncpus }} make -j ${{ env.ncpus }} check-xeus-cpp if [[ "${{ matrix.os }}" != "macos"* && "${{ matrix.debug }}" == "on" ]]; then + sudo apt update + sudo apt install libc6-dbg micromamba install -c conda-forge valgrind if [[ "${{ matrix.os }}" == *"arm"* ]]; then SUPPRESSION_FILE="${{ github.workspace }}/etc/xeus-cpp-valgrind_arm.supp" From f2f54a4a3c0f7fbdbd76f60367feba3db9bf5a60 Mon Sep 17 00:00:00 2001 From: mcbarton Date: Thu, 6 Nov 2025 21:59:56 +0000 Subject: [PATCH 15/15] Try Ubuntu 22.04 arm for Valgrind check --- .github/workflows/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 48c584bf..142929b6 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -41,8 +41,8 @@ jobs: - name: ubu22-arm os: ubuntu-22.04-arm micromamba_shell_init: bash - - name: ubu24-arm-valgrind - os: ubuntu-24.04-arm + - name: ubu22-arm-valgrind + os: ubuntu-22.04-arm debug: on micromamba_shell_init: bash - name: osx15-x86