#36180 qt: don't abort or drop settings when dynamic settings are disabled
| Reviewability | Reviews | Agreement | Size | ||||
|---|---|---|---|---|---|---|---|
| #36180 qt: don't abort or drop settings when dynamic settings are disabled | Ready | 0 | Crickets | 55 + 53 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
Fixes crashes in bitcoin-qt when running with -nosettings alongside -resetguisettings or legacy GUI settings. It guards settings writes in NodeImpl so ArgsManager::WriteSettingsFile does not throw, prevents dropping legacy settings when migration cannot write to disk, and updates OptionsModel and OptionsDialog to warn when settings fail to persist.
Problem: When -nosettings is used, ArgsManager::WriteSettingsFile throws an exception, causing bitcoin-qt to abort on startup during legacy settings migration or when resetting GUI settings. Furthermore, failed settings writes previously closed the options dialog reporting success and prompted for a restart that would wipe in-memory changes.
Reviewability
Ready
Nothing known that would invalidate a review now.
Waiting on (from the thread read):
- reviewer: sedited to acknowledge the reply, or other reviewers to review 2026-10-27
Agreement
Crickets
no substantive comment either way
Thread notes: Author answered sedited's question regarding relevance to the QML GUI.
Objections, suggestions, and questions:
| Reviewer | Type | Harm, request, or question | Status | Must be | Author replied | Quote |
|---|---|---|---|---|---|---|
| sedited (member) | question, scope | whether this issue and fix are relevant for the QML GUI as well | answered · author explained how the changes affect gui-qml and noted mock updates will be needed | answered | yes | 2026-10-19: 'Is this relevant for the qml gui too?' Status from: 2026-10-27: jeanpablojp: 'From reading gui-qml, partly.' |
Participants:
- sedited (member, question, 1 statements 2026-10-19 to 2026-10-19): asked whether the change is also relevant for the QML GUI
Files
53 lines under test/bench/ci.
- src/qt/optionsmodel.cpp +34/-21
- src/qt/test/optiontests.cpp +51/-0
- src/interfaces/node.h +6/-2
- src/node/interfaces.cpp +4/-4
- src/qt/optionsmodel.h +7/-0
- src/qt/optionsdialog.cpp +4/-0
- src/qt/test/optiontests.h +2/-0
Card
The short text the ranking pass compares across PRs.
This PR resolves startup crashes in bitcoin-qt when dynamic settings are disabled via -nosettings, specifically during legacy setting migration or when running with -resetguisettings. It also updates the GUI options dialog to alert the user if a setting failed to write to disk instead of claiming success and prompting for a restart. The diff guards NodeImpl write call sites, updates OptionsModel, and adds test coverage in optiontests.cpp. Review has not yet started.
Data
thread read through 2026-10-27 (2 statements), head 7ff7e9bbe5
labels: GUI