From 7ef28e1e39b54fbb12151eeedd3053a7aa68e3ab Mon Sep 17 00:00:00 2001 From: mcbarton Date: Thu, 6 Nov 2025 17:11:14 +0000 Subject: [PATCH] Add Valgrind command ci Create xeus-cpp-valgrind.supp Generate Valgrind suppression file ci Update main.yml Update main.yml Update ci to only to Valgrind command for debug builds Update xeus-cpp-valgrind_x86.supp Update main.yml Update xeus-cpp-valgrind_x86.supp Update xeus-cpp-valgrind_x86.supp Update xeus-cpp-valgrind_x86.supp Update xeus-cpp-valgrind_arm.supp Update main.yml Update main.yml Try Ubuntu 22.04 arm for Valgrind check Update main.yml Update main.yml --- .github/workflows/deploy-github-page.yml | 178 ------------------- .github/workflows/main.yml | 211 ++++------------------- etc/xeus-cpp-valgrind_arm.supp | 43 +++++ etc/xeus-cpp-valgrind_x86.supp | 73 ++++++++ 4 files changed, 145 insertions(+), 360 deletions(-) delete mode 100644 .github/workflows/deploy-github-page.yml create mode 100644 etc/xeus-cpp-valgrind_arm.supp create mode 100644 etc/xeus-cpp-valgrind_x86.supp diff --git a/.github/workflows/deploy-github-page.yml b/.github/workflows/deploy-github-page.yml deleted file mode 100644 index 94c0894b..00000000 --- a/.github/workflows/deploy-github-page.yml +++ /dev/null @@ -1,178 +0,0 @@ -name: Build and Deploy - -on: - workflow_dispatch: - pull_request: - push: - branches: - - main - schedule: - - cron: '30 20 * * *' # Warning: Timezone dep - 20:00 is 1:00 - -permissions: - contents: read - pages: write - id-token: write - -jobs: - build: - runs-on: ${{ matrix.os }} - - strategy: - fail-fast: false - matrix: - include: - - name: Github-page - os: ubuntu-24.04 - - steps: - - uses: actions/checkout@v5 - with: - fetch-depth: 0 - - - name: install mamba - uses: mamba-org/setup-micromamba@main - with: - environment-file: environment-wasm-build.yml - init-shell: bash - environment-name: xeus-cpp-wasm-build - - - name: Setup default Build Type on *nux - if: ${{ runner.os != 'windows' }} - run: | - echo "ncpus=$(nproc --all)" >> $GITHUB_ENV - - - name: Build and test xeus-cpp in node, then install - shell: bash -l {0} - run: | - micromamba create -f environment-wasm-host.yml --platform=emscripten-wasm32 - - mkdir build - pushd build - - export BUILD_PREFIX=$MAMBA_ROOT_PREFIX/envs/xeus-cpp-wasm-build - echo "BUILD_PREFIX=$BUILD_PREFIX" >> $GITHUB_ENV - export PREFIX=$MAMBA_ROOT_PREFIX/envs/xeus-cpp-wasm-host - echo "PREFIX=$PREFIX" >> $GITHUB_ENV - export SYSROOT_PATH=$BUILD_PREFIX/opt/emsdk/upstream/emscripten/cache/sysroot - - emcmake cmake \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_INSTALL_PREFIX=$PREFIX \ - -DXEUS_CPP_EMSCRIPTEN_WASM_BUILD=ON \ - -DCMAKE_FIND_ROOT_PATH=$PREFIX \ - -DSYSROOT_PATH=$SYSROOT_PATH \ - -DCMAKE_COMPILE_WARNING_AS_ERROR=ON \ - .. - - micromamba create -n node-env -c conda-forge nodejs=22 - export PATH="$MAMBA_ROOT_PREFIX/envs/node-env/bin:$PATH" - - make check-xeus-cpp - emmake make -j ${{ env.ncpus }} install - - - name: Test Emscripten xeus-cpp in browser - shell: bash -l {0} - run: | - set -e - cd build/test - # Fresh install browsers, and run Emscripten tests in them - # This is to match the Emscripten build instructions, where - # we run in a fresh browser, to stop any extra installed - # stuff interferring with the running of the tests - # Explaination of options for emrun - # --browser (name of browser on path) - # --kill_exit makes it so that when emrun finishes, - # that the headless browser we create is killed along with it - # --timeout 60 is such that emrun is killed after 60 seconds if - # still running. emrun should have finished long before then, - # so if it is still running, something went wrong (such as a test - # which crashed the html file). This will cause the ci to fail, - # as a non 0 value of will be returned. - # In the case of Chrome we have the extra --no-sandbox flag, as on - # Ubuntu Chrome will refuse to run otherwise, as it expects to have - # been installed with admin privileges. This flag allows it to run - # in userspace. - os="${{ matrix.os }}" - if [[ "${os}" == "macos"* ]]; then - # Install Firefox - wget "https://download.mozilla.org/?product=firefox-latest&os=osx&lang=en-US" -O Firefox-latest.dmg - hdiutil attach Firefox-latest.dmg - cp -r /Volumes/Firefox/Firefox.app $PWD - hdiutil detach /Volumes/Firefox - cd ./Firefox.app/Contents/MacOS/ - export PATH="$PWD:$PATH" - cd – - - # Install Google Chrome - wget https://dl.google.com/chrome/mac/stable/accept_tos%3Dhttps%253A%252F%252Fwww.google.com%252Fintl%252Fen_ph%252Fchrome%252Fterms%252F%26_and_accept_tos%3Dhttps%253A%252F%252Fpolicies.google.com%252Fterms/googlechrome.pkg - pkgutil --expand-full googlechrome.pkg google-chrome - cd ./google-chrome/GoogleChrome.pkg/Payload/Google\ Chrome.app/Contents/MacOS/ - export PATH="$PWD:$PATH" - cd – - - # Run tests in browsers - echo "Running test_xeus_cpp in Firefox" - python ${{ env.BUILD_PREFIX }}/bin/emrun.py --browser="firefox" --kill_exit --browser-args="--headless" test_xeus_cpp.html - echo "Running test_xeus_cpp in Google Chrome" - python ${{ env.BUILD_PREFIX }}/bin/emrun.py --browser="Google Chrome" --kill_exit --browser-args="--headless" test_xeus_cpp.html - else - # Install Google Chrome - wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb - dpkg-deb -x google-chrome-stable_current_amd64.deb $PWD/chrome - cd ./chrome/opt/google/chrome/ - export PATH="$PWD:$PATH" - cd - - - # Install Firefox - wget https://ftp.mozilla.org/pub/firefox/releases/138.0.1/linux-x86_64/en-GB/firefox-138.0.1.tar.xz - tar -xJf firefox-138.0.1.tar.xz - cd ./firefox - export PATH="$PWD:$PATH" - cd - - - # Run tests in browsers - echo "Running test_xeus_cpp in Firefox" - python ${{ env.BUILD_PREFIX }}/bin/emrun.py --browser="firefox" --kill_exit --timeout 60 --browser-args="--headless" test_xeus_cpp.html - echo "Running test_xeus_cpp in Google Chrome" - python ${{ env.BUILD_PREFIX }}/bin/emrun.py --browser="google-chrome" --kill_exit --timeout 60 --browser-args="--headless --no-sandbox" test_xeus_cpp.html - fi - timeout-minutes: 4 - - - name: Jupyter Lite integration - shell: bash -l {0} - run: | - micromamba create -n xeus-lite-host jupyterlite-core=0.6 jupyter_server jupyterlite-xeus -c conda-forge - micromamba activate xeus-lite-host - jupyter lite build \ - --XeusAddon.prefix=${{ env.PREFIX }} \ - --XeusAddon.mounts="${{ env.PREFIX }}/share/xeus-cpp/tagfiles:/share/xeus-cpp/tagfiles" \ - --XeusAddon.mounts="${{ env.PREFIX }}/etc/xeus-cpp/tags.d:/etc/xeus-cpp/tags.d" \ - --contents README.md \ - --contents notebooks/xeus-cpp-lite-demo.ipynb \ - --contents notebooks/smallpt.ipynb \ - --contents notebooks/images/marie.png \ - --contents notebooks/audio/audio.wav \ - --output-dir dist - - - name: Upload artifact - uses: actions/upload-pages-artifact@v3 - with: - path: ./dist - - deploy: - needs: build - if: github.ref == 'refs/heads/main' - permissions: - pages: write - id-token: write - - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} - - runs-on: ubuntu-24.04 - steps: - - name: Deploy to GitHub Pages - id: deployment - uses: actions/deploy-pages@v4 diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 3a4a1689..39b2fdad 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -24,41 +24,14 @@ jobs: fail-fast: false matrix: include: - - name: ubu24 - os: ubuntu-24.04 - micromamba_shell_init: bash - - name: ubu24-arm - os: ubuntu-24.04-arm - micromamba_shell_init: bash - name: ubu24-analyzers os: ubuntu-24.04 - coverage: true - extra_cmake_flags: -DCMAKE_BUILD_TYPE=Debug - micromamba_shell_init: bash - - name: ubu22 - os: ubuntu-22.04 - micromamba_shell_init: bash - - name: ubu22-arm - os: ubuntu-22.04-arm - micromamba_shell_init: bash - - name: osx15-x86 - os: macos-15-intel - micromamba_shell_init: bash - - name: osx14-arm - os: macos-14 - micromamba_shell_init: bash - - name: osx15-arm - os: macos-15 + debug: on micromamba_shell_init: bash - - name: osx26-arm - os: macos-26 + - name: ubu24-arm-valgrind + os: ubuntu-24.04-arm + debug: on micromamba_shell_init: bash - - name: Windows22 - os: windows-2022 - micromamba_shell_init: cmd.exe - - name: Windows25 - os: windows-2025 - micromamba_shell_init: cmd.exe steps: - uses: actions/checkout@v5 @@ -77,6 +50,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 +90,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,6 +109,27 @@ jobs: cd build 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 + git clone https://sourceware.org/git/valgrind.git + cd valgrind + ./autogen.sh + ./configure + make -j$(nproc) + sudo make install + valgrind --version + 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 \ + --suppressions="${SUPPRESSION_FILE}" \ + test/test_xeus_cpp + fi - name: Python tests Unix Systems if: ${{ runner.os != 'windows' }} @@ -178,153 +175,3 @@ jobs: uses: mxschmitt/action-tmate@v3 # When debugging increase to a suitable value! timeout-minutes: 30 - - emscripten_wasm: - - runs-on: ${{ matrix.os }} - - strategy: - fail-fast: false - matrix: - include: - - name: ubu24 - os: ubuntu-24.04 - - name: osx15-arm - os: macos-15 - - steps: - - uses: actions/checkout@v5 - with: - fetch-depth: 0 - - - name: install mamba - uses: mamba-org/setup-micromamba@main - with: - environment-file: environment-wasm-build.yml - init-shell: bash - environment-name: xeus-cpp-wasm-build - - - name: Setup default Build Type on *nux - if: ${{ runner.os != 'windows' }} - run: | - os="${{ matrix.os }}" - if [[ "${os}" == "macos"* ]]; then - echo "ncpus=$(sysctl -n hw.ncpu)" >> $GITHUB_ENV - else - echo "ncpus=$(nproc --all)" >> $GITHUB_ENV - fi - - - name: Build and test xeus-cpp in node, then install - shell: bash -l {0} - run: | - micromamba create -f environment-wasm-host.yml --platform=emscripten-wasm32 - - mkdir build - pushd build - - export BUILD_PREFIX=$MAMBA_ROOT_PREFIX/envs/xeus-cpp-wasm-build - echo "BUILD_PREFIX=$BUILD_PREFIX" >> $GITHUB_ENV - export PREFIX=$MAMBA_ROOT_PREFIX/envs/xeus-cpp-wasm-host - echo "PREFIX=$PREFIX" >> $GITHUB_ENV - export SYSROOT_PATH=$BUILD_PREFIX/opt/emsdk/upstream/emscripten/cache/sysroot - - emcmake cmake \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_INSTALL_PREFIX=$PREFIX \ - -DXEUS_CPP_EMSCRIPTEN_WASM_BUILD=ON \ - -DCMAKE_FIND_ROOT_PATH=$PREFIX \ - -DSYSROOT_PATH=$SYSROOT_PATH \ - -DCMAKE_COMPILE_WARNING_AS_ERROR=ON \ - .. - - micromamba create -n node-env -c conda-forge nodejs=22 - export PATH="$MAMBA_ROOT_PREFIX/envs/node-env/bin:$PATH" - - make check-xeus-cpp - emmake make -j ${{ env.ncpus }} install - - - name: Test Emscripten xeus-cpp in browser - shell: bash -l {0} - run: | - set -e - cd build/test - # Fresh install browsers, and run Emscripten tests in them - # This is to match the Emscripten build instructions, where - # we run in a fresh browser, to stop any extra installed - # stuff interferring with the running of the tests - # Explaination of options for emrun - # --browser (name of browser on path) - # --kill_exit makes it so that when emrun finishes, - # that the headless browser we create is killed along with it - # --timeout 60 is such that emrun is killed after 60 seconds if - # still running. emrun should have finished long before then, - # so if it is still running, something went wrong (such as a test - # which crashed the html file). This will cause the ci to fail, - # as a non 0 value of will be returned. - # In the case of Chrome we have the extra --no-sandbox flag, as on - # Ubuntu Chrome will refuse to run otherwise, as it expects to have - # been installed with admin privileges. This flag allows it to run - # in userspace. - os="${{ matrix.os }}" - if [[ "${os}" == "macos"* ]]; then - # Install Firefox - wget "https://download.mozilla.org/?product=firefox-latest&os=osx&lang=en-US" -O Firefox-latest.dmg - hdiutil attach Firefox-latest.dmg - cp -r /Volumes/Firefox/Firefox.app $PWD - hdiutil detach /Volumes/Firefox - cd ./Firefox.app/Contents/MacOS/ - export PATH="$PWD:$PATH" - cd - - - # Install Google Chrome - wget https://dl.google.com/chrome/mac/stable/accept_tos%3Dhttps%253A%252F%252Fwww.google.com%252Fintl%252Fen_ph%252Fchrome%252Fterms%252F%26_and_accept_tos%3Dhttps%253A%252F%252Fpolicies.google.com%252Fterms/googlechrome.pkg - pkgutil --expand-full googlechrome.pkg google-chrome - cd ./google-chrome/GoogleChrome.pkg/Payload/Google\ Chrome.app/Contents/MacOS/ - export PATH="$PWD:$PATH" - cd - - - # Run tests in browsers - echo "Running test_xeus_cpp in Firefox" - python ${{ env.BUILD_PREFIX }}/bin/emrun.py --browser="firefox" --kill_exit --timeout 60 --browser-args="--headless" test_xeus_cpp.html - echo "Running test_xeus_cpp in Google Chrome" - python ${{ env.BUILD_PREFIX }}/bin/emrun.py --browser="Google Chrome" --kill_exit --timeout 60 --browser-args="--headless --no-sandbox" test_xeus_cpp.html - sudo safaridriver --enable - python -m pip install selenium - echo "Running test_xeus_cpp in Safari" - python ${{ env.BUILD_PREFIX }}/bin/emrun.py --no_browser --kill_exit --timeout 60 --browser-args="--headless --no-sandbox" test_xeus_cpp.html & - python ../../scripts/browser_tests_safari.py test_xeus_cpp.html - else - # Install Google Chrome - wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb - dpkg-deb -x google-chrome-stable_current_amd64.deb $PWD/chrome - cd ./chrome/opt/google/chrome/ - export PATH="$PWD:$PATH" - cd - - - # Install Firefox - wget https://ftp.mozilla.org/pub/firefox/releases/138.0.1/linux-x86_64/en-GB/firefox-138.0.1.tar.xz - tar -xJf firefox-138.0.1.tar.xz - cd ./firefox - export PATH="$PWD:$PATH" - cd - - - # Run tests in browsers - echo "Running test_xeus_cpp in Firefox" - python ${{ env.BUILD_PREFIX }}/bin/emrun.py --browser="firefox" --kill_exit --timeout 60 --browser-args="--headless" test_xeus_cpp.html - echo "Running test_xeus_cpp in Google Chrome" - python ${{ env.BUILD_PREFIX }}/bin/emrun.py --browser="google-chrome" --kill_exit --timeout 60 --browser-args="--headless --no-sandbox" test_xeus_cpp.html - fi - timeout-minutes: 4 - - - name: Jupyter Lite integration - shell: bash -l {0} - run: | - micromamba create -n xeus-lite-host jupyterlite-core=0.6 jupyterlite-xeus -c conda-forge - micromamba activate xeus-lite-host - jupyter lite build --XeusAddon.prefix=${{ env.PREFIX }} - - - name: Setup tmate session - if: ${{ failure() && runner.debug }} - uses: mxschmitt/action-tmate@v3 - # When debugging increase to a suitable value! - timeout-minutes: 30 diff --git a/etc/xeus-cpp-valgrind_arm.supp b/etc/xeus-cpp-valgrind_arm.supp new file mode 100644 index 00000000..fab92aa5 --- /dev/null +++ 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 +} diff --git a/etc/xeus-cpp-valgrind_x86.supp b/etc/xeus-cpp-valgrind_x86.supp new file mode 100644 index 00000000..ca73ebdd --- /dev/null +++ b/etc/xeus-cpp-valgrind_x86.supp @@ -0,0 +1,73 @@ +{ + 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 +} + +{ + 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 +} + +{ + 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 +} + +{ + 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 +}