Repository navigation
Prevent reentrant address-book Details dialogs - #1027
Merged
Stephen Griffin (stephenegriffin) merged 1 commit intoOct 21, 2026
Merged
Stephen Griffin (stephenegriffin) merged 1 commit into
Stephen Griffin (stephenegriffin) merged 1 commit into
Conversation
Route all three Details entry points through a shared per-thread guard. Report reentry once, preserve modal provider arguments and cancellation behavior, and add eight provider-independent regressions. Fixes #280 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
macienMSFT
approved these changes
Oct 21, 2026
bwittgen
approved these changes
Oct 21, 2026
Stephen Griffin (stephenegriffin)
deleted the
investigate/280-address-book-dialog-hang
branch
October 21, 2026 21:03
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
Prevent the address-book Details closing-order hang by allowing only one active
IAddrBook::Detailscall per UI thread.Fixes #280.
DIALOG_MODAL, provider arguments, the calling UI thread, and existing cancellation/error behavior.This is an intentional one-active-Details restriction, not a change to Outlook provider internals. Direct-provider and actual-handler controls reproduced the original hang when closing nested Details dialogs out of order.
Validation
git diff --checkpass.0and1: all three UI paths reject reentry, multi-selection warns once, the actual warning dialogs display and dismiss normally, and later Details requests succeed after the original closes. These tests used read-only address-book access, without mailbox/profile writes.Measured native coverage
Compared the same Debug x64 test DLL with the new tests excluded (280/280 passing) and included (288/288 passing). SHA-256 checks verified the DLL was restored unchanged after collection.
Net gain: nine unique production-core lines, +0.1407 percentage points, with no previously executed core lines lost. Coverage is for core code linked into the native test DLL, not repository-wide/UI-handler coverage or exhaustive path coverage.