From 0fed8d79e6206f3b89ad4700eefa2f91b62eb50d Mon Sep 17 00:00:00 2001 From: Matthew Yacavone Date: Mon, 14 Aug 2023 18:11:30 -0400 Subject: [PATCH 01/33] first try at turning on solver caching for intTests and s2nTests in CI --- .github/workflows/ci.yml | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 57f7d3454d..1293a363c1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,6 +17,7 @@ on: env: CACHE_VERSION: 1 + SOLVER_CACHE_VERSION: 1 DISABLED_TESTS: "test0000 test_FNV_a1_rev test0010_jss_cnf_exp test0039_rust test_boilerplate test_external_abc" # Solver package snapshot date - also update in the following locations: @@ -421,13 +422,30 @@ jobs: java-package: jdk architecture: x64 + - uses: actions/cache/restore@v3 + name: Restore SMT solver result cache + with: + path: ${{ matrix.suite }}.cache + key: ${{ env.SOLVER_CACHE_VERSION }}-solver-${{ matrix.suite }}-${{ matrix.os }}-${{ matrix.ghc }}-${{ github.sha }} + restore-keys: | + ${{ env.SOLVER_CACHE_VERSION }}-solver-${{ matrix.suite }}-${{ matrix.os }}-${{ matrix.ghc }}- + - name: ${{ matrix.suite }} continue-on-error: ${{ matrix.continue-on-error }} shell: bash run: | + export SAW_SOLVER_CACHE_PATH=${{ matrix.suite }}.cache export PATH="$PWD/bin:$PWD/dist/bin:$PATH" dist-tests/${{ matrix.suite }} + - uses: actions/cache/save@v3 + name: Save SMT solver result cache + if: always() + with: + path: ${{ matrix.suite }}.cache + key: ${{ env.SOLVER_CACHE_VERSION }}-solver-${{ matrix.suite }}-${{ matrix.os }}-${{ matrix.ghc }}-${{ github.sha }} + ${{ env.SOLVER_CACHE_VERSION }}-solver-${{ matrix.suite }}-${{ matrix.os }}-${{ matrix.ghc }}- + build-push-image: runs-on: ubuntu-22.04 needs: [config] @@ -567,13 +585,30 @@ jobs: working-directory: s2nTests run: docker-compose build s2n + - uses: actions/cache/restore@v3 + name: Restore SMT solver result cache + with: + path: s2n-${{ matrix.s2n-target }}.cache + key: ${{ env.SOLVER_CACHE_VERSION }}-solver-s2n-${{ matrix.s2n-target }}-${{ matrix.os }}-${{ matrix.ghc }}-${{ github.sha }} + restore-keys: | + ${{ env.SOLVER_CACHE_VERSION }}-solver-s2n-${{ matrix.s2n-target }}-${{ matrix.os }}-${{ matrix.ghc }}- + - shell: bash name: "s2n tests: ${{ matrix.s2n-target }}" working-directory: s2nTests run: | chmod +x bin/* + export SAW_SOLVER_CACHE_PATH=s2n.cache make ${{ matrix.s2n-target }} + - uses: actions/cache/save@v3 + name: Save SMT solver result cache + if: always() + with: + path: s2n-${{ matrix.s2n-target }}.cache + key: ${{ env.SOLVER_CACHE_VERSION }}-solver-s2n-${{ matrix.s2n-target }}-${{ matrix.os }}-${{ matrix.ghc }}-${{ github.sha }} + ${{ env.SOLVER_CACHE_VERSION }}-solver-s2n-${{ matrix.s2n-target }}-${{ matrix.os }}-${{ matrix.ghc }}- + exercises: name: "Test SAW exercises" needs: build From 7fdbd5f54d2f92b100b5e7db5c0a7ec4c436f59e Mon Sep 17 00:00:00 2001 From: Matthew Yacavone Date: Mon, 14 Aug 2023 20:28:26 -0400 Subject: [PATCH 02/33] add intTest which tests whether solver caching is even enabled --- intTests/DELETE_ME_CI_test/test.sh | 1 + intTests/DELETE_ME_CI_test/test_solver_cache_enabled.saw | 4 ++++ 2 files changed, 5 insertions(+) create mode 100644 intTests/DELETE_ME_CI_test/test.sh create mode 100644 intTests/DELETE_ME_CI_test/test_solver_cache_enabled.saw diff --git a/intTests/DELETE_ME_CI_test/test.sh b/intTests/DELETE_ME_CI_test/test.sh new file mode 100644 index 0000000000..c95bdfea38 --- /dev/null +++ b/intTests/DELETE_ME_CI_test/test.sh @@ -0,0 +1 @@ +$SAW test_solver_cache_enabled.saw \ No newline at end of file diff --git a/intTests/DELETE_ME_CI_test/test_solver_cache_enabled.saw b/intTests/DELETE_ME_CI_test/test_solver_cache_enabled.saw new file mode 100644 index 0000000000..1c928ef147 --- /dev/null +++ b/intTests/DELETE_ME_CI_test/test_solver_cache_enabled.saw @@ -0,0 +1,4 @@ +test_solver_cache_stats 0 0 0 0 0; +prove_print z3 {{ \(x:[64]) -> x == x }}; +test_solver_cache_stats 1 0 0 1 0; +print_solver_cache_stats; \ No newline at end of file From 9be89d0c31f4f58fa97934a020d44914453d16aa Mon Sep 17 00:00:00 2001 From: Matthew Yacavone Date: Mon, 14 Aug 2023 20:33:16 -0400 Subject: [PATCH 03/33] use absolute paths for solver caching on CI --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1293a363c1..4ccd66191a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -434,7 +434,7 @@ jobs: continue-on-error: ${{ matrix.continue-on-error }} shell: bash run: | - export SAW_SOLVER_CACHE_PATH=${{ matrix.suite }}.cache + export SAW_SOLVER_CACHE_PATH="$(pwd)/${{ matrix.suite }}.cache" export PATH="$PWD/bin:$PWD/dist/bin:$PATH" dist-tests/${{ matrix.suite }} @@ -598,7 +598,7 @@ jobs: working-directory: s2nTests run: | chmod +x bin/* - export SAW_SOLVER_CACHE_PATH=s2n.cache + export SAW_SOLVER_CACHE_PATH="$(pwd)/s2n-${{ matrix.s2n-target }}.cache" make ${{ matrix.s2n-target }} - uses: actions/cache/save@v3 From ba87f71e71c4202bb7da5fb92b32544c3cb53508 Mon Sep 17 00:00:00 2001 From: Matthew Yacavone Date: Mon, 14 Aug 2023 22:33:09 -0400 Subject: [PATCH 04/33] fix dummy CI test file so it actually runs --- intTests/{DELETE_ME_CI_test => test_DELETE_ME}/test.sh | 0 .../test_solver_cache_enabled.saw | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename intTests/{DELETE_ME_CI_test => test_DELETE_ME}/test.sh (100%) rename intTests/{DELETE_ME_CI_test => test_DELETE_ME}/test_solver_cache_enabled.saw (100%) diff --git a/intTests/DELETE_ME_CI_test/test.sh b/intTests/test_DELETE_ME/test.sh similarity index 100% rename from intTests/DELETE_ME_CI_test/test.sh rename to intTests/test_DELETE_ME/test.sh diff --git a/intTests/DELETE_ME_CI_test/test_solver_cache_enabled.saw b/intTests/test_DELETE_ME/test_solver_cache_enabled.saw similarity index 100% rename from intTests/DELETE_ME_CI_test/test_solver_cache_enabled.saw rename to intTests/test_DELETE_ME/test_solver_cache_enabled.saw From d68652aa599adaf4c7cacefb45610996ee6b7afe Mon Sep 17 00:00:00 2001 From: Matthew Yacavone Date: Tue, 15 Aug 2023 08:18:49 -0400 Subject: [PATCH 05/33] properly set SAW_SOLVER_CACHE_PATH env var in CI --- .github/workflows/ci.yml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4ccd66191a..ba47f5b4c9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -430,11 +430,14 @@ jobs: restore-keys: | ${{ env.SOLVER_CACHE_VERSION }}-solver-${{ matrix.suite }}-${{ matrix.os }}-${{ matrix.ghc }}- + - shell: bash + name: Enable solver caching + run: echo "SAW_SOLVER_CACHE_PATH=$(pwd)/${{ matrix.suite }}.cache" >> "$GITHUB_ENV" + - name: ${{ matrix.suite }} continue-on-error: ${{ matrix.continue-on-error }} shell: bash run: | - export SAW_SOLVER_CACHE_PATH="$(pwd)/${{ matrix.suite }}.cache" export PATH="$PWD/bin:$PWD/dist/bin:$PATH" dist-tests/${{ matrix.suite }} @@ -593,12 +596,15 @@ jobs: restore-keys: | ${{ env.SOLVER_CACHE_VERSION }}-solver-s2n-${{ matrix.s2n-target }}-${{ matrix.os }}-${{ matrix.ghc }}- + - shell: bash + name: Enable solver caching + run: echo "SAW_SOLVER_CACHE_PATH=$(pwd)/${{ matrix.suite }}.cache" >> "$GITHUB_ENV" + - shell: bash name: "s2n tests: ${{ matrix.s2n-target }}" working-directory: s2nTests run: | chmod +x bin/* - export SAW_SOLVER_CACHE_PATH="$(pwd)/s2n-${{ matrix.s2n-target }}.cache" make ${{ matrix.s2n-target }} - uses: actions/cache/save@v3 From c70698647f530be85f58d5acea53411128db94c6 Mon Sep 17 00:00:00 2001 From: Matthew Yacavone Date: Tue, 15 Aug 2023 11:26:17 -0400 Subject: [PATCH 06/33] another attempt at setting SAW_SOLVER_CACHE_PATH on CI --- .github/workflows/ci.yml | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ba47f5b4c9..3357d0db3e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -430,16 +430,12 @@ jobs: restore-keys: | ${{ env.SOLVER_CACHE_VERSION }}-solver-${{ matrix.suite }}-${{ matrix.os }}-${{ matrix.ghc }}- - - shell: bash - name: Enable solver caching - run: echo "SAW_SOLVER_CACHE_PATH=$(pwd)/${{ matrix.suite }}.cache" >> "$GITHUB_ENV" - - name: ${{ matrix.suite }} continue-on-error: ${{ matrix.continue-on-error }} shell: bash run: | export PATH="$PWD/bin:$PWD/dist/bin:$PATH" - dist-tests/${{ matrix.suite }} + SAW_SOLVER_CACHE_PATH="$(pwd)/${{ matrix.suite }}.cache" dist-tests/${{ matrix.suite }} - uses: actions/cache/save@v3 name: Save SMT solver result cache @@ -596,16 +592,12 @@ jobs: restore-keys: | ${{ env.SOLVER_CACHE_VERSION }}-solver-s2n-${{ matrix.s2n-target }}-${{ matrix.os }}-${{ matrix.ghc }}- - - shell: bash - name: Enable solver caching - run: echo "SAW_SOLVER_CACHE_PATH=$(pwd)/${{ matrix.suite }}.cache" >> "$GITHUB_ENV" - - shell: bash name: "s2n tests: ${{ matrix.s2n-target }}" working-directory: s2nTests run: | chmod +x bin/* - make ${{ matrix.s2n-target }} + SAW_SOLVER_CACHE_PATH="$(pwd)/s2n-${{ matrix.suite }}.cache" make ${{ matrix.s2n-target }} - uses: actions/cache/save@v3 name: Save SMT solver result cache From 6f76bea5c9a4594015d52fbaf9b478c0d2b1d98d Mon Sep 17 00:00:00 2001 From: Matthew Yacavone Date: Tue, 15 Aug 2023 14:48:24 -0400 Subject: [PATCH 07/33] use github.ref instead of .sha for caching in CI, fix repeated key bug(?) --- .github/workflows/ci.yml | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3357d0db3e..0f20fd123c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -120,9 +120,8 @@ jobs: path: | ${{ steps.setup-haskell.outputs.cabal-store }} dist-newstyle - key: ${{ env.CACHE_VERSION }}-cabal-${{ matrix.os }}-${{ matrix.ghc }}-${{ hashFiles(format('cabal.GHC-{0}.config', matrix.ghc)) }}-${{ github.sha }} - restore-keys: | - ${{ env.CACHE_VERSION }}-cabal-${{ matrix.os }}-${{ matrix.ghc }}-${{ hashFiles(format('cabal.GHC-{0}.config', matrix.ghc)) }}- + key: ${{ env.CACHE_VERSION }}-cabal-${{ matrix.os }}-${{ matrix.ghc }}-${{ hashFiles(format('cabal.GHC-{0}.config', matrix.ghc)) }}-${{ github.ref }} + restore-keys: ${{ env.CACHE_VERSION }}-cabal-${{ matrix.os }}-${{ matrix.ghc }}-${{ hashFiles(format('cabal.GHC-{0}.config', matrix.ghc)) }}- - if: needs.config.outputs.release == 'true' shell: bash @@ -212,8 +211,7 @@ jobs: path: | ${{ steps.setup-haskell.outputs.cabal-store }} dist-newstyle - key: ${{ env.CACHE_VERSION }}-cabal-${{ matrix.os }}-${{ matrix.ghc }}-${{ hashFiles(format('cabal.GHC-{0}.config', matrix.ghc)) }}-${{ github.sha }} - ${{ env.CACHE_VERSION }}-cabal-${{ matrix.os }}-${{ matrix.ghc }}-${{ hashFiles(format('cabal.GHC-{0}.config', matrix.ghc)) }}- + key: ${{ env.CACHE_VERSION }}-cabal-${{ matrix.os }}-${{ matrix.ghc }}-${{ hashFiles(format('cabal.GHC-{0}.config', matrix.ghc)) }}-${{ github.ref }} mr-solver-tests: needs: [build] @@ -426,9 +424,8 @@ jobs: name: Restore SMT solver result cache with: path: ${{ matrix.suite }}.cache - key: ${{ env.SOLVER_CACHE_VERSION }}-solver-${{ matrix.suite }}-${{ matrix.os }}-${{ matrix.ghc }}-${{ github.sha }} - restore-keys: | - ${{ env.SOLVER_CACHE_VERSION }}-solver-${{ matrix.suite }}-${{ matrix.os }}-${{ matrix.ghc }}- + key: ${{ env.SOLVER_CACHE_VERSION }}-solver-${{ matrix.suite }}-${{ matrix.os }}-${{ matrix.ghc }}-${{ github.ref }} + restore-keys: ${{ env.SOLVER_CACHE_VERSION }}-solver-${{ matrix.suite }}-${{ matrix.os }}-${{ matrix.ghc }}- - name: ${{ matrix.suite }} continue-on-error: ${{ matrix.continue-on-error }} @@ -442,8 +439,7 @@ jobs: if: always() with: path: ${{ matrix.suite }}.cache - key: ${{ env.SOLVER_CACHE_VERSION }}-solver-${{ matrix.suite }}-${{ matrix.os }}-${{ matrix.ghc }}-${{ github.sha }} - ${{ env.SOLVER_CACHE_VERSION }}-solver-${{ matrix.suite }}-${{ matrix.os }}-${{ matrix.ghc }}- + key: ${{ env.SOLVER_CACHE_VERSION }}-solver-${{ matrix.suite }}-${{ matrix.os }}-${{ matrix.ghc }}-${{ github.ref }} build-push-image: runs-on: ubuntu-22.04 @@ -588,9 +584,8 @@ jobs: name: Restore SMT solver result cache with: path: s2n-${{ matrix.s2n-target }}.cache - key: ${{ env.SOLVER_CACHE_VERSION }}-solver-s2n-${{ matrix.s2n-target }}-${{ matrix.os }}-${{ matrix.ghc }}-${{ github.sha }} - restore-keys: | - ${{ env.SOLVER_CACHE_VERSION }}-solver-s2n-${{ matrix.s2n-target }}-${{ matrix.os }}-${{ matrix.ghc }}- + key: ${{ env.SOLVER_CACHE_VERSION }}-solver-s2n-${{ matrix.s2n-target }}-${{ matrix.os }}-${{ matrix.ghc }}-${{ github.ref }} + restore-keys: ${{ env.SOLVER_CACHE_VERSION }}-solver-s2n-${{ matrix.s2n-target }}-${{ matrix.os }}-${{ matrix.ghc }}- - shell: bash name: "s2n tests: ${{ matrix.s2n-target }}" @@ -604,7 +599,7 @@ jobs: if: always() with: path: s2n-${{ matrix.s2n-target }}.cache - key: ${{ env.SOLVER_CACHE_VERSION }}-solver-s2n-${{ matrix.s2n-target }}-${{ matrix.os }}-${{ matrix.ghc }}-${{ github.sha }} + key: ${{ env.SOLVER_CACHE_VERSION }}-solver-s2n-${{ matrix.s2n-target }}-${{ matrix.os }}-${{ matrix.ghc }}-${{ github.ref }} ${{ env.SOLVER_CACHE_VERSION }}-solver-s2n-${{ matrix.s2n-target }}-${{ matrix.os }}-${{ matrix.ghc }}- exercises: From 19930136389bf0650725cd24fd90b03d058e9d09 Mon Sep 17 00:00:00 2001 From: Matthew Yacavone Date: Tue, 15 Aug 2023 15:02:23 -0400 Subject: [PATCH 08/33] make integration tests aware of SAW_SOLVER_CACHE_PATH env var --- .github/workflows/ci.yml | 3 ++- intTests/IntegrationTest.hs | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0f20fd123c..64061b00c3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -432,7 +432,8 @@ jobs: shell: bash run: | export PATH="$PWD/bin:$PWD/dist/bin:$PATH" - SAW_SOLVER_CACHE_PATH="$(pwd)/${{ matrix.suite }}.cache" dist-tests/${{ matrix.suite }} + export SAW_SOLVER_CACHE_PATH="$PWD/${{ matrix-suite }}.cache" + dist-tests/${{ matrix.suite }} - uses: actions/cache/save@v3 name: Save SMT solver result cache diff --git a/intTests/IntegrationTest.hs b/intTests/IntegrationTest.hs index 8d3ebaf197..d997e124fe 100644 --- a/intTests/IntegrationTest.hs +++ b/intTests/IntegrationTest.hs @@ -89,6 +89,7 @@ envVarAssocList = map envVarAssoc -- - JAVA_HOME = path to java installation -- - TESTBASE = path to intTests directory -- - SAW_JDK_JAR = path to rt.jar +-- - SAW_SOLVER_CACHE_PATH = optional path to solver result cache -- -- These environment variables may already be set to supply default -- locations for these components. @@ -132,7 +133,8 @@ testParams intTestBase verbose = do addEnvVar evs e = do v <- lookupEnv e return $ updEnvVars e (fromMaybe "" v) evs -- override eVars0 with any environment variables set in this process - e1 <- foldM addEnvVar eVars0 [ "SAW", "PATH", "JAVAC", "JAVA_HOME", "SAW_JDK_JAR" ] + e1 <- foldM addEnvVar eVars0 [ "SAW", "PATH", "SAW_SOLVER_CACHE_PATH", + "JAVAC", "JAVA_HOME", "SAW_JDK_JAR" ] -- Create a pathlist of jars for invoking saw let jarsDir = absTestBase "jars" From 9e5941ec8ffe462e72a3baf7ede8168ab0faa97f Mon Sep 17 00:00:00 2001 From: Matthew Yacavone Date: Tue, 15 Aug 2023 15:30:27 -0400 Subject: [PATCH 09/33] enable solver caching for s2n tests; fix typo in ci.yml --- .github/workflows/ci.yml | 5 ++--- s2nTests/Makefile | 16 ++++++++-------- s2nTests/scripts/awslc-entrypoint.sh | 1 + s2nTests/scripts/blst-entrypoint.sh | 1 + s2nTests/scripts/s2n-entrypoint.sh | 1 + 5 files changed, 13 insertions(+), 11 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 64061b00c3..a392325832 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -432,7 +432,7 @@ jobs: shell: bash run: | export PATH="$PWD/bin:$PWD/dist/bin:$PATH" - export SAW_SOLVER_CACHE_PATH="$PWD/${{ matrix-suite }}.cache" + export SAW_SOLVER_CACHE_PATH="$PWD/${{ matrix.suite }}.cache" dist-tests/${{ matrix.suite }} - uses: actions/cache/save@v3 @@ -593,7 +593,7 @@ jobs: working-directory: s2nTests run: | chmod +x bin/* - SAW_SOLVER_CACHE_PATH="$(pwd)/s2n-${{ matrix.suite }}.cache" make ${{ matrix.s2n-target }} + make ${{ matrix.s2n-target }} - uses: actions/cache/save@v3 name: Save SMT solver result cache @@ -601,7 +601,6 @@ jobs: with: path: s2n-${{ matrix.s2n-target }}.cache key: ${{ env.SOLVER_CACHE_VERSION }}-solver-s2n-${{ matrix.s2n-target }}-${{ matrix.os }}-${{ matrix.ghc }}-${{ github.ref }} - ${{ env.SOLVER_CACHE_VERSION }}-solver-s2n-${{ matrix.s2n-target }}-${{ matrix.os }}-${{ matrix.ghc }}- exercises: name: "Test SAW exercises" diff --git a/s2nTests/Makefile b/s2nTests/Makefile index 2e5912d39e..f1cfc80af1 100644 --- a/s2nTests/Makefile +++ b/s2nTests/Makefile @@ -7,24 +7,24 @@ saw-script: s2n: docker-compose build s2n hmac: s2n - docker-compose run s2n sawHMAC + docker-compose run -v ./s2n-hmac.cache:/s2n.cache s2n sawHMAC drbg: s2n - docker-compose run s2n sawDRBG + docker-compose run -v ./s2n-drbg.cache:/s2n.cache s2n sawDRBG sike: s2n - docker-compose run s2n sawSIKE + docker-compose run -v ./s2n-sike.cache:/s2n.cache s2n sawSIKE bike: s2n - docker-compose run s2n sawBIKE openssl-1.0.2 + docker-compose run -v ./s2n-bike.cache:/s2n.cache s2n sawBIKE openssl-1.0.2 tls: s2n - docker-compose run s2n tls + docker-compose run -v ./s2n-tls.cache:/s2n.cache s2n tls hmac-failure: s2n - docker-compose run s2n sawHMACFailure + docker-compose run -v ./s2n-hmac-failure.cache:/s2n.cache s2n sawHMACFailure awslc-container: docker-compose build awslc awslc: awslc-container - docker-compose run awslc + docker-compose run -v ./s2n-awslc.cache:/awslc.cache awslc blst-container: docker-compose build blst blst: blst-container - docker-compose run blst + docker-compose run -v ./s2n-blst.cache:/blst.cache blst diff --git a/s2nTests/scripts/awslc-entrypoint.sh b/s2nTests/scripts/awslc-entrypoint.sh index 87aa7ccf72..7bf4b58144 100755 --- a/s2nTests/scripts/awslc-entrypoint.sh +++ b/s2nTests/scripts/awslc-entrypoint.sh @@ -13,6 +13,7 @@ cp /saw-bin/z3-4.8.8 bin/z3 export PATH=/saw-script/aws-lc-verification/SAW/bin:$PATH export CRYPTOLPATH=/saw-script/aws-lc-verification/cryptol-specs +export SAW_SOLVER_CACHE_PATH=/awslc.cache ./scripts/entrypoint_check.sh diff --git a/s2nTests/scripts/blst-entrypoint.sh b/s2nTests/scripts/blst-entrypoint.sh index 3d8ed77817..dbc3813f25 100755 --- a/s2nTests/scripts/blst-entrypoint.sh +++ b/s2nTests/scripts/blst-entrypoint.sh @@ -13,6 +13,7 @@ cp /saw-bin/z3-4.8.8 bin/z3 export PATH=/workdir/bin:$PATH export CRYPTOLPATH=/workdir/cryptol-specs:/workdir/spec +export SAW_SOLVER_CACHE_PATH=/blst.cache abc -h || true z3 --version diff --git a/s2nTests/scripts/s2n-entrypoint.sh b/s2nTests/scripts/s2n-entrypoint.sh index 5680df62ab..d60a4f16b8 100755 --- a/s2nTests/scripts/s2n-entrypoint.sh +++ b/s2nTests/scripts/s2n-entrypoint.sh @@ -9,6 +9,7 @@ fi cd /saw-script/s2n echo 'JOBS=1' >> codebuild/bin/jobs.sh source codebuild/bin/s2n_setup_env.sh +export SAW_SOLVER_CACHE_PATH=/s2n.cache SAW=true SAW_INSTALL_DIR=tmp-saw ./codebuild/bin/install_default_dependencies.sh cp /saw-bin/saw "$SAW_INSTALL_DIR"/bin/saw cp /saw-bin/abc "$SAW_INSTALL_DIR"/bin/abc From 38b97b04175366babd46a95a635ad997716752c2 Mon Sep 17 00:00:00 2001 From: Matthew Yacavone Date: Tue, 15 Aug 2023 17:24:26 -0400 Subject: [PATCH 10/33] clean up solver caching bits in ci.yml, add debugging to blst --- .github/workflows/ci.yml | 21 +++++++++++++-------- s2nTests/scripts/blst-entrypoint.sh | 5 +++-- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a392325832..a3b7da88a3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -422,25 +422,30 @@ jobs: - uses: actions/cache/restore@v3 name: Restore SMT solver result cache + if: "matrix.suite == 'integration_tests'" with: path: ${{ matrix.suite }}.cache - key: ${{ env.SOLVER_CACHE_VERSION }}-solver-${{ matrix.suite }}-${{ matrix.os }}-${{ matrix.ghc }}-${{ github.ref }} - restore-keys: ${{ env.SOLVER_CACHE_VERSION }}-solver-${{ matrix.suite }}-${{ matrix.os }}-${{ matrix.ghc }}- + key: ${{ env.SOLVER_CACHE_VERSION }}-solver-${{ matrix.suite }}-${{ matrix.os }}-${{ github.ref }} + restore-keys: ${{ env.SOLVER_CACHE_VERSION }}-solver-${{ matrix.suite }}-${{ matrix.os }}- + + - shell: bash + name: Enable solver caching + if: "matrix.suite == 'integration_tests'" + run: echo "SAW_SOLVER_CACHE_PATH=$(pwd)/${{ matrix.suite }}.cache" >> "$GITHUB_ENV" - name: ${{ matrix.suite }} continue-on-error: ${{ matrix.continue-on-error }} shell: bash run: | export PATH="$PWD/bin:$PWD/dist/bin:$PATH" - export SAW_SOLVER_CACHE_PATH="$PWD/${{ matrix.suite }}.cache" dist-tests/${{ matrix.suite }} - uses: actions/cache/save@v3 name: Save SMT solver result cache - if: always() + if: "matrix.suite == 'integration_tests'" with: path: ${{ matrix.suite }}.cache - key: ${{ env.SOLVER_CACHE_VERSION }}-solver-${{ matrix.suite }}-${{ matrix.os }}-${{ matrix.ghc }}-${{ github.ref }} + key: ${{ env.SOLVER_CACHE_VERSION }}-solver-${{ matrix.suite }}-${{ matrix.os }}-${{ github.ref }} build-push-image: runs-on: ubuntu-22.04 @@ -585,8 +590,8 @@ jobs: name: Restore SMT solver result cache with: path: s2n-${{ matrix.s2n-target }}.cache - key: ${{ env.SOLVER_CACHE_VERSION }}-solver-s2n-${{ matrix.s2n-target }}-${{ matrix.os }}-${{ matrix.ghc }}-${{ github.ref }} - restore-keys: ${{ env.SOLVER_CACHE_VERSION }}-solver-s2n-${{ matrix.s2n-target }}-${{ matrix.os }}-${{ matrix.ghc }}- + key: ${{ env.SOLVER_CACHE_VERSION }}-solver-s2n-${{ matrix.s2n-target }}-${{ matrix.ghc }}-${{ github.ref }} + restore-keys: ${{ env.SOLVER_CACHE_VERSION }}-solver-s2n-${{ matrix.s2n-target }}}-${{ matrix.ghc }}- - shell: bash name: "s2n tests: ${{ matrix.s2n-target }}" @@ -600,7 +605,7 @@ jobs: if: always() with: path: s2n-${{ matrix.s2n-target }}.cache - key: ${{ env.SOLVER_CACHE_VERSION }}-solver-s2n-${{ matrix.s2n-target }}-${{ matrix.os }}-${{ matrix.ghc }}-${{ github.ref }} + key: ${{ env.SOLVER_CACHE_VERSION }}-solver-s2n-${{ matrix.s2n-target }}-${{ matrix.ghc }}-${{ github.ref }} exercises: name: "Test SAW exercises" diff --git a/s2nTests/scripts/blst-entrypoint.sh b/s2nTests/scripts/blst-entrypoint.sh index dbc3813f25..c9fa03e1af 100755 --- a/s2nTests/scripts/blst-entrypoint.sh +++ b/s2nTests/scripts/blst-entrypoint.sh @@ -13,7 +13,6 @@ cp /saw-bin/z3-4.8.8 bin/z3 export PATH=/workdir/bin:$PATH export CRYPTOLPATH=/workdir/cryptol-specs:/workdir/spec -export SAW_SOLVER_CACHE_PATH=/blst.cache abc -h || true z3 --version @@ -23,6 +22,8 @@ yices-smt2 --version ./scripts/build_x86.sh ./scripts/build_llvm.sh -saw proof/memory_safety.saw +SAW_SOLVER_CACHE_PATH=/blst.cache saw proof/memory_safety.saw +echo "LOOK HERE @m-yac" +echo "print_solver_cache_stats" | ./bin/saw ./scripts/check.sh | if grep False; then exit 1; fi From 4b3e2b77edad6ad5c096cd52f03ef030e061368a Mon Sep 17 00:00:00 2001 From: Matthew Yacavone Date: Wed, 16 Aug 2023 11:01:20 -0400 Subject: [PATCH 11/33] remove debugging from intTests, tweak debugging for s2n-blst --- intTests/test_DELETE_ME/test.sh | 1 - intTests/test_DELETE_ME/test_solver_cache_enabled.saw | 4 ---- s2nTests/scripts/blst-entrypoint.sh | 2 +- 3 files changed, 1 insertion(+), 6 deletions(-) delete mode 100644 intTests/test_DELETE_ME/test.sh delete mode 100644 intTests/test_DELETE_ME/test_solver_cache_enabled.saw diff --git a/intTests/test_DELETE_ME/test.sh b/intTests/test_DELETE_ME/test.sh deleted file mode 100644 index c95bdfea38..0000000000 --- a/intTests/test_DELETE_ME/test.sh +++ /dev/null @@ -1 +0,0 @@ -$SAW test_solver_cache_enabled.saw \ No newline at end of file diff --git a/intTests/test_DELETE_ME/test_solver_cache_enabled.saw b/intTests/test_DELETE_ME/test_solver_cache_enabled.saw deleted file mode 100644 index 1c928ef147..0000000000 --- a/intTests/test_DELETE_ME/test_solver_cache_enabled.saw +++ /dev/null @@ -1,4 +0,0 @@ -test_solver_cache_stats 0 0 0 0 0; -prove_print z3 {{ \(x:[64]) -> x == x }}; -test_solver_cache_stats 1 0 0 1 0; -print_solver_cache_stats; \ No newline at end of file diff --git a/s2nTests/scripts/blst-entrypoint.sh b/s2nTests/scripts/blst-entrypoint.sh index c9fa03e1af..d000bb2e7c 100755 --- a/s2nTests/scripts/blst-entrypoint.sh +++ b/s2nTests/scripts/blst-entrypoint.sh @@ -24,6 +24,6 @@ yices-smt2 --version SAW_SOLVER_CACHE_PATH=/blst.cache saw proof/memory_safety.saw echo "LOOK HERE @m-yac" -echo "print_solver_cache_stats" | ./bin/saw +echo "print_solver_cache_stats" | saw ./scripts/check.sh | if grep False; then exit 1; fi From db0e5309de35e295029a4ba19857d0753e209ec3 Mon Sep 17 00:00:00 2001 From: Matthew Yacavone Date: Wed, 16 Aug 2023 12:08:47 -0400 Subject: [PATCH 12/33] more tweaks to CI blst debugging and cache keys --- .github/workflows/ci.yml | 24 +++++++++++++++--------- s2nTests/scripts/blst-entrypoint.sh | 4 ++-- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a3b7da88a3..66fe2f816b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -120,8 +120,10 @@ jobs: path: | ${{ steps.setup-haskell.outputs.cabal-store }} dist-newstyle - key: ${{ env.CACHE_VERSION }}-cabal-${{ matrix.os }}-${{ matrix.ghc }}-${{ hashFiles(format('cabal.GHC-{0}.config', matrix.ghc)) }}-${{ github.ref }} - restore-keys: ${{ env.CACHE_VERSION }}-cabal-${{ matrix.os }}-${{ matrix.ghc }}-${{ hashFiles(format('cabal.GHC-{0}.config', matrix.ghc)) }}- + key: ${{ env.CACHE_VERSION }}-cabal-${{ matrix.os }}-${{ matrix.ghc }}-${{ hashFiles(format('cabal.GHC-{0}.config', matrix.ghc)) }}-${{ github.ref }}-${{ github.sha }} + restore-keys: | + ${{ env.CACHE_VERSION }}-cabal-${{ matrix.os }}-${{ matrix.ghc }}-${{ hashFiles(format('cabal.GHC-{0}.config', matrix.ghc)) }}-${{ github.ref }}- + ${{ env.CACHE_VERSION }}-cabal-${{ matrix.os }}-${{ matrix.ghc }}-${{ hashFiles(format('cabal.GHC-{0}.config', matrix.ghc)) }}- - if: needs.config.outputs.release == 'true' shell: bash @@ -211,7 +213,7 @@ jobs: path: | ${{ steps.setup-haskell.outputs.cabal-store }} dist-newstyle - key: ${{ env.CACHE_VERSION }}-cabal-${{ matrix.os }}-${{ matrix.ghc }}-${{ hashFiles(format('cabal.GHC-{0}.config', matrix.ghc)) }}-${{ github.ref }} + key: ${{ env.CACHE_VERSION }}-cabal-${{ matrix.os }}-${{ matrix.ghc }}-${{ hashFiles(format('cabal.GHC-{0}.config', matrix.ghc)) }}-${{ github.ref }}-${{ github.sha }} mr-solver-tests: needs: [build] @@ -425,8 +427,10 @@ jobs: if: "matrix.suite == 'integration_tests'" with: path: ${{ matrix.suite }}.cache - key: ${{ env.SOLVER_CACHE_VERSION }}-solver-${{ matrix.suite }}-${{ matrix.os }}-${{ github.ref }} - restore-keys: ${{ env.SOLVER_CACHE_VERSION }}-solver-${{ matrix.suite }}-${{ matrix.os }}- + key: ${{ env.SOLVER_CACHE_VERSION }}-solver-${{ matrix.suite }}-${{ matrix.os }}-${{ github.ref }}-${{ github.sha }} + restore-keys: | + ${{ env.SOLVER_CACHE_VERSION }}-solver-${{ matrix.suite }}-${{ matrix.os }}-${{ github.ref }}- + ${{ env.SOLVER_CACHE_VERSION }}-solver-${{ matrix.suite }}-${{ matrix.os }}- - shell: bash name: Enable solver caching @@ -445,7 +449,7 @@ jobs: if: "matrix.suite == 'integration_tests'" with: path: ${{ matrix.suite }}.cache - key: ${{ env.SOLVER_CACHE_VERSION }}-solver-${{ matrix.suite }}-${{ matrix.os }}-${{ github.ref }} + key: ${{ env.SOLVER_CACHE_VERSION }}-solver-${{ matrix.suite }}-${{ matrix.os }}-${{ github.ref }}-${{ github.sha }} build-push-image: runs-on: ubuntu-22.04 @@ -590,8 +594,10 @@ jobs: name: Restore SMT solver result cache with: path: s2n-${{ matrix.s2n-target }}.cache - key: ${{ env.SOLVER_CACHE_VERSION }}-solver-s2n-${{ matrix.s2n-target }}-${{ matrix.ghc }}-${{ github.ref }} - restore-keys: ${{ env.SOLVER_CACHE_VERSION }}-solver-s2n-${{ matrix.s2n-target }}}-${{ matrix.ghc }}- + key: ${{ env.SOLVER_CACHE_VERSION }}-solver-s2n-${{ matrix.s2n-target }}-${{ matrix.ghc }}-${{ github.ref }}-${{ github.sha }} + restore-keys: + ${{ env.SOLVER_CACHE_VERSION }}-solver-s2n-${{ matrix.s2n-target }}}-${{ matrix.ghc }}-${{ github.ref }}- + ${{ env.SOLVER_CACHE_VERSION }}-solver-s2n-${{ matrix.s2n-target }}}-${{ matrix.ghc }}- - shell: bash name: "s2n tests: ${{ matrix.s2n-target }}" @@ -605,7 +611,7 @@ jobs: if: always() with: path: s2n-${{ matrix.s2n-target }}.cache - key: ${{ env.SOLVER_CACHE_VERSION }}-solver-s2n-${{ matrix.s2n-target }}-${{ matrix.ghc }}-${{ github.ref }} + key: ${{ env.SOLVER_CACHE_VERSION }}-solver-s2n-${{ matrix.s2n-target }}-${{ matrix.ghc }}-${{ github.ref }}-${{ github.sha }} exercises: name: "Test SAW exercises" diff --git a/s2nTests/scripts/blst-entrypoint.sh b/s2nTests/scripts/blst-entrypoint.sh index d000bb2e7c..4b8153136d 100755 --- a/s2nTests/scripts/blst-entrypoint.sh +++ b/s2nTests/scripts/blst-entrypoint.sh @@ -24,6 +24,6 @@ yices-smt2 --version SAW_SOLVER_CACHE_PATH=/blst.cache saw proof/memory_safety.saw echo "LOOK HERE @m-yac" -echo "print_solver_cache_stats" | saw - +ls /blst.cache +echo "set_solver_cache_path \"/blst.cache\"\nprint_solver_cache_stats" | saw ./scripts/check.sh | if grep False; then exit 1; fi From 325bb491e4f103a9a7cf04f8f95ce9883ef04b05 Mon Sep 17 00:00:00 2001 From: Matthew Yacavone Date: Wed, 16 Aug 2023 13:22:29 -0400 Subject: [PATCH 13/33] more CI solver caching debugging for s2n --- s2nTests/Makefile | 8 ++++++++ s2nTests/scripts/awslc-entrypoint.sh | 2 +- s2nTests/scripts/blst-entrypoint.sh | 7 +++---- s2nTests/scripts/s2n-entrypoint.sh | 1 + 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/s2nTests/Makefile b/s2nTests/Makefile index f1cfc80af1..d853ca085f 100644 --- a/s2nTests/Makefile +++ b/s2nTests/Makefile @@ -8,23 +8,31 @@ s2n: docker-compose build s2n hmac: s2n docker-compose run -v ./s2n-hmac.cache:/s2n.cache s2n sawHMAC + ls ./s2n-hmac.cache drbg: s2n docker-compose run -v ./s2n-drbg.cache:/s2n.cache s2n sawDRBG + ls ./s2n-drbg.cache sike: s2n docker-compose run -v ./s2n-sike.cache:/s2n.cache s2n sawSIKE + ls ./s2n-sike.cache bike: s2n docker-compose run -v ./s2n-bike.cache:/s2n.cache s2n sawBIKE openssl-1.0.2 + ls ./s2n-bike.cache tls: s2n docker-compose run -v ./s2n-tls.cache:/s2n.cache s2n tls + ls ./s2n-tls.cache hmac-failure: s2n docker-compose run -v ./s2n-hmac-failure.cache:/s2n.cache s2n sawHMACFailure + ls ./s2n-hmac-failure awslc-container: docker-compose build awslc awslc: awslc-container docker-compose run -v ./s2n-awslc.cache:/awslc.cache awslc + ls ./s2n-awslc.cache blst-container: docker-compose build blst blst: blst-container docker-compose run -v ./s2n-blst.cache:/blst.cache blst + ls ./s2n-blst.cache diff --git a/s2nTests/scripts/awslc-entrypoint.sh b/s2nTests/scripts/awslc-entrypoint.sh index 7bf4b58144..7246dabcff 100755 --- a/s2nTests/scripts/awslc-entrypoint.sh +++ b/s2nTests/scripts/awslc-entrypoint.sh @@ -16,4 +16,4 @@ export CRYPTOLPATH=/saw-script/aws-lc-verification/cryptol-specs export SAW_SOLVER_CACHE_PATH=/awslc.cache ./scripts/entrypoint_check.sh - +ls /blst.cache diff --git a/s2nTests/scripts/blst-entrypoint.sh b/s2nTests/scripts/blst-entrypoint.sh index 4b8153136d..5a0eb1d042 100755 --- a/s2nTests/scripts/blst-entrypoint.sh +++ b/s2nTests/scripts/blst-entrypoint.sh @@ -13,6 +13,7 @@ cp /saw-bin/z3-4.8.8 bin/z3 export PATH=/workdir/bin:$PATH export CRYPTOLPATH=/workdir/cryptol-specs:/workdir/spec +export SAW_SOLVER_CACHE_PATH=/blst.cache abc -h || true z3 --version @@ -22,8 +23,6 @@ yices-smt2 --version ./scripts/build_x86.sh ./scripts/build_llvm.sh -SAW_SOLVER_CACHE_PATH=/blst.cache saw proof/memory_safety.saw -echo "LOOK HERE @m-yac" -ls /blst.cache -echo "set_solver_cache_path \"/blst.cache\"\nprint_solver_cache_stats" | saw +saw proof/memory_safety.saw ./scripts/check.sh | if grep False; then exit 1; fi +ls /blst.cache diff --git a/s2nTests/scripts/s2n-entrypoint.sh b/s2nTests/scripts/s2n-entrypoint.sh index d60a4f16b8..8aaae49ae8 100755 --- a/s2nTests/scripts/s2n-entrypoint.sh +++ b/s2nTests/scripts/s2n-entrypoint.sh @@ -18,3 +18,4 @@ export CFLAGS=-Wno-error=array-parameter export CLANG=clang export LLVMLINK=llvm-link exec codebuild/bin/s2n_codebuild.sh +ls /blst.cache From 91b42116cf08bf94a6a4664eaacebf5c6e0316f4 Mon Sep 17 00:00:00 2001 From: Matthew Yacavone Date: Wed, 16 Aug 2023 15:05:26 -0400 Subject: [PATCH 14/33] another attempt at enabling solver caching for s2n tests on CI --- .github/workflows/ci.yml | 4 ++-- s2nTests/Makefile | 24 ++++++++---------------- s2nTests/docker-compose.yml | 3 +++ s2nTests/scripts/awslc-entrypoint.sh | 3 +-- s2nTests/scripts/blst-entrypoint.sh | 3 +-- s2nTests/scripts/s2n-entrypoint.sh | 3 +-- 6 files changed, 16 insertions(+), 24 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 66fe2f816b..0cc6658e65 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -593,7 +593,7 @@ jobs: - uses: actions/cache/restore@v3 name: Restore SMT solver result cache with: - path: s2n-${{ matrix.s2n-target }}.cache + path: cache key: ${{ env.SOLVER_CACHE_VERSION }}-solver-s2n-${{ matrix.s2n-target }}-${{ matrix.ghc }}-${{ github.ref }}-${{ github.sha }} restore-keys: ${{ env.SOLVER_CACHE_VERSION }}-solver-s2n-${{ matrix.s2n-target }}}-${{ matrix.ghc }}-${{ github.ref }}- @@ -610,7 +610,7 @@ jobs: name: Save SMT solver result cache if: always() with: - path: s2n-${{ matrix.s2n-target }}.cache + path: cache key: ${{ env.SOLVER_CACHE_VERSION }}-solver-s2n-${{ matrix.s2n-target }}-${{ matrix.ghc }}-${{ github.ref }}-${{ github.sha }} exercises: diff --git a/s2nTests/Makefile b/s2nTests/Makefile index d853ca085f..2e5912d39e 100644 --- a/s2nTests/Makefile +++ b/s2nTests/Makefile @@ -7,32 +7,24 @@ saw-script: s2n: docker-compose build s2n hmac: s2n - docker-compose run -v ./s2n-hmac.cache:/s2n.cache s2n sawHMAC - ls ./s2n-hmac.cache + docker-compose run s2n sawHMAC drbg: s2n - docker-compose run -v ./s2n-drbg.cache:/s2n.cache s2n sawDRBG - ls ./s2n-drbg.cache + docker-compose run s2n sawDRBG sike: s2n - docker-compose run -v ./s2n-sike.cache:/s2n.cache s2n sawSIKE - ls ./s2n-sike.cache + docker-compose run s2n sawSIKE bike: s2n - docker-compose run -v ./s2n-bike.cache:/s2n.cache s2n sawBIKE openssl-1.0.2 - ls ./s2n-bike.cache + docker-compose run s2n sawBIKE openssl-1.0.2 tls: s2n - docker-compose run -v ./s2n-tls.cache:/s2n.cache s2n tls - ls ./s2n-tls.cache + docker-compose run s2n tls hmac-failure: s2n - docker-compose run -v ./s2n-hmac-failure.cache:/s2n.cache s2n sawHMACFailure - ls ./s2n-hmac-failure + docker-compose run s2n sawHMACFailure awslc-container: docker-compose build awslc awslc: awslc-container - docker-compose run -v ./s2n-awslc.cache:/awslc.cache awslc - ls ./s2n-awslc.cache + docker-compose run awslc blst-container: docker-compose build blst blst: blst-container - docker-compose run -v ./s2n-blst.cache:/blst.cache blst - ls ./s2n-blst.cache + docker-compose run blst diff --git a/s2nTests/docker-compose.yml b/s2nTests/docker-compose.yml index 5197e89676..d6a3d3cc75 100644 --- a/s2nTests/docker-compose.yml +++ b/s2nTests/docker-compose.yml @@ -16,6 +16,7 @@ services: image: s2n volumes: - ${PWD:-.}/bin:/saw-bin:rw + - ${PWD:-.}/cache:/saw-cache:rw awslc: build: @@ -24,6 +25,7 @@ services: image: awslc volumes: - ${PWD:-.}/bin:/saw-bin:rw + - ${PWD:-.}/cache:/saw-cache:rw blst: build: @@ -32,3 +34,4 @@ services: image: blst volumes: - ${PWD:-.}/bin:/saw-bin:rw + - ${PWD:-.}/cache:/saw-cache:rw diff --git a/s2nTests/scripts/awslc-entrypoint.sh b/s2nTests/scripts/awslc-entrypoint.sh index 7246dabcff..db6af2ae6b 100755 --- a/s2nTests/scripts/awslc-entrypoint.sh +++ b/s2nTests/scripts/awslc-entrypoint.sh @@ -13,7 +13,6 @@ cp /saw-bin/z3-4.8.8 bin/z3 export PATH=/saw-script/aws-lc-verification/SAW/bin:$PATH export CRYPTOLPATH=/saw-script/aws-lc-verification/cryptol-specs -export SAW_SOLVER_CACHE_PATH=/awslc.cache +export SAW_SOLVER_CACHE_PATH=/saw-cache ./scripts/entrypoint_check.sh -ls /blst.cache diff --git a/s2nTests/scripts/blst-entrypoint.sh b/s2nTests/scripts/blst-entrypoint.sh index 5a0eb1d042..bc423a5b5e 100755 --- a/s2nTests/scripts/blst-entrypoint.sh +++ b/s2nTests/scripts/blst-entrypoint.sh @@ -13,7 +13,7 @@ cp /saw-bin/z3-4.8.8 bin/z3 export PATH=/workdir/bin:$PATH export CRYPTOLPATH=/workdir/cryptol-specs:/workdir/spec -export SAW_SOLVER_CACHE_PATH=/blst.cache +export SAW_SOLVER_CACHE_PATH=/saw-cache abc -h || true z3 --version @@ -25,4 +25,3 @@ yices-smt2 --version saw proof/memory_safety.saw ./scripts/check.sh | if grep False; then exit 1; fi -ls /blst.cache diff --git a/s2nTests/scripts/s2n-entrypoint.sh b/s2nTests/scripts/s2n-entrypoint.sh index 8aaae49ae8..ece781829c 100755 --- a/s2nTests/scripts/s2n-entrypoint.sh +++ b/s2nTests/scripts/s2n-entrypoint.sh @@ -9,7 +9,6 @@ fi cd /saw-script/s2n echo 'JOBS=1' >> codebuild/bin/jobs.sh source codebuild/bin/s2n_setup_env.sh -export SAW_SOLVER_CACHE_PATH=/s2n.cache SAW=true SAW_INSTALL_DIR=tmp-saw ./codebuild/bin/install_default_dependencies.sh cp /saw-bin/saw "$SAW_INSTALL_DIR"/bin/saw cp /saw-bin/abc "$SAW_INSTALL_DIR"/bin/abc @@ -17,5 +16,5 @@ cp /saw-bin/abc "$SAW_INSTALL_DIR"/bin/abc export CFLAGS=-Wno-error=array-parameter export CLANG=clang export LLVMLINK=llvm-link +export SAW_SOLVER_CACHE_PATH=/saw-cache exec codebuild/bin/s2n_codebuild.sh -ls /blst.cache From a885f60a282f0649fad54b86052f7433d7263e9f Mon Sep 17 00:00:00 2001 From: Matthew Yacavone Date: Wed, 16 Aug 2023 17:38:17 -0400 Subject: [PATCH 15/33] add debugging back to s2n CI tests --- s2nTests/scripts/awslc-entrypoint.sh | 3 +++ s2nTests/scripts/blst-entrypoint.sh | 4 ++++ s2nTests/scripts/s2n-entrypoint.sh | 3 +++ 3 files changed, 10 insertions(+) diff --git a/s2nTests/scripts/awslc-entrypoint.sh b/s2nTests/scripts/awslc-entrypoint.sh index db6af2ae6b..1927ff69cc 100755 --- a/s2nTests/scripts/awslc-entrypoint.sh +++ b/s2nTests/scripts/awslc-entrypoint.sh @@ -16,3 +16,6 @@ export CRYPTOLPATH=/saw-script/aws-lc-verification/cryptol-specs export SAW_SOLVER_CACHE_PATH=/saw-cache ./scripts/entrypoint_check.sh +ls /saw-cache +echo "set_solver_cache_path \"/saw-cache\"\nprint_solver_cache_stats" | bin/saw + diff --git a/s2nTests/scripts/blst-entrypoint.sh b/s2nTests/scripts/blst-entrypoint.sh index bc423a5b5e..7a1448922f 100755 --- a/s2nTests/scripts/blst-entrypoint.sh +++ b/s2nTests/scripts/blst-entrypoint.sh @@ -24,4 +24,8 @@ yices-smt2 --version ./scripts/build_llvm.sh saw proof/memory_safety.saw + ./scripts/check.sh | if grep False; then exit 1; fi + +ls /saw-cache +echo "set_solver_cache_path \"/saw-cache\"\nprint_solver_cache_stats" | bin/saw diff --git a/s2nTests/scripts/s2n-entrypoint.sh b/s2nTests/scripts/s2n-entrypoint.sh index ece781829c..62f7c64186 100755 --- a/s2nTests/scripts/s2n-entrypoint.sh +++ b/s2nTests/scripts/s2n-entrypoint.sh @@ -18,3 +18,6 @@ export CLANG=clang export LLVMLINK=llvm-link export SAW_SOLVER_CACHE_PATH=/saw-cache exec codebuild/bin/s2n_codebuild.sh + +ls /saw-cache +echo "set_solver_cache_path \"/saw-cache\"\nprint_solver_cache_stats" | bin/saw From 09042ad2c66296f57899a0df19123f692402a65f Mon Sep 17 00:00:00 2001 From: Matthew Yacavone Date: Thu, 17 Aug 2023 15:43:03 +0200 Subject: [PATCH 16/33] even more debugging for s2n CI solver caching --- .github/workflows/ci.yml | 6 +++++- s2nTests/scripts/awslc-entrypoint.sh | 3 ++- s2nTests/scripts/blst-entrypoint.sh | 2 +- s2nTests/scripts/s2n-entrypoint.sh | 2 +- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0cc6658e65..d69c375043 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -603,8 +603,12 @@ jobs: name: "s2n tests: ${{ matrix.s2n-target }}" working-directory: s2nTests run: | - chmod +x bin/* + mkdir cache + echo "print_solver_cache_stats;" > ./cache/print_solver_cache_stats.saw + chmod +x bin/* cache/* make ${{ matrix.s2n-target }} + ls cache + SAW_SOLVER_CACHE_PATH="./cache" ./bin/saw ./cache/print_solver_cache_stats.saw - uses: actions/cache/save@v3 name: Save SMT solver result cache diff --git a/s2nTests/scripts/awslc-entrypoint.sh b/s2nTests/scripts/awslc-entrypoint.sh index 1927ff69cc..8a06e9f50e 100755 --- a/s2nTests/scripts/awslc-entrypoint.sh +++ b/s2nTests/scripts/awslc-entrypoint.sh @@ -16,6 +16,7 @@ export CRYPTOLPATH=/saw-script/aws-lc-verification/cryptol-specs export SAW_SOLVER_CACHE_PATH=/saw-cache ./scripts/entrypoint_check.sh + ls /saw-cache -echo "set_solver_cache_path \"/saw-cache\"\nprint_solver_cache_stats" | bin/saw +/bin/saw /saw-cache/print_solver_cache_stats.saw diff --git a/s2nTests/scripts/blst-entrypoint.sh b/s2nTests/scripts/blst-entrypoint.sh index 7a1448922f..ec309eeec2 100755 --- a/s2nTests/scripts/blst-entrypoint.sh +++ b/s2nTests/scripts/blst-entrypoint.sh @@ -28,4 +28,4 @@ saw proof/memory_safety.saw ./scripts/check.sh | if grep False; then exit 1; fi ls /saw-cache -echo "set_solver_cache_path \"/saw-cache\"\nprint_solver_cache_stats" | bin/saw +/bin/saw /saw-cache/print_solver_cache_stats.saw diff --git a/s2nTests/scripts/s2n-entrypoint.sh b/s2nTests/scripts/s2n-entrypoint.sh index 62f7c64186..64bd0e606a 100755 --- a/s2nTests/scripts/s2n-entrypoint.sh +++ b/s2nTests/scripts/s2n-entrypoint.sh @@ -20,4 +20,4 @@ export SAW_SOLVER_CACHE_PATH=/saw-cache exec codebuild/bin/s2n_codebuild.sh ls /saw-cache -echo "set_solver_cache_path \"/saw-cache\"\nprint_solver_cache_stats" | bin/saw +/bin/saw /saw-cache/print_solver_cache_stats.saw From 2762cdfd2cbc1925236b1acee05624630839c1e7 Mon Sep 17 00:00:00 2001 From: Matthew Yacavone Date: Thu, 17 Aug 2023 18:30:03 +0200 Subject: [PATCH 17/33] tweak debugging for s2n CI solver caching --- .github/workflows/ci.yml | 2 -- s2nTests/scripts/awslc-entrypoint.sh | 3 --- s2nTests/scripts/blst-entrypoint.sh | 3 --- s2nTests/scripts/s2n-entrypoint.sh | 3 --- 4 files changed, 11 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d69c375043..88ba842b22 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -604,11 +604,9 @@ jobs: working-directory: s2nTests run: | mkdir cache - echo "print_solver_cache_stats;" > ./cache/print_solver_cache_stats.saw chmod +x bin/* cache/* make ${{ matrix.s2n-target }} ls cache - SAW_SOLVER_CACHE_PATH="./cache" ./bin/saw ./cache/print_solver_cache_stats.saw - uses: actions/cache/save@v3 name: Save SMT solver result cache diff --git a/s2nTests/scripts/awslc-entrypoint.sh b/s2nTests/scripts/awslc-entrypoint.sh index 8a06e9f50e..ee2d048727 100755 --- a/s2nTests/scripts/awslc-entrypoint.sh +++ b/s2nTests/scripts/awslc-entrypoint.sh @@ -17,6 +17,3 @@ export SAW_SOLVER_CACHE_PATH=/saw-cache ./scripts/entrypoint_check.sh -ls /saw-cache -/bin/saw /saw-cache/print_solver_cache_stats.saw - diff --git a/s2nTests/scripts/blst-entrypoint.sh b/s2nTests/scripts/blst-entrypoint.sh index ec309eeec2..9d288e2225 100755 --- a/s2nTests/scripts/blst-entrypoint.sh +++ b/s2nTests/scripts/blst-entrypoint.sh @@ -26,6 +26,3 @@ yices-smt2 --version saw proof/memory_safety.saw ./scripts/check.sh | if grep False; then exit 1; fi - -ls /saw-cache -/bin/saw /saw-cache/print_solver_cache_stats.saw diff --git a/s2nTests/scripts/s2n-entrypoint.sh b/s2nTests/scripts/s2n-entrypoint.sh index 64bd0e606a..ece781829c 100755 --- a/s2nTests/scripts/s2n-entrypoint.sh +++ b/s2nTests/scripts/s2n-entrypoint.sh @@ -18,6 +18,3 @@ export CLANG=clang export LLVMLINK=llvm-link export SAW_SOLVER_CACHE_PATH=/saw-cache exec codebuild/bin/s2n_codebuild.sh - -ls /saw-cache -/bin/saw /saw-cache/print_solver_cache_stats.saw From 69d327ec35789d6aee45693bba47fe197fa2443e Mon Sep 17 00:00:00 2001 From: Matthew Yacavone Date: Thu, 17 Aug 2023 23:52:18 +0200 Subject: [PATCH 18/33] the tweaks to s2n CI solver caching just keep coming... --- .github/workflows/ci.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 88ba842b22..ad95b03e5b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -604,9 +604,12 @@ jobs: working-directory: s2nTests run: | mkdir cache - chmod +x bin/* cache/* + echo "print_solver_cache_stats;" > ./cache/print_solver_cache_stats.saw + chmod +x bin/* + chmod +w cache make ${{ matrix.s2n-target }} ls cache + SAW_SOLVER_CACHE_PATH="./cache" ./bin/saw ./cache/print_solver_cache_stats.saw || echo "print_solver_cache_stats failed" - uses: actions/cache/save@v3 name: Save SMT solver result cache From 358c0dc53115458da0d159bd88800c514ffcaba2 Mon Sep 17 00:00:00 2001 From: Matthew Yacavone Date: Fri, 18 Aug 2023 16:24:34 +0200 Subject: [PATCH 19/33] point the CI solver cache restore/save to the right place for s2n tests --- .github/workflows/ci.yml | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ad95b03e5b..ea0522c08b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -593,7 +593,7 @@ jobs: - uses: actions/cache/restore@v3 name: Restore SMT solver result cache with: - path: cache + path: s2nTests/cache key: ${{ env.SOLVER_CACHE_VERSION }}-solver-s2n-${{ matrix.s2n-target }}-${{ matrix.ghc }}-${{ github.ref }}-${{ github.sha }} restore-keys: ${{ env.SOLVER_CACHE_VERSION }}-solver-s2n-${{ matrix.s2n-target }}}-${{ matrix.ghc }}-${{ github.ref }}- @@ -604,18 +604,15 @@ jobs: working-directory: s2nTests run: | mkdir cache - echo "print_solver_cache_stats;" > ./cache/print_solver_cache_stats.saw chmod +x bin/* chmod +w cache make ${{ matrix.s2n-target }} - ls cache - SAW_SOLVER_CACHE_PATH="./cache" ./bin/saw ./cache/print_solver_cache_stats.saw || echo "print_solver_cache_stats failed" - uses: actions/cache/save@v3 name: Save SMT solver result cache if: always() with: - path: cache + path: s2nTests/cache key: ${{ env.SOLVER_CACHE_VERSION }}-solver-s2n-${{ matrix.s2n-target }}-${{ matrix.ghc }}-${{ github.ref }}-${{ github.sha }} exercises: From fd847c8f9d89783798fcb89ec780261ecc519300 Mon Sep 17 00:00:00 2001 From: Matthew Yacavone Date: Tue, 5 Sep 2023 16:58:57 -0400 Subject: [PATCH 20/33] remove github.ref from cache keys, try to fix s2n cache permissions --- .github/workflows/ci.yml | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ea0522c08b..6879278094 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -120,9 +120,8 @@ jobs: path: | ${{ steps.setup-haskell.outputs.cabal-store }} dist-newstyle - key: ${{ env.CACHE_VERSION }}-cabal-${{ matrix.os }}-${{ matrix.ghc }}-${{ hashFiles(format('cabal.GHC-{0}.config', matrix.ghc)) }}-${{ github.ref }}-${{ github.sha }} + key: ${{ env.CACHE_VERSION }}-cabal-${{ matrix.os }}-${{ matrix.ghc }}-${{ hashFiles(format('cabal.GHC-{0}.config', matrix.ghc)) }}-${{ github.sha }} restore-keys: | - ${{ env.CACHE_VERSION }}-cabal-${{ matrix.os }}-${{ matrix.ghc }}-${{ hashFiles(format('cabal.GHC-{0}.config', matrix.ghc)) }}-${{ github.ref }}- ${{ env.CACHE_VERSION }}-cabal-${{ matrix.os }}-${{ matrix.ghc }}-${{ hashFiles(format('cabal.GHC-{0}.config', matrix.ghc)) }}- - if: needs.config.outputs.release == 'true' @@ -213,7 +212,7 @@ jobs: path: | ${{ steps.setup-haskell.outputs.cabal-store }} dist-newstyle - key: ${{ env.CACHE_VERSION }}-cabal-${{ matrix.os }}-${{ matrix.ghc }}-${{ hashFiles(format('cabal.GHC-{0}.config', matrix.ghc)) }}-${{ github.ref }}-${{ github.sha }} + key: ${{ env.CACHE_VERSION }}-cabal-${{ matrix.os }}-${{ matrix.ghc }}-${{ hashFiles(format('cabal.GHC-{0}.config', matrix.ghc)) }}-${{ github.sha }} mr-solver-tests: needs: [build] @@ -427,9 +426,8 @@ jobs: if: "matrix.suite == 'integration_tests'" with: path: ${{ matrix.suite }}.cache - key: ${{ env.SOLVER_CACHE_VERSION }}-solver-${{ matrix.suite }}-${{ matrix.os }}-${{ github.ref }}-${{ github.sha }} + key: ${{ env.SOLVER_CACHE_VERSION }}-solver-${{ matrix.suite }}-${{ matrix.os }}-${{ github.sha }} restore-keys: | - ${{ env.SOLVER_CACHE_VERSION }}-solver-${{ matrix.suite }}-${{ matrix.os }}-${{ github.ref }}- ${{ env.SOLVER_CACHE_VERSION }}-solver-${{ matrix.suite }}-${{ matrix.os }}- - shell: bash @@ -449,7 +447,7 @@ jobs: if: "matrix.suite == 'integration_tests'" with: path: ${{ matrix.suite }}.cache - key: ${{ env.SOLVER_CACHE_VERSION }}-solver-${{ matrix.suite }}-${{ matrix.os }}-${{ github.ref }}-${{ github.sha }} + key: ${{ env.SOLVER_CACHE_VERSION }}-solver-${{ matrix.suite }}-${{ matrix.os }}-${{ github.sha }} build-push-image: runs-on: ubuntu-22.04 @@ -594,9 +592,8 @@ jobs: name: Restore SMT solver result cache with: path: s2nTests/cache - key: ${{ env.SOLVER_CACHE_VERSION }}-solver-s2n-${{ matrix.s2n-target }}-${{ matrix.ghc }}-${{ github.ref }}-${{ github.sha }} + key: ${{ env.SOLVER_CACHE_VERSION }}-solver-s2n-${{ matrix.s2n-target }}-${{ matrix.ghc }}-${{ github.sha }} restore-keys: - ${{ env.SOLVER_CACHE_VERSION }}-solver-s2n-${{ matrix.s2n-target }}}-${{ matrix.ghc }}-${{ github.ref }}- ${{ env.SOLVER_CACHE_VERSION }}-solver-s2n-${{ matrix.s2n-target }}}-${{ matrix.ghc }}- - shell: bash @@ -605,15 +602,16 @@ jobs: run: | mkdir cache chmod +x bin/* - chmod +w cache + chmod -R +rw cache make ${{ matrix.s2n-target }} + chmod -R +rw cache - uses: actions/cache/save@v3 name: Save SMT solver result cache if: always() with: path: s2nTests/cache - key: ${{ env.SOLVER_CACHE_VERSION }}-solver-s2n-${{ matrix.s2n-target }}-${{ matrix.ghc }}-${{ github.ref }}-${{ github.sha }} + key: ${{ env.SOLVER_CACHE_VERSION }}-solver-s2n-${{ matrix.s2n-target }}-${{ matrix.ghc }}-${{ github.sha }} exercises: name: "Test SAW exercises" From c68fcd2c1804abdc7c1a185355fd896dac85e348 Mon Sep 17 00:00:00 2001 From: Matthew Yacavone Date: Tue, 5 Sep 2023 22:14:13 -0400 Subject: [PATCH 21/33] give read permissions to newly created s2n caches --- .github/workflows/ci.yml | 1 - s2nTests/scripts/awslc-entrypoint.sh | 1 + s2nTests/scripts/blst-entrypoint.sh | 2 ++ s2nTests/scripts/s2n-entrypoint.sh | 2 ++ 4 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6879278094..c86bfef6bf 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -604,7 +604,6 @@ jobs: chmod +x bin/* chmod -R +rw cache make ${{ matrix.s2n-target }} - chmod -R +rw cache - uses: actions/cache/save@v3 name: Save SMT solver result cache diff --git a/s2nTests/scripts/awslc-entrypoint.sh b/s2nTests/scripts/awslc-entrypoint.sh index ee2d048727..817499dd21 100755 --- a/s2nTests/scripts/awslc-entrypoint.sh +++ b/s2nTests/scripts/awslc-entrypoint.sh @@ -17,3 +17,4 @@ export SAW_SOLVER_CACHE_PATH=/saw-cache ./scripts/entrypoint_check.sh +chmod -R +rw cache diff --git a/s2nTests/scripts/blst-entrypoint.sh b/s2nTests/scripts/blst-entrypoint.sh index 9d288e2225..82c855dc95 100755 --- a/s2nTests/scripts/blst-entrypoint.sh +++ b/s2nTests/scripts/blst-entrypoint.sh @@ -26,3 +26,5 @@ yices-smt2 --version saw proof/memory_safety.saw ./scripts/check.sh | if grep False; then exit 1; fi + +chmod -R +rw cache diff --git a/s2nTests/scripts/s2n-entrypoint.sh b/s2nTests/scripts/s2n-entrypoint.sh index ece781829c..b7fe0850ee 100755 --- a/s2nTests/scripts/s2n-entrypoint.sh +++ b/s2nTests/scripts/s2n-entrypoint.sh @@ -18,3 +18,5 @@ export CLANG=clang export LLVMLINK=llvm-link export SAW_SOLVER_CACHE_PATH=/saw-cache exec codebuild/bin/s2n_codebuild.sh + +chmod -R +rw cache From edc3b2da43ff095b82a37fb73f3bfa7ab4775eb5 Mon Sep 17 00:00:00 2001 From: Matthew Yacavone Date: Wed, 6 Sep 2023 13:00:53 -0400 Subject: [PATCH 22/33] a different strategy for getting permissions for s2n solver cache --- .github/workflows/ci.yml | 2 +- s2nTests/scripts/awslc-entrypoint.sh | 1 - s2nTests/scripts/blst-entrypoint.sh | 2 -- s2nTests/scripts/s2n-entrypoint.sh | 2 -- 4 files changed, 1 insertion(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c86bfef6bf..e6ce9e6c4c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -600,8 +600,8 @@ jobs: name: "s2n tests: ${{ matrix.s2n-target }}" working-directory: s2nTests run: | - mkdir cache chmod +x bin/* + mkdir cache && touch cache/data.mdb cache/lock.mdb chmod -R +rw cache make ${{ matrix.s2n-target }} diff --git a/s2nTests/scripts/awslc-entrypoint.sh b/s2nTests/scripts/awslc-entrypoint.sh index 817499dd21..ee2d048727 100755 --- a/s2nTests/scripts/awslc-entrypoint.sh +++ b/s2nTests/scripts/awslc-entrypoint.sh @@ -17,4 +17,3 @@ export SAW_SOLVER_CACHE_PATH=/saw-cache ./scripts/entrypoint_check.sh -chmod -R +rw cache diff --git a/s2nTests/scripts/blst-entrypoint.sh b/s2nTests/scripts/blst-entrypoint.sh index 82c855dc95..9d288e2225 100755 --- a/s2nTests/scripts/blst-entrypoint.sh +++ b/s2nTests/scripts/blst-entrypoint.sh @@ -26,5 +26,3 @@ yices-smt2 --version saw proof/memory_safety.saw ./scripts/check.sh | if grep False; then exit 1; fi - -chmod -R +rw cache diff --git a/s2nTests/scripts/s2n-entrypoint.sh b/s2nTests/scripts/s2n-entrypoint.sh index b7fe0850ee..ece781829c 100755 --- a/s2nTests/scripts/s2n-entrypoint.sh +++ b/s2nTests/scripts/s2n-entrypoint.sh @@ -18,5 +18,3 @@ export CLANG=clang export LLVMLINK=llvm-link export SAW_SOLVER_CACHE_PATH=/saw-cache exec codebuild/bin/s2n_codebuild.sh - -chmod -R +rw cache From 310e34b96348b1e0424f6e3333cedca0a14e15d8 Mon Sep 17 00:00:00 2001 From: Matthew Yacavone Date: Wed, 6 Sep 2023 14:44:18 -0400 Subject: [PATCH 23/33] add `-p` to mkdir in s2n solver caching --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e6ce9e6c4c..a7a6116c7b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -601,7 +601,7 @@ jobs: working-directory: s2nTests run: | chmod +x bin/* - mkdir cache && touch cache/data.mdb cache/lock.mdb + mkdir -p cache && touch cache/data.mdb cache/lock.mdb chmod -R +rw cache make ${{ matrix.s2n-target }} From d54e304a6b2de4bf9fe44e147556dcc7ee4407a9 Mon Sep 17 00:00:00 2001 From: Matthew Yacavone Date: Wed, 6 Sep 2023 17:13:51 -0400 Subject: [PATCH 24/33] fix typo preventing s2n solver caches from getting restored on CI --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a7a6116c7b..642286b0dd 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -594,7 +594,7 @@ jobs: path: s2nTests/cache key: ${{ env.SOLVER_CACHE_VERSION }}-solver-s2n-${{ matrix.s2n-target }}-${{ matrix.ghc }}-${{ github.sha }} restore-keys: - ${{ env.SOLVER_CACHE_VERSION }}-solver-s2n-${{ matrix.s2n-target }}}-${{ matrix.ghc }}- + ${{ env.SOLVER_CACHE_VERSION }}-solver-s2n-${{ matrix.s2n-target }}-${{ matrix.ghc }}- - shell: bash name: "s2n tests: ${{ matrix.s2n-target }}" From 9a9763fe3b38576acf7c01d390d28920f2952ee9 Mon Sep 17 00:00:00 2001 From: Matthew Yacavone Date: Wed, 6 Sep 2023 21:46:36 -0400 Subject: [PATCH 25/33] set solver cache timeout to 2s, add print_solver_cache_stats to s2n tests --- s2nTests/scripts/awslc-entrypoint.sh | 1 + s2nTests/scripts/blst-entrypoint.sh | 1 + s2nTests/scripts/s2n-entrypoint.sh | 1 + src/SAWScript/SolverCache.hs | 2 +- 4 files changed, 4 insertions(+), 1 deletion(-) diff --git a/s2nTests/scripts/awslc-entrypoint.sh b/s2nTests/scripts/awslc-entrypoint.sh index ee2d048727..14eb7645e6 100755 --- a/s2nTests/scripts/awslc-entrypoint.sh +++ b/s2nTests/scripts/awslc-entrypoint.sh @@ -16,4 +16,5 @@ export CRYPTOLPATH=/saw-script/aws-lc-verification/cryptol-specs export SAW_SOLVER_CACHE_PATH=/saw-cache ./scripts/entrypoint_check.sh +echo "print_solver_cache_stats" | bin/saw diff --git a/s2nTests/scripts/blst-entrypoint.sh b/s2nTests/scripts/blst-entrypoint.sh index 9d288e2225..e558e9c2d5 100755 --- a/s2nTests/scripts/blst-entrypoint.sh +++ b/s2nTests/scripts/blst-entrypoint.sh @@ -26,3 +26,4 @@ yices-smt2 --version saw proof/memory_safety.saw ./scripts/check.sh | if grep False; then exit 1; fi +echo "print_solver_cache_stats" | bin/saw diff --git a/s2nTests/scripts/s2n-entrypoint.sh b/s2nTests/scripts/s2n-entrypoint.sh index ece781829c..3294b258fc 100755 --- a/s2nTests/scripts/s2n-entrypoint.sh +++ b/s2nTests/scripts/s2n-entrypoint.sh @@ -18,3 +18,4 @@ export CLANG=clang export LLVMLINK=llvm-link export SAW_SOLVER_CACHE_PATH=/saw-cache exec codebuild/bin/s2n_codebuild.sh +echo "print_solver_cache_stats" | "$SAW_INSTALL_DIR"/bin/saw diff --git a/src/SAWScript/SolverCache.hs b/src/SAWScript/SolverCache.hs index bf1310b450..06d35006d8 100644 --- a/src/SAWScript/SolverCache.hs +++ b/src/SAWScript/SolverCache.hs @@ -411,7 +411,7 @@ lazyOpenSolverCache path = do solverCacheDB = Nothing, solverCacheStats = stats, solverCacheMapSize = 4 {- GiB -} * 1073741824, - solverCacheTimeout = 1 {- sec -} * 1000000 } + solverCacheTimeout = 2 {- sec -} * 1000000 } -- | Create a 'SolverCache' with the given 'FilePath' and open an LMDB database -- at that path (i.e. `solverCacheEnv` and `solverCacheDB` are both 'Just') From 289adc61f8350f4ed293d8e5c624c9582f887ee3 Mon Sep 17 00:00:00 2001 From: Matthew Yacavone Date: Thu, 7 Sep 2023 13:42:40 -0400 Subject: [PATCH 26/33] change debugging method for solver caching on CI --- s2nTests/scripts/awslc-entrypoint.sh | 1 - s2nTests/scripts/blst-entrypoint.sh | 1 - s2nTests/scripts/s2n-entrypoint.sh | 1 - src/SAWScript/SolverCache.hs | 16 +++++++++++----- 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/s2nTests/scripts/awslc-entrypoint.sh b/s2nTests/scripts/awslc-entrypoint.sh index 14eb7645e6..ee2d048727 100755 --- a/s2nTests/scripts/awslc-entrypoint.sh +++ b/s2nTests/scripts/awslc-entrypoint.sh @@ -16,5 +16,4 @@ export CRYPTOLPATH=/saw-script/aws-lc-verification/cryptol-specs export SAW_SOLVER_CACHE_PATH=/saw-cache ./scripts/entrypoint_check.sh -echo "print_solver_cache_stats" | bin/saw diff --git a/s2nTests/scripts/blst-entrypoint.sh b/s2nTests/scripts/blst-entrypoint.sh index e558e9c2d5..9d288e2225 100755 --- a/s2nTests/scripts/blst-entrypoint.sh +++ b/s2nTests/scripts/blst-entrypoint.sh @@ -26,4 +26,3 @@ yices-smt2 --version saw proof/memory_safety.saw ./scripts/check.sh | if grep False; then exit 1; fi -echo "print_solver_cache_stats" | bin/saw diff --git a/s2nTests/scripts/s2n-entrypoint.sh b/s2nTests/scripts/s2n-entrypoint.sh index 3294b258fc..ece781829c 100755 --- a/s2nTests/scripts/s2n-entrypoint.sh +++ b/s2nTests/scripts/s2n-entrypoint.sh @@ -18,4 +18,3 @@ export CLANG=clang export LLVMLINK=llvm-link export SAW_SOLVER_CACHE_PATH=/saw-cache exec codebuild/bin/s2n_codebuild.sh -echo "print_solver_cache_stats" | "$SAW_INSTALL_DIR"/bin/saw diff --git a/src/SAWScript/SolverCache.hs b/src/SAWScript/SolverCache.hs index 06d35006d8..5830719f1b 100644 --- a/src/SAWScript/SolverCache.hs +++ b/src/SAWScript/SolverCache.hs @@ -478,14 +478,17 @@ solverCacheOpDefault (SCOpOrDefault a _) = Just a lookupInSolverCache :: SolverCacheKey -> SolverCacheOp (Maybe SolverCacheValue) lookupInSolverCache k = SCOpOrDefault Nothing $ \opts cache@SolverCache{..} -> getCurrentTime >>= \now -> - let upd _ v = Just v { solverCacheValueLastUsed = now } in + readIORef solverCacheStats >>= \stats -> + let ss = show ((stats M.! Lookups, stats M.! FailedLookups), + (stats M.! Inserts, stats M.! FailedInserts)) + upd _ v = Just v { solverCacheValueLastUsed = now } in tryTransaction cache (LMDB.updateLookupWithKey upd k) >>= \case (Right (Just v), cache') -> do - printOutLn opts Debug ("Using cached result: " ++ show k) + printOutLn opts Info (ss ++ " Using cached result: " ++ show k) modifyIORef solverCacheStats $ M.adjust (+1) Lookups return (Just v, cache') (Left err, cache') -> do - printOutLn opts Warn ("Solver cache lookup failed:\n" ++ err) + printOutLn opts Warn (ss ++ " Solver cache lookup failed:\n" ++ err) modifyIORef solverCacheStats $ M.adjust (+1) FailedLookups return (Nothing, cache') (Right Nothing, cache') -> do @@ -494,13 +497,16 @@ lookupInSolverCache k = SCOpOrDefault Nothing $ \opts cache@SolverCache{..} -> -- | Add a 'SolverCacheValue' to the solver result cache insertInSolverCache :: SolverCacheKey -> SolverCacheValue -> SolverCacheOp () insertInSolverCache k v = SCOpOrDefault () $ \opts cache@SolverCache{..} -> - printOutLn opts Debug ("Caching result: " ++ show k) >> + readIORef solverCacheStats >>= \stats -> + let ss = show ((stats M.! Lookups, stats M.! FailedLookups), + (stats M.! Inserts, stats M.! FailedInserts)) in + printOutLn opts Info (ss ++ " Caching result: " ++ show k) >> tryTransaction cache (LMDB.insert k v) >>= \case (Right (), cache') -> do modifyIORef solverCacheStats $ M.adjust (+1) Inserts return ((), cache') (Left err, cache') -> do - printOutLn opts Warn ("Solver cache insert failed:\n" ++ err) + printOutLn opts Warn (ss ++ " Solver cache insert failed:\n" ++ err) modifyIORef solverCacheStats $ M.adjust (+1) FailedInserts return ((), cache') From 9707e4d67f2c00d4fb0f9f7661e74b034ea7d4fc Mon Sep 17 00:00:00 2001 From: Matthew Yacavone Date: Thu, 7 Sep 2023 15:28:40 -0400 Subject: [PATCH 27/33] remove timeout in solver caching for debugging purposes --- src/SAWScript/SolverCache.hs | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/src/SAWScript/SolverCache.hs b/src/SAWScript/SolverCache.hs index 5830719f1b..3b7f1c2480 100644 --- a/src/SAWScript/SolverCache.hs +++ b/src/SAWScript/SolverCache.hs @@ -76,7 +76,7 @@ module SAWScript.SolverCache import System.Directory (createDirectoryIfMissing) import Control.Exception (try, SomeException) import Control.Monad (when, forM_) -import System.Timeout (timeout) +import System.CPUTime (getCPUTime) import GHC.Generics (Generic) import Data.IORef (IORef, newIORef, modifyIORef, readIORef) @@ -123,14 +123,18 @@ import SAWScript.Proof -- | Run the given IO action, but if the given 'timeout' (in microseconds) is -- reached or the action encounters any 'SomeException', 'Left' is returned -tryWithTimeout :: Int -> IO a -> IO (Either String a) -tryWithTimeout t_us m = try (timeout t_us m) <&> \case +tryWithTimeout :: Int -> IO a -> IO (Either String (a, Double)) +tryWithTimeout t_us m = try timed_m <&> \case Right (Just a) -> Right a Right Nothing -> let t_str | t_us `mod` 1000000 == 0 = show (t_us `div` 1000000) ++ "s" | t_us `mod` 1000 == 0 = show (t_us `div` 1000) ++ "ms" | otherwise = show t_us ++ "us" in Left $ "Operation timed out (" ++ t_str ++ ")" Left (exn :: SomeException) -> Left $ show exn + where timed_m = do t1 <- getCPUTime + a <- m + t2 <- getCPUTime + return $ Just (a, fromIntegral (t2 - t1) / 1e-12) -- | Encode a 'ByteString' as a hex string encodeHex :: ByteString -> String @@ -448,10 +452,10 @@ tryTransaction :: (LMDB.Mode tmode, LMDB.SubMode LMDB.ReadWrite tmode) => SolverCache -> (LMDB.Database SolverCacheKey SolverCacheValue -> LMDB.Transaction tmode a) -> - IO (Either String a, SolverCache) + IO (Either String (a, Double), SolverCache) tryTransaction cache@SolverCache{..} t = tryWithTimeout solverCacheTimeout (forceSolverCacheOpened cache) >>= \case - Right (env, db, cache') -> + Right ((env, db, cache'), _) -> (,cache') <$> tryWithTimeout solverCacheTimeout (LMDB.transaction env (t db)) Left err -> @@ -483,15 +487,16 @@ lookupInSolverCache k = SCOpOrDefault Nothing $ \opts cache@SolverCache{..} -> (stats M.! Inserts, stats M.! FailedInserts)) upd _ v = Just v { solverCacheValueLastUsed = now } in tryTransaction cache (LMDB.updateLookupWithKey upd k) >>= \case - (Right (Just v), cache') -> do - printOutLn opts Info (ss ++ " Using cached result: " ++ show k) + (Right (Just v, t), cache') -> do + printOutLn opts Info (ss ++ " (" ++ show t ++ "s) Using cached result: " ++ show k) modifyIORef solverCacheStats $ M.adjust (+1) Lookups return (Just v, cache') (Left err, cache') -> do printOutLn opts Warn (ss ++ " Solver cache lookup failed:\n" ++ err) modifyIORef solverCacheStats $ M.adjust (+1) FailedLookups return (Nothing, cache') - (Right Nothing, cache') -> do + (Right (Nothing, t), cache') -> do + printOutLn opts Info (ss ++ " (" ++ show t ++ "s) Cache lookup missed: " ++ show k) return (Nothing, cache') -- | Add a 'SolverCacheValue' to the solver result cache @@ -500,9 +505,9 @@ insertInSolverCache k v = SCOpOrDefault () $ \opts cache@SolverCache{..} -> readIORef solverCacheStats >>= \stats -> let ss = show ((stats M.! Lookups, stats M.! FailedLookups), (stats M.! Inserts, stats M.! FailedInserts)) in - printOutLn opts Info (ss ++ " Caching result: " ++ show k) >> tryTransaction cache (LMDB.insert k v) >>= \case - (Right (), cache') -> do + (Right ((), t), cache') -> do + printOutLn opts Info (ss ++ " (" ++ show t ++ "s) Cached result: " ++ show k) modifyIORef solverCacheStats $ M.adjust (+1) Inserts return ((), cache') (Left err, cache') -> do From a6d4bcb889a3b9f376021d833ba14064c95b6218 Mon Sep 17 00:00:00 2001 From: Matthew Yacavone Date: Thu, 7 Sep 2023 19:30:36 -0400 Subject: [PATCH 28/33] add --clean-solver-cache CLI opt, clean up CI debugging --- .github/workflows/ci.yml | 4 ++- s2nTests/scripts/awslc-entrypoint.sh | 1 + s2nTests/scripts/blst-entrypoint.sh | 1 + s2nTests/scripts/s2n-entrypoint.sh | 1 + saw/Main.hs | 9 +++++ src/SAWScript/Interpreter.hs | 2 +- src/SAWScript/Options.hs | 11 +++++++ src/SAWScript/SolverCache.hs | 49 +++++++++++++--------------- 8 files changed, 49 insertions(+), 29 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 642286b0dd..1a46dbda2e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -433,7 +433,9 @@ jobs: - shell: bash name: Enable solver caching if: "matrix.suite == 'integration_tests'" - run: echo "SAW_SOLVER_CACHE_PATH=$(pwd)/${{ matrix.suite }}.cache" >> "$GITHUB_ENV" + run: | + echo "SAW_SOLVER_CACHE_PATH=$(pwd)/${{ matrix.suite }}.cache" >> "$GITHUB_ENV" + dist/bin/saw --clean-solver-cache=$(pwd)/${{ matrix.suite }}.cache - name: ${{ matrix.suite }} continue-on-error: ${{ matrix.continue-on-error }} diff --git a/s2nTests/scripts/awslc-entrypoint.sh b/s2nTests/scripts/awslc-entrypoint.sh index ee2d048727..283ed1c538 100755 --- a/s2nTests/scripts/awslc-entrypoint.sh +++ b/s2nTests/scripts/awslc-entrypoint.sh @@ -14,6 +14,7 @@ cp /saw-bin/z3-4.8.8 bin/z3 export PATH=/saw-script/aws-lc-verification/SAW/bin:$PATH export CRYPTOLPATH=/saw-script/aws-lc-verification/cryptol-specs export SAW_SOLVER_CACHE_PATH=/saw-cache +saw --clean-solver-cache ./scripts/entrypoint_check.sh diff --git a/s2nTests/scripts/blst-entrypoint.sh b/s2nTests/scripts/blst-entrypoint.sh index 9d288e2225..dd5ceffda5 100755 --- a/s2nTests/scripts/blst-entrypoint.sh +++ b/s2nTests/scripts/blst-entrypoint.sh @@ -14,6 +14,7 @@ cp /saw-bin/z3-4.8.8 bin/z3 export PATH=/workdir/bin:$PATH export CRYPTOLPATH=/workdir/cryptol-specs:/workdir/spec export SAW_SOLVER_CACHE_PATH=/saw-cache +saw --clean-solver-cache abc -h || true z3 --version diff --git a/s2nTests/scripts/s2n-entrypoint.sh b/s2nTests/scripts/s2n-entrypoint.sh index ece781829c..9d3e16b8f0 100755 --- a/s2nTests/scripts/s2n-entrypoint.sh +++ b/s2nTests/scripts/s2n-entrypoint.sh @@ -17,4 +17,5 @@ export CFLAGS=-Wno-error=array-parameter export CLANG=clang export LLVMLINK=llvm-link export SAW_SOLVER_CACHE_PATH=/saw-cache +"$SAW_INSTALL_DIR"/bin/saw --clean-solver-cache exec codebuild/bin/s2n_codebuild.sh diff --git a/saw/Main.hs b/saw/Main.hs index d942ed546d..68a734f548 100644 --- a/saw/Main.hs +++ b/saw/Main.hs @@ -25,6 +25,8 @@ import qualified SAWScript.REPL.Haskeline as REPL import qualified SAWScript.REPL.Monad as REPL import SAWScript.Version (shortVersionText) import SAWScript.Value (AIGProxy(..)) +import qualified SAWScript.SolverCache as Cache +import SAWScript.SolverVersions import qualified Data.AIG.CompactGraph as AIG main :: IO () @@ -40,6 +42,7 @@ main = do case files of _ | showVersion opts'' -> hPutStrLn stderr shortVersionText _ | showHelp opts'' -> err opts'' (usageInfo header options) + _ | Just path <- cleanSolverCache opts'' -> doCleanSolverCache opts'' path [] -> checkZ3 opts'' *> REPL.run opts'' _ | runInteractively opts'' -> checkZ3 opts'' *> REPL.run opts'' [file] -> checkZ3 opts'' *> @@ -59,4 +62,10 @@ main = do when (verbLevel opts >= Error) (hPutStrLn stderr msg) exitProofUnknown + doCleanSolverCache opts path | not (null path) = do + cache <- Cache.lazyOpenSolverCache path + vs <- getSolverBackendVersions Cache.allBackends + fst <$> Cache.solverCacheOp (Cache.cleanSolverCache vs) opts cache + doCleanSolverCache opts _ = + err opts "Error: either --clean-solver-cache must be given an argument or SAW_SOLVER_CACHE_PATH must be set" diff --git a/src/SAWScript/Interpreter.hs b/src/SAWScript/Interpreter.hs index 9ccc5a5842..d0547aee94 100644 --- a/src/SAWScript/Interpreter.hs +++ b/src/SAWScript/Interpreter.hs @@ -62,7 +62,7 @@ import qualified SAWScript.Import import SAWScript.HeapsterBuiltins import SAWScript.JavaExpr import SAWScript.LLVMBuiltins -import SAWScript.Options +import SAWScript.Options hiding (cleanSolverCache) import SAWScript.Lexer (lexSAW) import SAWScript.MGU (checkDecl, checkDeclGroup) import SAWScript.Parser (parseSchema) diff --git a/src/SAWScript/Options.hs b/src/SAWScript/Options.hs index ab22d815e0..3ef1b93151 100644 --- a/src/SAWScript/Options.hs +++ b/src/SAWScript/Options.hs @@ -13,6 +13,7 @@ module SAWScript.Options where import Data.Char (toLower) import Data.List (partition) +import Data.Maybe (fromMaybe) import Data.Time import System.Console.GetOpt import System.Environment @@ -39,6 +40,7 @@ data Options = Options , showVersion :: Bool , printShowPos :: Bool , useColor :: Bool + , cleanSolverCache :: Maybe FilePath , printOutFn :: Verbosity -> String -> IO () , summaryFile :: Maybe FilePath , summaryFormat :: SummaryFormat @@ -77,6 +79,7 @@ defaultOptions , showHelp = False , showVersion = False , useColor = True + , cleanSolverCache = Nothing , summaryFile = Nothing , summaryFormat = Pretty } @@ -156,6 +159,14 @@ options = , Option [] ["no-color"] (NoArg (\opts -> return opts { useColor = False })) "Disable ANSI color and Unicode output" + , Option [] ["clean-solver-cache"] + (OptArg + (\mb_path opts -> do + mb_env_path <- lookupEnv "SAW_SOLVER_CACHE_PATH" + let path = fromMaybe (fromMaybe "" mb_env_path) mb_path + return opts { cleanSolverCache = Just path }) + "path") + "Run clean_solver_cache with the cache given, or else the value of SAW_SOLVER_CACHE_PATH" , Option "s" ["summary"] (ReqArg (\file opts -> return opts { summaryFile = Just file }) diff --git a/src/SAWScript/SolverCache.hs b/src/SAWScript/SolverCache.hs index 3b7f1c2480..950d3ed5e8 100644 --- a/src/SAWScript/SolverCache.hs +++ b/src/SAWScript/SolverCache.hs @@ -44,6 +44,7 @@ were obtained by the backends in the first place). {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE StandaloneDeriving #-} {-# LANGUAGE TupleSections #-} +{-# LANGUAGE TypeApplications #-} {-# LANGUAGE ViewPatterns #-} module SAWScript.SolverCache @@ -76,7 +77,7 @@ module SAWScript.SolverCache import System.Directory (createDirectoryIfMissing) import Control.Exception (try, SomeException) import Control.Monad (when, forM_) -import System.CPUTime (getCPUTime) +import System.Timeout (timeout) import GHC.Generics (Generic) import Data.IORef (IORef, newIORef, modifyIORef, readIORef) @@ -115,7 +116,7 @@ import Verifier.SAW.SATQuery import Verifier.SAW.ExternalFormat import Verifier.SAW.SharedTerm -import SAWScript.Options +import SAWScript.Options hiding (cleanSolverCache) import SAWScript.Proof @@ -123,18 +124,14 @@ import SAWScript.Proof -- | Run the given IO action, but if the given 'timeout' (in microseconds) is -- reached or the action encounters any 'SomeException', 'Left' is returned -tryWithTimeout :: Int -> IO a -> IO (Either String (a, Double)) -tryWithTimeout t_us m = try timed_m <&> \case +tryWithTimeout :: Int -> IO a -> IO (Either String a) +tryWithTimeout t_us m = try (timeout t_us m) <&> \case Right (Just a) -> Right a Right Nothing -> let t_str | t_us `mod` 1000000 == 0 = show (t_us `div` 1000000) ++ "s" | t_us `mod` 1000 == 0 = show (t_us `div` 1000) ++ "ms" | otherwise = show t_us ++ "us" in Left $ "Operation timed out (" ++ t_str ++ ")" Left (exn :: SomeException) -> Left $ show exn - where timed_m = do t1 <- getCPUTime - a <- m - t2 <- getCPUTime - return $ Just (a, fromIntegral (t2 - t1) / 1e-12) -- | Encode a 'ByteString' as a hex string encodeHex :: ByteString -> String @@ -452,10 +449,10 @@ tryTransaction :: (LMDB.Mode tmode, LMDB.SubMode LMDB.ReadWrite tmode) => SolverCache -> (LMDB.Database SolverCacheKey SolverCacheValue -> LMDB.Transaction tmode a) -> - IO (Either String (a, Double), SolverCache) + IO (Either String a, SolverCache) tryTransaction cache@SolverCache{..} t = tryWithTimeout solverCacheTimeout (forceSolverCacheOpened cache) >>= \case - Right ((env, db, cache'), _) -> + Right (env, db, cache') -> (,cache') <$> tryWithTimeout solverCacheTimeout (LMDB.transaction env (t db)) Left err -> @@ -482,36 +479,30 @@ solverCacheOpDefault (SCOpOrDefault a _) = Just a lookupInSolverCache :: SolverCacheKey -> SolverCacheOp (Maybe SolverCacheValue) lookupInSolverCache k = SCOpOrDefault Nothing $ \opts cache@SolverCache{..} -> getCurrentTime >>= \now -> - readIORef solverCacheStats >>= \stats -> - let ss = show ((stats M.! Lookups, stats M.! FailedLookups), - (stats M.! Inserts, stats M.! FailedInserts)) - upd _ v = Just v { solverCacheValueLastUsed = now } in - tryTransaction cache (LMDB.updateLookupWithKey upd k) >>= \case - (Right (Just v, t), cache') -> do - printOutLn opts Info (ss ++ " (" ++ show t ++ "s) Using cached result: " ++ show k) + let upd v = Just v { solverCacheValueLastUsed = now } in + tryTransaction @LMDB.ReadOnly cache (LMDB.lookup k) >>= \case + (Right (Just v), cache') -> do + printOutLn opts Debug ("Using cached result: " ++ show k) modifyIORef solverCacheStats $ M.adjust (+1) Lookups - return (Just v, cache') + cache'' <- snd <$> tryTransaction cache' (LMDB.update upd k) + return (Just v, cache'') (Left err, cache') -> do - printOutLn opts Warn (ss ++ " Solver cache lookup failed:\n" ++ err) + printOutLn opts Warn ("Solver cache lookup failed:\n" ++ err) modifyIORef solverCacheStats $ M.adjust (+1) FailedLookups return (Nothing, cache') - (Right (Nothing, t), cache') -> do - printOutLn opts Info (ss ++ " (" ++ show t ++ "s) Cache lookup missed: " ++ show k) + (Right Nothing, cache') -> do return (Nothing, cache') -- | Add a 'SolverCacheValue' to the solver result cache insertInSolverCache :: SolverCacheKey -> SolverCacheValue -> SolverCacheOp () insertInSolverCache k v = SCOpOrDefault () $ \opts cache@SolverCache{..} -> - readIORef solverCacheStats >>= \stats -> - let ss = show ((stats M.! Lookups, stats M.! FailedLookups), - (stats M.! Inserts, stats M.! FailedInserts)) in + printOutLn opts Debug ("Caching result: " ++ show k) >> tryTransaction cache (LMDB.insert k v) >>= \case - (Right ((), t), cache') -> do - printOutLn opts Info (ss ++ " (" ++ show t ++ "s) Cached result: " ++ show k) + (Right (), cache') -> do modifyIORef solverCacheStats $ M.adjust (+1) Inserts return ((), cache') (Left err, cache') -> do - printOutLn opts Warn (ss ++ " Solver cache insert failed:\n" ++ err) + printOutLn opts Warn ("Solver cache insert failed:\n" ++ err) modifyIORef solverCacheStats $ M.adjust (+1) FailedInserts return ((), cache') @@ -585,6 +576,10 @@ cleanSolverCache curr_base_vs = SCOpOrFail $ \opts cache -> do printOutLn opts Info $ "- " ++ showSolverBackendVersion backend v1 [] ++ " (Current: " ++ showSolverBackendVersion backend v2 [] ++ ")" + sz <- LMDB.readOnlyTransaction env $ LMDB.size db + let (sz0, sz1) = if sz == 1 then ("is", "") else ("are", "s") + printOutLn opts Info $ "There " ++ sz0 ++ " " ++ show sz ++ " result" + ++ sz1 ++ " remaining in the cache" return ((), cache') -- | Print out statistics about how the solver cache was used From 4fe74e235262c09ee3d79140bc1eaaa4af12fd21 Mon Sep 17 00:00:00 2001 From: Matthew Yacavone Date: Fri, 8 Sep 2023 15:47:33 -0400 Subject: [PATCH 29/33] update manual with --clean-solver-cache --- doc/manual/manual.md | 12 +++++++++++- doc/manual/manual.pdf | Bin 531174 -> 518229 bytes saw/Main.hs | 10 +++++----- src/SAWScript/Interpreter.hs | 2 +- src/SAWScript/Options.hs | 8 ++++---- src/SAWScript/SolverCache.hs | 2 +- 6 files changed, 22 insertions(+), 12 deletions(-) diff --git a/doc/manual/manual.md b/doc/manual/manual.md index 02cec02a93..d50d3a0e21 100644 --- a/doc/manual/manual.md +++ b/doc/manual/manual.md @@ -86,6 +86,14 @@ command-line options: ~ Set the verbosity level of the SAWScript interpreter. +`--clean-solver-cache[=path]` + + ~ Run the `clean_solver_cache` command on the solver cache at the given + path, or if no path is given, the solver cache at the value of the + `SAW_SOLVER_CACHE_PATH` environment variable, then exit. See the section + **Caching Solver Results** for a description of the `clean_solver_cache` + command and the solver caching feature in general. + SAW also uses several environment variables for configuration: `CRYPTOLPATH` @@ -1300,7 +1308,9 @@ There are also a number of SAW commands related to solver caching. * `clean_solver_cache` will remove all entries in the solver result cache which were created using solver backend versions which do not match the versions in the current environment. This can be run after an update to - clear out any old, unusable entries from the solver cache. + clear out any old, unusable entries from the solver cache. This command can + also be run directly from the command line through the `--clean-solver-cache` + command-line option. * `print_solver_cache` prints to the console all entries in the cache whose SHA256 hash keys start with the given hex string. Providing an empty string diff --git a/doc/manual/manual.pdf b/doc/manual/manual.pdf index 351ea88bd0292e6c1b1e0e12dbae3b2901cd618b..b5f639190fbd3b3a0d44968877c6246e97050b16 100644 GIT binary patch delta 241082 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�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%0D2! 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%0AAW@BQlD& zvnN7i>#2Y@&f>cEx)|Qqyyq}G?xNUp5i9D8c&9H(5M%;^*VSZHb` z40>z84|piRO}XTclGUa|LTB09JXH*_#0=mU(HFrN;TJLGG1Gi(8B?=uPAgL0!U?q( zHRf20QBf0`tbn2#4_u{*5+g5l~V;G z*yj{1hZE-mJ!Io}4r{0ll)8%>^KlOGVL+!K6Eej7_CXb;`vr}p_l?*Z^=;oo@TBq0 z9Pb&yfszOHfr&5@(r;pVBN0+`S9$2Rlzb##ZN@PXDmF{<_`*o}0kvS9{z+h~1gX;* z7?9>1T?MX^XYBtCAH9gZ2(+kc!3FD2y6mjB5D-+XBd-VXdcBwA>lT@soC)eC+^G8j zOH?1P2ebsS>85|1mFU@*YjR(>YVF)#FcSnNGovNEv1Bf` zNyO(Nw+t{W?H54zz9hfci)Pm%)$6dZN0aK+#ye?K07`=tY8#v!azL>#?*Jy^S`F&B3^T9F*0RCP_+Kj z2dtoF$kXfGS(A#KVx{zd$OlcL?)+>k|Ee!I3AQ`&c>Dp}F1DVL!WN;Z?!ZQ88Qehp zcdhc3s??*npL8%wPB8N~!l$>&=g?8zcPKf%!Z2K_kT^F{OwI_R>{&1$jp9rEE_E_# z5;%PNF$m))eJ~~7RkFIrKt!PI2P%)T)Q%EV7rmwEFy`+g_#~_luv5+2PV6Sb)ieSQ zIifb&`3`{8mjuDg4zMben?jeI@zFb9uMe2r(givepcQ_Slj|mkmx6{x$^oIxHOu|r zSZ|5ZFE$+^k)z$YuuSQu6P853mLEk6s6N1M0Z#T%qa#gWI(*fPx(_f0#l&BlFIFL| z7~lcb(M4a=k#gf*ysk#7TBS<24D+5Qk*(+EdwxKVX|6ACBE4>OX?3YVPc;YpWw zFqbAR721a;i;F_v#_0vG+`#8sv!)y(W@FSW6amCTqkJ&JogC$D00mfZTZn!pC9#QgGsn)(u2#sLZTW(#(A3{>l6?=6J8n)4R6)=bVy z(&|hoDQY1^65V7bOzn}((Q9piYvvXEeqeGzsE)6di99+{$-wV7)*rLrQfc&VBdO(V zA=Ms;#F?}=uyJ0*LFFPW;OZ(}UjCs_$3K8C+sy2JvSxQnf`C6jCinc}z&$9NKZg}@ zGm6w=e-|ImQ%PNO*7Z>Q6Xt68yA-A;^5g)jl4IaCFr=sA+!)qfN+O{^uE$u=-wchDbF|60wnJFWW12?bBKV=4E1F0jLtYXMTZUGyuE&i&j|Ag;#g9m& zkTUr$=FKL0?j07Y7RAzwR#KVQZXAxylHKuU9mCwv05Xh*cVXHeF5-wy0X?0-;{BWE zeJN@FZk&Gaua|yMyJRwfCJlk&kr2SM7CZ(2W9Us>erR%3d|OS{?i`XlHBBHP2gRtb zF0`wLvd@08wvTHxx7f?7cH|vgE~;l?;mxXN*1uf_7kz)lLjTrohng#&FA z7na=J3A=$$XZZ7bpwlX`MaL6Iaz`=1La96<{e6W zUT&ZrTD&5|?adj%n^`xpOzFlBcDfRk(RNv(%g6VdND}vfCLzwxGe^XjR5_buA)6pN zPVRCP69%#>n{KonyI>_@HXFbeO0A2c+~b?g`khTz=GZF{k|N{Nyy=ox)Ia5Vc{g$B z*9**Yn>qmYqMJ2F8Ta&7c_RDAru%q5Yj5YG#|;aP8;$~i0O2>8aBwoQS$xl_4#6BN zz~u=W{8aF_1cIQ}&ApI7ayR1`Qr~-mTe(l|2ugCkol?70JgXkxa8P+U`)I)7E=ay7ZAoVY7I-W$CfpEH)FHh66xR~%SW@m zcsEy987Mux6eV`q2WXzOlMV}c7GE1`?bA2VFDEDU|CaqzJVSrTAi0;o?1FxSQkqqJ@czLI-Rd@jt?;2I+{+b+eb}S70@TO$6>O40k)ch%&z}FS9O( z>!R{C4U_TWM5i6ixkOpg^``UJ8c>0m(!ugzWd`{y4haM7ts;1Yrf1~v&KYRao{|fSTZ~c3S-ax|X z;iIDsiR1-+-1zJKq9kDydT&l8bR?R^x`A&1P&O2Y&^;oE zuKTc5PJ136$H}#j*|UjuiEh%7{#|osqe7&>E1_prWfQRDrjyEr;`{11stnM!m!GG| zlSiQVt%qqtM0${$G+f@_S>K;?!LQ}hdc$p<;4p#%lQn6QQm2DO++F%SQARK zNb~j_k0bdRNy+{2PflhN0E%2DeKds46|Fdo3#nVWf0Rn$MTWd!vB$b?+un0XV`xI^ zOl_Ff-+zEvI)QV%j!B&&W`Dk*H|&TgzbLt(JA)ZSahZ+&0A6HRwrH9P2p1#8|6xU8Sx%Vca+kG>rx zz!&s?WgmF1w7X{~wNmyypcV@&sR-47hR4PGYZW5}l786oT2AOi*7rM(KR1mBL|>V8 z�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
8Y(yBxAXR)M`&mVcgoV=8@}nBY6Al-^OF~@_?*i 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