0X00000423

Fix ERROR_CIRCULAR_DEPENDENCY (0X00000423) - Circular Service Dependency

Server & Cloud Intermediate 👁 6 views 📅 Jun 8, 2026

This error happens when Windows service dependencies loop back on themselves. Here's how to find and fix the bad dependency in the registry.

Yeah, this error is a head-scratcher the first time you see it. You're staring at 0x00000423 — or sometimes 1059 in the event log — and the service just won't start. The message says something about a circular dependency. What's actually happening here is that somewhere in the service's dependency chain, it loops back on itself. Maybe ServiceA depends on ServiceB, and ServiceB indirectly depends on ServiceA. Windows catches this at startup and refuses to start either of them.

The Real Fix — Find and Fix the Dependency

Don't waste time uninstalling and reinstalling the service. That won't fix it because the broken dependency is stored in the registry. The real fix is to identify the circular chain and break it.

  1. Open an elevated command prompt (Run as Administrator).
  2. Run sc qc <servicename> for the service that's failing. Replace <servicename> with the actual name — like spooler or LanmanServer. You'll see the service name in the error message or the event log.
  3. Look at the DEPENDENCIES line. It lists services this service depends on, separated by slashes. If you see the same service name listed — or a chain that eventually leads back to the starting service — you've found the problem.

For example, if sc qc MyService returns DEPENDENCIES: OtherService / MyService, that's the circular dependency. Fix it by editing the registry.

  1. Open regedit as Administrator.
  2. Navigate to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<servicename>.
  3. Right-click the DependOnService value (a multi-string value) and select Modify.
  4. Remove the entry that points back to itself or creates the loop. In our example, remove MyService from its own dependency list. Leave the other legitimate dependencies intact.
  5. Click OK, close regedit, and restart the service using sc start <servicename>.

That's it. The service should start now.

Why This Fix Works

The service control manager (SCM) in Windows checks dependency trees before starting any service. If it detects a cycle — where service A needs service B, and service B needs service A — it bails out with ERROR_CIRCULAR_DEPENDENCY. This is a safety mechanism: starting one service in a circular chain would require starting the other first, which itself requires the first, creating an infinite loop. The SCM doesn't know how to break that tie, so it gives up.

The fix removes the self-referencing entry. Why would a service ever depend on itself? Usually it's a quirk from a misconfigured installer or a manual edit gone wrong. Sometimes driver updates or third-party software botch the dependency list during an upgrade. The registry holds the authoritative list of dependencies, so fixing it there bypasses any corrupted configuration files or bad drivers.

One thing people miss: after you fix the dependency, the service might still fail to start because the missing dependency chain broke something else. Run sc qc again and verify the dependencies are all valid services that actually exist on your system. If a dependency points to a service that no longer exists, you'll get a different error (ERROR_DEPENDENT_SERVICES_RUNNING or ERROR_SERVICE_DOES_NOT_EXIST). That's a separate problem, but fixing the dependency chain clears the circular error.

Less Common Variations of the Same Issue

Indirect Circular Dependencies

Sometimes the loop isn't obvious from a single sc qc query. For example, Service A depends on Service B, Service B depends on Service C, and Service C depends on Service A. You won't see the full chain from just looking at one service. The SCM still detects it and spits out the same error code.

To trace indirect loops, run sc qc on each service in the dependency chain. I've seen this with core Windows services like RpcSs (RPC) and LanmanServer (Server). If you're getting this error on a system service, don't blindly delete dependencies — you might break something critical. Instead, check if Microsoft has a KB article for that specific service. Sometimes a Windows Update or hotfix introduces a bad dependency. In that case, uninstalling the update might be safer than editing the registry.

Group Dependencies

The DEPENDENCIES field can also list service groups (like NetworkProvider and NetGroup) instead of individual service names. Groups are preceded by + in the output. If a group dependency creates a cycle — for instance, if a service belongs to a group that depends on the same service — you'll see the same error.

Fixing group dependencies is trickier because you can't just remove the group from the DependOnService value without risking startup issues for other services in the group. The safest approach here is to change the service's group membership itself, not the dependency list. Check the Group value under the service's registry key. If moving the service to a different group fixes it, you've found the root cause. This is rare but I've seen it happen with custom driver services that were assigned to the wrong load order group.

Windows Server 2016 and 2019

On Windows Server 2016 and 2019, I've encountered this error specifically with the WAS (Windows Process Activation Service) and W3SVC (World Wide Web Publishing Service) during IIS reconfiguration. The dependency chain there is: WAS -> W3SVC -> WAS. Microsoft has a known fix: stop both services, then start WAS first, then W3SVC. But if you're automating with scripts, the registry fix from earlier is more reliable. Just remove W3SVC from WAS's dependency list — it's not actually needed for WAS to start.

Prevention — How to Avoid This

Three rules:

  • Never manually edit a service's dependency list unless you're absolutely sure. One typo and you get this error. If you're writing deployment scripts, use sc config instead of direct registry changes. sc config validates the dependency chain before applying it. If it detects a cycle, it will refuse the change with a clear error message.
  • When installing third-party software, check the event log after installation. If you see this error right after an install, the installer is the culprit. Roll back the install or contact the vendor for a fix. Don't try to patch around it — that'll break on the next update.
  • If you're developing a service or driver, test dependency chains in a VM. Microsoft's documentation clearly states that circular dependencies are not supported. The SCM will reject them, so don't waste time trying to make them work. Design your service architecture with a clear dependency hierarchy — no loops.

That's it. Go fix that registry key and get on with your day.

Was this solution helpful?