VeeamBackupSvc Stuck Stopping or Won't Start (StopPending, Stuck Workers)
| Field | Detail |
|---|---|
| Audience | T3 |
| Version | 1.0 |
| Last Updated | October 2026 |
| Applies To | Veeam B&R 13.1.1.18 BDRs |
| Source | HALO 1179664 |
Signal
- NinjaOne raises Veeam service down for
VeeamBackupSvc. - The service shows StopPending and never reaches Stopped.
- An upgrade run logs "VeeamBackupSvc still StopPending after 900 s" or "a maintenance worker is respawning faster than it can be cleared", ending with NEEDS A PERSON.
Never end the service while an upgrade is installing. If the scheduled task DTC-VeeamUpgrade-1146283-Installer is running, or a Veeam.Silent.Install process exists, leave it alone.
Step 1: see which pattern it is
Read-only, on the BDR:
Get-Service VeeamBackupSvc | Select-Object Name, Status
Get-CimInstance Win32_Process -Filter "Name='Veeam.Backup.Manager.exe'" | ForEach-Object {
'{0} PID {1} running {2:n0} min' -f ([regex]::Match([string]$_.CommandLine,'START[A-Z]+').Value), $_.ProcessId, ((Get-Date) - $_.CreationDate).TotalMinutes
}
Get-ChildItem 'C:\ProgramData\Veeam\Backup' -Filter 'Svc.VeeamBackup*.log' -File | Sort-Object LastWriteTime -Desc | Select-Object -First 4 Name, LastWriteTime, @{n='MB';e={[math]::Round($_.Length/1MB)}}
| What you see | Pattern |
|---|---|
| StopPending, no workers listed, service logs rotating seconds apart | A — the service is looping |
One worker (STARTINFRARESCAN or STARTDISCOVER) running for hours or days |
B — a stuck maintenance worker |
Pattern A: the service is looping
The service is stuck mid-shutdown, repeating one error thousands of times. This groups the last 3,000 log lines by message, so the loop stands out:
Get-Content 'C:\ProgramData\Veeam\Backup\Svc.VeeamBackup.log' -Tail 3000 |
ForEach-Object { (($_ -replace '^\[[^\]]*\]\s*<\s*\d+>\s*','') -replace '\d+','#').Trim() } | Where-Object { $_ } |
Group-Object | Sort-Object Count -Descending | Select-Object -First 5 Count, Name | Format-Table -AutoSize -Wrap
The known loop is [CAgentCloseExecuter] An error occurred during asynchronious agent closing with Safe handle has been closed (System.ObjectDisposedException). The service can never finish stopping on its own, and a reboot only resets it until the next stop. No Veeam KB covers it.
Fix: end the stuck process and start the service fresh. With no workers and no installer running, nothing is in flight.
$svc = Get-CimInstance Win32_Service -Filter "Name='VeeamBackupSvc'"
if ($svc.State -eq 'Stop Pending' -and $svc.ProcessId) { Stop-Process -Id $svc.ProcessId -Force; Start-Sleep -Seconds 15 }
Start-Service VeeamBackupSvc
Get-Service Veeam* | Where-Object { $_.StartType -eq 'Automatic' -and $_.Status -ne 'Running' } | Start-Service
Then re-enable the jobs — a wedged service is exactly how a site goes dark. See Veeam Jobs All Disabled.
The upgrade script (v4.52 and later) does this recovery itself at the start of a run, on a failed stop, and in its exit guard. It never ends the service to push an install through. A BDR with this loop recovers its jobs but cannot upgrade, because the loop returns on every stop. Treat it as a Veeam support case.
Pattern B: a stuck maintenance worker
STARTINFRARESCAN is the infrastructure rescan; STARTDISCOVER is agent protection-group discovery. Killing the worker doesn't help, and neither does a reboot — Veeam starts a replacement, and it hangs on the same thing. It's waiting on one target that never answers: a decommissioned server still listed, a computer that's gone, or an unreachable repository path.
- Note the worker's command line from Step 1 — it identifies the protection group or session.
- List the logs written most recently, and read the end of the one the worker is writing. Its last lines usually name the machine or path it's waiting on:
Get-ChildItem 'C:\ProgramData\Veeam\Backup' -Recurse -File -Filter *.log | Sort-Object LastWriteTime -Desc | Select-Object -First 8 LastWriteTime, FullName - Remove or fix that target: take the dead computer out of the protection group, remove the stale managed server, or correct the repository path.
- The next worker then finishes normally, and the service stops cleanly.
Verify
VeeamBackupSvc stops and starts within a minute, the NinjaOne service alert clears, and every expected job is enabled.
Related
- Veeam Setup Failure Reference (13.1.1.18) — setup event 113
- Veeam BDR Script Toolkit
- NinjaOne Veeam Alerts & Custom Fields — Where to Start
| Version | Date | Author | Change |
|---|---|---|---|
| 1.0 | October 2026 | Z. Boogher | Initial release from the v13 upgrade (HALO 1179664). |