Fix PEERDIST_ERROR_SHUTDOWN_IN_PROGRESS (0X00000FD8)
This error pops up when BranchCache or PeerDist service refuses a request because it's mid-shutdown. Usually happens during Windows updates or service restarts.
When does this error show up?
You're running Windows 10 or Windows Server 2019. Maybe you're installing an update, or you triggered a manual restart of the BranchCache service. Suddenly, you get PEERDIST_ERROR_SHUTDOWN_IN_PROGRESS (0X00000FD8). The exact message: "A shutdown operation is already in progress."
This happens most often when Windows Update tries to restart the PeerDist service mid-cycle. I've also seen it when someone runs net stop PeerDistSvc while the service is already shutting down from a previous command. The system locks itself into a 'pending shutdown' state and refuses all new requests until it clears.
Root cause
The PeerDist service (Peer Distribution Service) is the backbone of BranchCache. It's designed to cache files from peers on your local network to save bandwidth. But the service has a bad habit of getting stuck in a shutdown state. Windows sends a stop signal, the service starts closing handles and releasing resources, then something hangs — a network share, a cached file lock, you name it. The service stays in a limbo state, and any new PeerDist API call (like from Windows Update) returns error 0X00000FD8.
Had a client last month whose entire print queue died because of this. Their print server was trying to update a shared driver, and the BranchCache service on that machine was stuck mid-shutdown. The update failed, the print queue froze, and everyone blamed the printer. Nope — it was this error.
The fix
Skip the GUI. Go straight to command line. Here's what works.
Step 1: Kill the stuck service
Open Command Prompt as Administrator. Run:
sc queryex PeerDistSvc
Look at the state. If it says STOP_PENDING, it's stuck. Now force-kill it:
taskkill /F /FI "SERVICES eq PeerDistSvc"
This nukes all processes tied to that service. Don't worry — it won't hurt anything. The service will restart cleanly next time.
Step 2: Delete the service (temporary)
If taskkill doesn't clear the state, delete the service and recreate it:
sc delete PeerDistSvc
Then:
sc create PeerDistSvc binPath= "C:\Windows\system32\svchost.exe -k PeerDist" type= own start= demand
Yes, the space after binPath= is required. I've fat-fingered that more times than I'll admit.
Step 3: Reboot and test
Restart the machine. After boot, run:
net start PeerDistSvc
Then check the error by running something that triggers BranchCache — like Get-BCStatus in PowerShell, or simply start a Windows Update scan. If no error, you're golden.
What if it still fails?
Two things to check:
- Check for pending updates. Windows Update can hold the service hostage. Run
wuauclt /detectnow /updatenow(Windows 10) orUsoClient ScanInstallWait(Windows 11). Let it finish, then try the fix again. - Look for orphaned handles. Use Process Explorer (from Sysinternals) and search for handles with
PeerDist. Kill any process holding those handles. I've seen a third-party backup tool hold a BranchCache handle and cause this exact error.
If you're on a domain, and BranchCache is managed via Group Policy, check that the policy isn't forcing the service to start automatically. If it is, disable BranchCache via GPO, reboot, then re-enable it after confirming the error is gone.
That's it. No registry hacks, no PowerShell scripts that take 20 steps. Just a clean kill and restart.
Was this solution helpful?