Skip to content

Bug: breadcrumb-dropdown-coordinator-stale-closepending-drops-reopen #462

Description

@drmoisan
  • Work Mode: full-bug

Summary

BreadcrumbDropDownOpenCoordinator.CloseCore never clears its _closePending flag on the
successful close path. The flag latches true after the first close that actually closes the
host and is never reset. RequestOpen consults that stale flag and can silently return a
already-closed sentinel task instead of opening the drop-down, dropping a legitimate reopen
request with no error and no log.

Environment

  • OS/version: Windows 11 Pro 10.0.26200
  • Runtime: .NET Framework 4.8.1 WinForms VSTO add-in with Microsoft WebView2
  • Affected path: QuickFiler item folder-selector breadcrumb drop-down open/close lifetime

Steps to Reproduce

  1. Open the breadcrumb drop-down so _host.IsOpen is true.
  2. Close it through a path that reaches CloseCore and where _host.Close(reason) returns true.
    _closePending is now permanently true.
  3. Cause the host to become open again through a path that does not route through
    CloseCore/RequestOpen - for example SetDroppedDown(true) at :108-112, where
    _openSelector() reports no change and _isSelectorOpen() is true.
  4. Call RequestOpen.
  5. Observe that the guard at :92 is satisfied (_closePending stale-true and _host.IsOpen
    true) and ClosedTask is returned. The open request is discarded silently.

Expected Behavior

_closePending describes an in-flight close. Once _host.Close has completed successfully the
close is no longer pending, so a subsequent RequestOpen should proceed and open the drop-down.

Actual Behavior

_closePending remains true for the remaining lifetime of the coordinator, so RequestOpen can
short-circuit to ClosedTask whenever the host is open.

Logs / Screenshots

(not provided in potential file)

Impact / Severity

  • Blocker
  • High
  • Medium
  • Low

The user-visible symptom is a folder-selector drop-down that intermittently refuses to reopen until
the viewer is recycled. The failure is silent - no exception, no log line - which makes it
expensive to diagnose from a bug report. Severity is Medium because reaching the state requires the
specific reopen path in step 3 rather than the common open/close cycle.

Source

From: docs/features/potential/2026-08-07-breadcrumb-dropdown-coordinator-stale-closepending-drops-reopen.md

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions