Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CI is unpredictably failing #1772

Open
chameco opened this issue Dec 4, 2022 · 7 comments
Open

CI is unpredictably failing #1772

chameco opened this issue Dec 4, 2022 · 7 comments
Labels
tooling: CI Issues involving CI/CD scripts or processes type: enhancement Issues describing an improvement to an existing feature or capability
Milestone

Comments

@chameco
Copy link
Contributor

chameco commented Dec 4, 2022

This can be seen clearly on the Nightly builds page, and is almost certainly a consequence of #1746.
It looks like not only the BLST job is inconsistent: in some jobs AWSLC times out.
In both cases it looks like a Z3 timeout, probably because we moved from Z3 4.8.10 to 4.8.14.

@RyanGlScott
Copy link
Contributor

Sigh.

As a short-term fix, I think we should just include both z3-4.8.10 and z3-4.8.14 (with z3 being an alias for z3-4.8.14) in a what4-solvers bindist, and then we can manually copy z3-4.8.10 to z3 before running the AWSLC/BLST jobs.

Alternatively, we could try different, later versions of Z3 on those jobs to find one that doesn't exhibit the nondeterministic timeouts that z3-4.8.14 does, but that sounds like a tedious way to go about yet. Better yet would be to extract the SMT-LIB2 term that is causing the timeout so that we can test it on different Z3 versions without needing the run the full AWSLC/BLST jobs.

RyanGlScott added a commit to GaloisInc/what4-solvers that referenced this issue Dec 5, 2022
We now include both Z3 4.8.10 and 4.8.14 so that SAW's CI can revert back to
4.8.10 in certain cases, as 4.8.14 has been known to nondeterministically fail
on certain jobs. See GaloisInc/saw-script#1772.
RyanGlScott added a commit to GaloisInc/what4-solvers that referenced this issue Dec 5, 2022
We now include both Z3 4.8.10 and 4.8.14 so that SAW's CI can revert back to
4.8.10 in certain cases, as 4.8.14 has been known to nondeterministically fail
on certain jobs. See GaloisInc/saw-script#1772.
RyanGlScott added a commit to GaloisInc/what4-solvers that referenced this issue Dec 5, 2022
We now include both Z3 4.8.10 and 4.8.14 so that SAW's CI can revert back to
4.8.10 in certain cases, as 4.8.14 has been known to nondeterministically fail
on certain jobs. See GaloisInc/saw-script#1772.
RyanGlScott added a commit to GaloisInc/what4-solvers that referenced this issue Dec 5, 2022
We now include both Z3 4.8.10 and 4.8.14 so that SAW's CI can revert back to
4.8.10 in certain cases, as 4.8.14 has been known to nondeterministically fail
on certain jobs. See GaloisInc/saw-script#1772.
RyanGlScott added a commit to GaloisInc/what4-solvers that referenced this issue Dec 5, 2022
We now include both Z3 4.8.10 and 4.8.14 so that SAW's CI can revert back to
4.8.10 in certain cases, as 4.8.14 has been known to nondeterministically fail
on certain jobs. See GaloisInc/saw-script#1772.
RyanGlScott added a commit to GaloisInc/what4-solvers that referenced this issue Dec 5, 2022
We now include both Z3 4.8.10 and 4.8.14 so that SAW's CI can revert back to
4.8.10 in certain cases, as 4.8.14 has been known to nondeterministically fail
on certain jobs. See GaloisInc/saw-script#1772.
RyanGlScott added a commit to GaloisInc/what4-solvers that referenced this issue Dec 5, 2022
We now include both Z3 4.8.10 and 4.8.14 so that SAW's CI can revert back to
4.8.10 in certain cases, as 4.8.14 has been known to nondeterministically fail
on certain jobs. See GaloisInc/saw-script#1772.
RyanGlScott added a commit that referenced this issue Dec 5, 2022
This updates the `what4-solvers` snapshot to one that includes both Z3 4.8.10
and 4.8.14. While we continue to use 4.8.14 for most CI purposes, we fall back
to 4.8.10 specifically when running the AWSLC or BLST proofs, which have been
known to nondeterministically time out with those versions. Hopefully, this
should resolve our CI woes.

This avoids the main issue in #1772, although the underlying cause still has yet
to be investigated.
@RyanGlScott RyanGlScott added the tooling: CI Issues involving CI/CD scripts or processes label Dec 5, 2022
RyanGlScott added a commit that referenced this issue Dec 6, 2022
This updates the `what4-solvers` snapshot to one that includes both Z3 4.8.10
and 4.8.14. While we continue to use 4.8.14 for most CI purposes, we fall back
to 4.8.10 specifically when running the AWSLC or BLST proofs, which have been
known to nondeterministically time out with those versions. Hopefully, this
should resolve our CI woes.

This avoids the main issue in #1772, although the underlying cause still has yet
to be investigated.
RyanGlScott added a commit that referenced this issue Dec 7, 2022
This updates the `what4-solvers` snapshot to one that includes both Z3 4.8.10
and 4.8.14. While we continue to use 4.8.14 for most CI purposes, we fall back
to 4.8.10 specifically when running the AWSLC or BLST proofs, which have been
known to nondeterministically time out with those versions. Hopefully, this
should resolve our CI woes.

This avoids the main issue in #1772, although the underlying cause still has yet
to be investigated.
RyanGlScott added a commit that referenced this issue Dec 12, 2022
This updates the `what4-solvers` snapshot to one that includes both Z3 4.8.10
and 4.8.14. While we continue to use 4.8.14 for most CI purposes, we fall back
to 4.8.10 specifically when running the AWSLC or BLST proofs, which have been
known to nondeterministically time out with those versions. Hopefully, this
should resolve our CI woes.

This avoids the main issue in #1772, although the underlying cause still has yet
to be investigated.
RyanGlScott added a commit that referenced this issue Dec 13, 2022
This updates the `what4-solvers` snapshot to one that includes both Z3 4.8.8
and 4.8.14. While we continue to use 4.8.14 for most CI purposes, we fall back
to 4.8.8 specifically when running the AWSLC or BLST proofs, which have been
known to nondeterministically time out with those versions. Hopefully, this
should resolve our CI woes.

This avoids the main issue in #1772, although the underlying cause still has yet
to be investigated.
@sauclovian-g
Copy link
Contributor

We need a comprehensive solution for solver versions.

@sauclovian-g sauclovian-g added type: feature request Issues requesting a new feature or capability and removed tooling: CI Issues involving CI/CD scripts or processes labels Nov 5, 2024
@sauclovian-g sauclovian-g added this to the 2025T1 milestone Nov 5, 2024
@sauclovian-g
Copy link
Contributor

(I have updated the labels accordingly)

@sauclovian-g sauclovian-g changed the title CI is unpredictably failing Need to be able to use a range of solver versions Nov 5, 2024
@sauclovian-g sauclovian-g added the usability An issue that impedes efficient understanding and use label Nov 5, 2024
@sauclovian-g
Copy link
Contributor

There's already an issue for solver versions: #390. I don't think we need two, and the specific issue in here got handled. @RyanGlScott do you want to leave it open as a reminder to remove the prior hacks when we get a proper solution, or should we close it?

@sauclovian-g sauclovian-g changed the title Need to be able to use a range of solver versions CI is unpredictably failingCI is unpredictably failing Nov 5, 2024
@sauclovian-g sauclovian-g changed the title CI is unpredictably failingCI is unpredictably failing CI is unpredictably failing Nov 5, 2024
@sauclovian-g sauclovian-g added type: bug Issues reporting bugs or unexpected/unwanted behavior and removed type: bug Issues reporting bugs or unexpected/unwanted behavior usability An issue that impedes efficient understanding and use type: feature request Issues requesting a new feature or capability labels Nov 5, 2024
@sauclovian-g sauclovian-g added type: enhancement Issues describing an improvement to an existing feature or capability tooling: CI Issues involving CI/CD scripts or processes labels Nov 5, 2024
@RyanGlScott
Copy link
Contributor

If I understand correctly, the "comprehensive solution" is to check to see if your solver's version number lies within a known range of supported solvers beforehand? If so, I would be fine with closing this issue in and dedicating #390 to the task of implementing that solution.

The what4-solvers hacks mentioned above are due to a different problem: different Z3 versions are very unpredictable in what SAW workloads they can support, and it's difficult to find a single version that works well on everything we want to do with SAW. Arguably, this is just as much of a toolchain issue than it is a SAW one. I wouldn't be opposed to opening a separate issue for the task of figuring out a Single Blessed Version™ of Z3 to use everywhere, although I'm not sure where we should open it. Maybe the what4-solvers issue tracker?

@mccleeary-galois
Copy link
Contributor

If I understand correctly, the "comprehensive solution" is to check to see if your solver's version number lies within a known range of supported solvers beforehand? If so, I would be fine with closing this issue in and dedicating #390 to the task of implementing that solution.

The what4-solvers hacks mentioned above are due to a different problem: different Z3 versions are very unpredictable in what SAW workloads they can support, and it's difficult to find a single version that works well on everything we want to do with SAW. Arguably, this is just as much of a toolchain issue than it is a SAW one. I wouldn't be opposed to opening a separate issue for the task of figuring out a Single Blessed Version™ of Z3 to use everywhere, although I'm not sure where we should open it. Maybe the what4-solvers issue tracker?

I have been calling out what4-solvers in issues around this so I think it makes sense to have that be the source of "Single Blessed Version™ of Z3"

@sauclovian-g
Copy link
Contributor

No, what I meant by a comprehensive solution is a robust way to have multiple version of the same solver on tap, and to be able to choose between them for proofs in a non-awful way.

I suppose that's more general than what's actually written in #390, in which case I suppose I ought to make a new issue (instead of repurposing this one) describing that more cogently, then close both of these.

I think there will be times when what4-solvers will need to ship two z3s, or two yicicies,or whatever.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
tooling: CI Issues involving CI/CD scripts or processes type: enhancement Issues describing an improvement to an existing feature or capability
Projects
None yet
Development

No branches or pull requests

4 participants