Update: I was able to narrow the Explorer hang down much further
I have now captured a full live kernel dump while the File Explorer folder window was actually hung, and the result is much more specific than the earlier user-mode dumps.
The hung CabinetWClass window belonged to explorer.exe PID 45932, GUI thread TID 0xAAEC. That exact GUI thread was blocked in the following path:
UserActivityRequestManagerImpl::RequestUserActivity → cdprt.dll → CoreMessaging!MessageSession::OnFinalRelease → CoreMessaging!MessageSession::WaitOnOutboundAlpcMessages
The ALPC object being waited on is Explorer handle 0xAB8.
From the kernel dump I traced that handle to an ALPC client communication port owned by Explorer. Its matching server communication port belongs to aicontext.exe PID 22948, on a CoreUI connection.
The interesting part is the state of that connection at the moment of the hang.
The Explorer client port was still open and connected — not closed, refused or disconnected — but its Main queue contained exactly one message. !alpc /m identifies it as:
LPC_CONNECTION_REPLY MessageId: 0x1DDC SequenceNumber: 1 Canceled: No Release: Yes
The message is owned by the AIContext server communication port but is queued on the Explorer client communication port. WaitingThread and ServerThread are both NULL.
The server-side AIContext communication port itself is also open and connected and has empty queues.
I then used the AIContext CoreUI connection port as a control group. At the time of the dump it had four active clients:
msedge.exe 0 -> 0 explorer.exe 0 -> 1 WINWORD.EXE 0 -> 0 Notepad.exe 0 -> 0
In other words, Explorer was the only CoreUI client with a queued message. I also inspected the Notepad client port in detail: it was open and connected, with all Main, Direct, Large, Pending and Canceled queues empty.
So the simple explanation “AIContext is hung and Explorer is waiting for it to answer” no longer fits the dump very well. The connection reply has already been generated and delivered into Explorer’s client queue.
My current interpretation is therefore narrower: this looks like a CoreMessaging/CoreUI session lifecycle or teardown problem on the Explorer side. The GUI thread enters MessageSession::OnFinalRelease, waits in WaitOnOutboundAlpcMessages, while an unconsumed LPC_CONNECTION_REPLY remains in its client queue.
I still would not call the queued reply itself the proven root cause. It may be either the trigger or a symptom of the same lifetime/race condition. But the failure is now localized much more tightly than before.
For context, this Explorer hang has survived multiple Insider builds, two clean Insider installations and Windows Recovery, so it does not look like simple profile corruption. I also previously tested PublishUserActivities=0, stopping CDPUserSvc/CDPSvc, and exiting OneDrive/Google Drive; none of those prevented or released the hang.
If Microsoft engineers are interested, I have the full kernel dump from the hung state and the corresponding Explorer/user-mode dumps.