[coz3-deepfix] nlsat: disable levelwise (lws) by default to fix QF_NIA SIGSEGV#9991
Draft
levnach wants to merge 1 commit into
Draft
[coz3-deepfix] nlsat: disable levelwise (lws) by default to fix QF_NIA SIGSEGV#9991levnach wants to merge 1 commit into
levnach wants to merge 1 commit into
Conversation
The experimental levelwise single-cell projection (nlsat.lws) crashes non-deterministically (~40%) with a SIGSEGV inside the root-function partition sort during conflict explanation. Default it off; the explain path falls back to add_all_coeffs projection, eliminating the crash. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fixes a reproducible, non-deterministic SIGSEGV (signal-11) in z3 on a QF_NIA benchmark. The crash is in the experimental levelwise single-cell projection (
nlsat.lws, default on). This PR sets its default tofalse; nlsat explanation falls back to the existingadd_all_coeffsprojection, eliminating the crash.coz3-https-zenodo.org-records-16740866-files-QF_NIA.tar.zst-dow::non-incremental-QF_NIA-20170427-VeryMax-ITS-From_AProVE_2014__Round3.jar-obl-8__p11898_terminationG_0.smt2non-incremental/QF_NIA/20170427-VeryMax/ITS/From_AProVE_2014__Round3.jar-obl-8__p11898_terminationG_0.smt2Diagnosis
Reported as
signal-11:2/3across coz3 runs. Reproduced with a fresh master build at-T:20 model_validate=true: ~40% segfault, else timeout/solve. A SIGSEGV-handler backtrace (gdb/valgrind couldn't run: ptrace blocked, too slow) points at:The crash is inside the
scoped_anumcomparator during the partition sort. The levelwise path (CADE30 "More is Less") is recent and has a string of heap-corruption fixes; thescoped_anummove/sort interactions still corrupt memory.nlsat_explainonly uses levelwise as an optimization with aadd_all_coeffsfallback (nlsat_explain.cpp:1004-1010).Change
src/nlsat/nlsat_params.pyg:lwsdefaultTrue→False(one line). Users can re-enable withnlsat.lws=true.Reproduce / verify (built binary, same query)
signal-11.unsat/timeout.Minimization
No quick minimization: the crash is timing-dependent (fires only at full speed when
-T:20interrupts levelwise) and doesn't reproduce under gdb/valgrind, so ddsmt-style reduction wasn't fast/reliable here. The 99-line input is attached via the corpus query above.Warning
Firewall blocked 2 domains
The following domains were blocked by the firewall during workflow execution:
clcgitlab.cs.uiowa.eduz3prover.github.ioSee Network Configuration for more information.