I would like to report a long-standing File Explorer hang that I have finally been able to investigate with Process Explorer and WinDbg.
The problem did not start with any particular Windows Insider build. It began when I bought this new PC exactly one year ago and has persisted throughout that entire year across many Insider builds.
During that time I have:
- performed two completely clean installations of Windows Insider builds from scratch;
- performed Windows Recovery once;
- installed numerous subsequent Insider builds and updates.
None of this changed the behavior. The problem consistently returned.
Symptoms
If a File Explorer window remains open for many hours, eventually that window becomes completely unresponsive. The desktop and taskbar continue to work normally.
“Launch folder windows in a separate process” is enabled.
The hang is not associated with any obvious action. Explorer may work normally for many hours and then become unresponsive while simply remaining open.
Because this persisted across clean installations, recovery and many different builds, I eventually captured dumps of the affected explorer.exe processes and examined the wait chains and thread stacks.
What the diagnostics showed
Windows Wait Chain Traversal showed one Explorer instance waiting on another Explorer process.
The waiting Explorer thread was blocked in a synchronous COM/RPC call. Its stack included:
CCliModalLoop::BlockFn CSyncClientCall::SendReceive CClientChannel::SendReceive NdrpClientCall3 CoMarshalInterface CStdMarshal::RemoteAddRef
The thread it was waiting for in the other explorer.exe instance was blocked here:
NtWaitForMultipleObjects → CoreMessaging!MessageSession::WaitOnHandleCollection → CoreMessaging!MessageSession::ProcessPendingAlpcConnections → CoreMessaging!MessageSession::WaitOnOutboundAlpcMessages → CoreMessaging!MessageSession::OnFinalRelease
Immediately below that in the stack were:
cdprt!Microsoft::BamoImpl::BaseBamoConnectionImpl::Leave cdprt!UserActivityImpl::~UserActivityImpl twinapi_appcore!UserActivityRequestImpl::~UserActivityRequestImpl twinapi_appcore!UserActivityRequestManagerImpl::InternalRequestUserActivity twinapi_appcore!UserActivityRequestManagerImpl::RequestUserActivity
I did not see any third-party DLLs in the relevant blocking stacks.
This appears to place the hang somewhere in the Windows UserActivity / Connected Devices Platform / CoreMessaging / ALPC path. I do not claim that this identifies the root cause with certainty, but this was the blocking path visible in the dump.
Workaround / test
As an experiment I created:
HKLM\SOFTWARE\Policies\Microsoft\Windows\System\PublishUserActivities
as:
REG_DWORD = 0
and rebooted.
I then opened the same folder in File Explorer that had been used during the previous reproduction and left the Explorer window open as usual.
The window remained fully responsive for approximately 36 hours, until I had to reboot the PC for an unrelated driver update. Previously the hang normally occurred after several hours.
So far, setting PublishUserActivities=0 appears to have prevented the problem.
One 36-hour test is obviously not sufficient to prove causation, but together with the WinDbg stack it seems like a strong indication that the problem may involve the UserActivity / Connected Devices / CoreMessaging path rather than File Explorer itself.
I still have the dump files and can provide additional WinDbg output or specific thread stacks if they would be useful to Microsoft engineers.