#32409 test: Introduce `SUPPRESS_ABORT_MESSAGE` environment variable
| Reviewability | Reviews | Agreement | Size | ||||
|---|---|---|---|---|---|---|---|
| #32409 test: Introduce `SUPPRESS_ABORT_MESSAGE` environment variable | Author silent 186d | 0 -1 | Mild | 0 + 17 tests | |||
|
|
|
|
| |||
Reviewability: ReadyStalePaused Agreement: StrongPositivePositive w/ caveatsNeutralMildDisputedBlockedCrickets Reviews: current code-review ACKs, then (+stale ACKs) and -NACKs; greener = more ACKs. Size: lines added or modified outside tests, then in tests; greener = smaller. | |||||||
Goal
Adds an environment variable check (`SUPPRESS_ABORT_MESSAGE`) to the test setup utility (`src/test/util/setup_common.cpp`). When built with MSVC and run with this variable set, it invokes `_set_abort_behavior(0, _WRITE_ABORT_MSG)` to suppress the GUI message box generated by `abort()` or failing `assert()` calls.
Problem: When running tests compiled with the MSVC debug runtime in unattended automated environments, assertion failures pop up a blocking GUI dialog that halts execution until an interactive timeout occurs. This affects developers and CI running MSVC debug builds.
Reviewability
Stale · Author silent 186d
No author activity for 186 days; a review may wait a long time for a response.
Agreement
Mild
objection that needs a change was answered, no reply from the objector (fanquake (NACK): adds an undocumented and unused environment variable and code path to the repository)
Thread notes: fanquake is blocking the PR with a NACK because the environment variable is unused and undocumented in-tree; sedited also questions adding unused code. Earlier concerns from maflcko about inconsistent binary behavior and fanquake about relying on third-party CI variables were resolved by reworking the code.
Objections, suggestions, and questions:
| Reviewer | Type | Harm, request, or question | Status | Must be | Author replied | Quote |
|---|---|---|---|---|---|---|
| maflcko (member) | objection, approach | inconsistent assert behavior across different test binaries | fixed · fix pushed · v1, not yet re-checked | answered | yes | 2025-05-04: 'assert/Assert seems to be used widely in the codebase, so shouldn't this be done for all test binaries, or none? Otherwise the same assert could lead to inconsistent behavior, depending on which test binary ran into it.' Status from: 2025-05-04: hebasto: 'Thanks! Reworked.' |
| fanquake (member) | objection, approach | test runtime behavior relies on third-party environment variables not documented or set by the project | fixed · fix pushed · v1, not yet re-checked | answered | yes | 2025-05-06: 'Not sure about compiler specific changes, that rely on the presence of an undocumented environment variable (which we don't explicitly set as far as I can tell?), to make tests work properly.' Status from: 2025-05-15: hebasto: 'Reworked to avoid relying on third-party set environment variables.' |
| fanquake (member) | objection, maintenance | adds an undocumented and unused environment variable and code path to the repository | answered · reply on record; standing not assessed yet · v1, not yet re-checked | changed | yes | 2026-02-18: 'What is the status of this? (NACK) given this is still undocumented and unused in this repository.' |
| sedited (contributor) | objection, maintenance | adds dead code that is not used by any in-tree configuration | answered · reply on record; standing not assessed yet · v1, not yet re-checked | answered | yes | 2026-03-25: 'I'm also not sure about adding this without anything actually using it. hodlinator's suggestion of just dropping the env variable fine to me.' |
Support:
- hodlinator (contributor) (Concept ACK, 2026-02-18): GUI assert MessageBoxes on Windows are the bane of CI immemorial as long as binaries built with Microsoft runtime are run on CI
Participants:
- shahsb (none, neutral, 2 statements 2025-05-03 to 2025-05-03): suggested using _WIN32 and gave an unreasoned Concept ACK
- maflcko (member, objection, 5 statements 2025-05-04 to 2026-03-25): raised concern about inconsistent assert handling across test binaries; later asked about bitcoind and clang-cl
- fanquake (member, objection, 11 statements 2025-05-06 to 2026-08-19): NACKed adding undocumented and unused code to the repository
- achow101 (member, neutral, 1 statements 2025-10-22 to 2025-10-22): asked whether the PR was still being worked on
- hodlinator (contributor, support, 3 statements 2026-02-18 to 2026-02-20): Concept ACKed to avoid GUI assert message boxes stalling CI
- sedited (contributor, objection, 2 statements 2026-03-25 to 2026-03-25): objected to adding code without anything using it and suggested dropping the environment variable
Files
17 lines under test/bench/ci.
- src/test/util/setup_common.cpp +17/-0
Card
The short text the ranking pass compares across PRs.
hebasto introduces the SUPPRESS_ABORT_MESSAGE environment variable to suppress the MSVC assertion message box in test_bitcoin and fuzz binaries on Windows. This aims to avoid unattended CI test timeouts when assertions fail under the MSVC debug runtime. However, Bitcoin Core does not use MSVC debug builds in its in-tree CI or set this variable anywhere in the repository. fanquake has NACKed the PR as unused and undocumented code, and the PR is stale with no author response since April 2026.
Data
thread read through 2026-08-19 (39 statements), head 8d674717df
Discussion read under schema 1 rules: suggestions and questions may be missing, and an objection may combine several harms (schema history).
labels: Windows, Tests
Categories
Test infrastructure
P4 · platform fix (ranking pass: Moved to the bottom: the variable is set by nothing in-tree and has been NACKed as unused, so there is no problem being solved today.)
Suppresses blocking Windows GUI assertion popups during unattended MSVC debug test runs via an environment variable. It is a narrow utility change that is currently not hooked up to any in-tree CI job.
Membership: Labeled 'Tests' and modifies test setup utility code in `src/test/util/setup_common.cpp`.
Factors: security/stability 0, bug 0, performance 0, user value 0, leverage 0