| Previous | Next |
| ERROR_CANNOT_SWITCH_RUNLEVEL | ERROR_RUNLEVEL_SWITCH_TIMEOUT |
ERROR_INVALID_RUNLEVEL_SETTING
Service run level violates dependency order
ERROR_INVALID_RUNLEVEL_SETTING is Windows system result 15401 (0x00003C29). The configured service ordering cannot satisfy the dependency graph.
ERROR_INVALID_RUNLEVEL_SETTING occurs when a service is assigned a run level higher than one or more services it depends on. The graph would ask the dependent service to be available outside the level in which its prerequisite is guaranteed.
Where this value belongs
ERROR_INVALID_RUNLEVEL_SETTINGcan be observed when service metadata is validated while building a run-level plan.ERROR_INVALID_RUNLEVEL_SETTINGcan be observed when an update changes a service level but not its dependencies.ERROR_INVALID_RUNLEVEL_SETTINGcan be observed when a dependency group expands to include a service at a lower level.
This is a configuration defect, not a slow service. Timeout increases cannot make an invalid dependency ordering correct.
Common interpretation mistakes
ERROR_INVALID_RUNLEVEL_SETTINGis mishandled when only direct dependencies are checked and a transitive violation is missed.ERROR_INVALID_RUNLEVEL_SETTINGis mishandled when load-order groups are omitted from the graph.ERROR_INVALID_RUNLEVEL_SETTINGis mishandled when numeric levels are compared in the wrong direction.ERROR_INVALID_RUNLEVEL_SETTINGis mishandled when configuration is changed on one node but not its peers.
Diagnostic sequence
- Export every service run level and dependency.
- Build the directed dependency graph including groups.
- Find the first edge whose levels violate the rule.
- Check transitive dependencies and cycle detection.
- Compare configuration across clustered or replicated nodes.
- Validate a corrected graph before applying it.
Evidence worth keeping
- For
ERROR_INVALID_RUNLEVEL_SETTING, preserve service-to-level mapping. - For
ERROR_INVALID_RUNLEVEL_SETTING, preserve direct and transitive dependency edges. - For
ERROR_INVALID_RUNLEVEL_SETTING, preserve load-order group membership. - For
ERROR_INVALID_RUNLEVEL_SETTING, preserve configuration version and deployment source. - For
ERROR_INVALID_RUNLEVEL_SETTING, preserve validation output for the corrected graph.
ERROR_INVALID_RUNLEVEL_SETTING is best explained by one offending dependency edge, for example service_A level 4 depends on service_B level 3.
Correct handling and recovery
Move the dependent service to a compatible level or make its prerequisite available at the required level, then validate the complete graph.
Re-run validation after configuration changes. Repeating the switch with the same invalid graph is pointless.
Difference from nearby values
ERROR_CANNOT_SWITCH_RUNLEVEL is an overall switch failure. Code 15401 precisely identifies a run-level relationship that violates dependency ordering.
Practical scenario
An update raises a telemetry service to level 4 while its database dependency remains at level 3. Graph validation returns 15401; aligning the levels restores a valid plan.
Implementation guidance
Validate run-level configuration in deployment CI and reject changes that create cycles or inverted edges. Store the source revision with each applied mapping.
For code 15401, record runlevel_invalid_service, runlevel_service_level, runlevel_dependency, runlevel_dependency_level, and runlevel_config_revision.
References
- Microsoft: System Error Codes 12000–15999 — official Microsoft documentation relevant to
ERROR_INVALID_RUNLEVEL_SETTING. - Microsoft: sc.exe config — official Microsoft documentation relevant to
ERROR_INVALID_RUNLEVEL_SETTING. - Microsoft: QueryServiceStatusEx — official Microsoft documentation relevant to
ERROR_INVALID_RUNLEVEL_SETTING. - Microsoft: EnumDependentServices — official Microsoft documentation relevant to
ERROR_INVALID_RUNLEVEL_SETTING.
Looking for a different code? Search another status or error code.
