#32409 test: Introduce `SUPPRESS_ABORT_MESSAGE` environment variable

ReviewabilityReviewsAgreementSize
#32409 hebasto test: Introduce `SUPPRESS_ABORT_MESSAGE` environment variableAuthor silent 186d0 -1Mild0 + 17 tests
  • Prevent unattended MSVC debug test runs from hanging on blocking GUI popups during assertion failures
  • Author has been silent for 148 days, so reviews may wait a long time for a response
  • Blocking objection: adds an undocumented and unused environment variable and code path (fanquake)
  • Concern that the added code is dead code unused by any in-tree configuration (sedited)
  • Concept approval to avoid GUI assertion popups stalling Windows CI runs (hodlinator)
  • 0 lines added or modified outside tests
  • 17 lines added or modified in tests
  • 0 lines removed in total
  • 1 files, 1 commits
Test infrastructure#53 of 54
P4 · platform fix
  • P4 because it only targets unattended test runs using the MSVC debug runtime
  • The suppression variable is not hooked up to or used by any in-tree CI job
  • 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.
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:

ReviewerTypeHarm, request, or questionStatusMust beAuthor repliedQuote
maflcko (member)objection, approachinconsistent assert behavior across different test binariesfixed · fix pushed · v1, not yet re-checkedansweredyes2025-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, approachtest runtime behavior relies on third-party environment variables not documented or set by the projectfixed · fix pushed · v1, not yet re-checkedansweredyes2025-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, maintenanceadds an undocumented and unused environment variable and code path to the repositoryanswered · reply on record; standing not assessed yet · v1, not yet re-checkedchangedyes2026-02-18: 'What is the status of this? (NACK) given this is still undocumented and unused in this repository.'
sedited (contributor)objection, maintenanceadds dead code that is not used by any in-tree configurationanswered · reply on record; standing not assessed yet · v1, not yet re-checkedansweredyes2026-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

dossier JSON · extract JSON · model ledger, generated 2026-09-18T03:41, confidence high, input hash 306d35849d7d9862
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