#32409 test: Introduce `SUPPRESS_ABORT_MESSAGE` environment variable

full analysis

https://github.com/bitcoin/bitcoin/pull/32409 · hebasto · +17/-0 in 1 files, 1 commits · labels: Windows, Tests

Goal

  • Prevent MSVC debug test runs from hanging on assertion popup dialogs in automated setups
  • Helps developers and external automation running unattended Windows debug builds

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.

Category: Build and CI (#55 of 55)

P4 · platform fix

  • P4 because Bitcoin Core does not build with the MSVC debug runtime or set this variable in CI
  • The benefit is limited entirely to external out-of-tree nightly builds

The change targets Windows CI timeouts, but Bitcoin Core's own build and CI matrix does not build with the MSVC debug runtime or set this environment variable. It only aids external out-of-tree nightly builds.

Membership: Addresses runtime execution behavior on the Windows platform under MSVC CI configurations.

Factors: security/stability 0, bug 0, performance 0, user value 0, leverage 0

Category: Test infrastructure (#45 of 45)

P4 · test coverage

  • P4 because the suppression variable is never enabled within the repository
  • Offers no benefit to in-tree test runs unless external environments set the variable

It adds a helper in the test framework to quiet abort dialogs, but provides no benefit to in-tree test runs because the variable is never enabled within the repository.

Membership: Modifies test initialization in `src/test/util/setup_common.cpp`.

Factors: security/stability 0, bug 0, performance 0, user value 0, leverage 0

Reviewability: Stale: Author silent

  • Author has been silent for months with questions unanswered on whether the change is obsolete

The author has been inactive on the PR for 140 days and has not answered questions raised by fanquake in August 2026.

Author status: silent since April 2026; has not replied to fanquake's August 2026 query regarding usage and #33593

Open concerns:

  • The environment variable is neither set nor used anywhere in Bitcoin Core's CI or documentation, making it dead code in-tree (fanquake, sedited).
  • Question whether the need is obsoleted by #33593 (UCRT runtime transition) remains unanswered (fanquake).
  • Suggestions to apply the abort suppression unconditionally under `_MSC_VER` / `_DEBUG` rather than gating it behind an environment variable (hodlinator, sedited).

Resolved concerns:

  • Applying the change to test setup rather than individual fuzz targets (maflcko, hebasto).
  • Avoiding reliance on third-party CI default environment variables by using an explicit project variable (fanquake, hebasto).

Agreement: Blocked

  • Objection because the environment variable is undocumented and unused in the repository (fanquake)
  • Suggested suppressing aborts unconditionally rather than adding an unused variable (hodlinator, sedited)
  • Questioned if runtime transitions already made this obsolete, with no author reply (fanquake)

Blocked: fanquake NACKs adding unused and undocumented code; author has not replied since April 2026.

fanquake has an explicit NACK because the environment variable is not used in the repository or documented for users. Other reviewers (hodlinator, sedited) questioned the env var approach, and the author has not responded to follow-up questions.

  • fanquake (2026-02-18): 'What is the status of this? (NACK) given this is still undocumented and unused in this repository.'
  • hodlinator (2026-02-18): 'Concept ACK as long as we run binaries built with the proprietary Microsoft runtime on CI.'
  • sedited (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.'
  • fanquake (2026-08-19): 'I can\'t tell from this link if you mean you are using this already... Also is this obsoleted with #33593?'

Review verdicts (DrahtBot): 0 -1

Files

17 lines under test/bench/ci.

  • src/test/util/setup_common.cpp +17/-0

Card

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 openrouter/google/gemini-3.8-flash, generated 2026-09-17T15:49, confidence high, input hash 2fb37f8944c28312