| Previous | Next |
| ERROR_GUID_SUBSTITUTION_MADE | ERROR_LONGJUMP |
ERROR_STOPPED_ON_SYMLINK
What ERROR_STOPPED_ON_SYMLINK means
The operation intentionally did not follow the reparse point. This commonly appears when a caller asks to inspect the link itself, enforces a no-follow policy, or must continue resolution in user mode.
Where it appears
- secure path validation and sandbox boundaries
- file APIs using open-reparse-point semantics
- backup, indexing, deployment, and package tools
Likely causes
- a component in the path is a symbolic link or junction
- the API was configured not to traverse reparse points
- resolution crossed a policy boundary requiring explicit handling
Evidence to collect
- the original path and the component at which traversal stopped
- reparse tag and link target
- flags passed to the create/open operation
- whether the target escapes the expected root
How to respond
Decide explicitly whether following the link is permitted. To inspect it, open the reparse point itself; to continue, resolve the target under a policy that prevents traversal outside trusted roots. Never remove no-follow behavior merely to make the error disappear.
Diagnostic interpretation
For this particular status, the decisive evidence is the original path and the component at which traversal stopped, reparse tag and link target. Those details separate the documented condition from unrelated failures that happen to occur nearby.
Record the numeric code together with the symbolic name ERROR_STOPPED_ON_SYMLINK, the API or subsystem that produced it, and the first preceding failure. For ERROR_STOPPED_ON_SYMLINK, a later cleanup occurrence may describe a consequence instead of the initiating defect.
Example
A package extractor validates destination paths beneath a staging directory. Resolution stops on a junction inserted inside that tree. The safe response is to inspect the reparse target and reject extraction if it escapes staging, not to reopen the path with unrestricted following.
Implementation guidance
Code handling ERROR_STOPPED_ON_SYMLINK should distinguish a terminal failure from a warning, progress indication, or request to repeat after a defined state change. When handling ERROR_STOPPED_ON_SYMLINK, preserve handles and output fields only where the originating API explicitly keeps them valid. The ERROR_STOPPED_ON_SYMLINK path needs bounded retries and cleanup that tolerates partial initialization.
Validation after remediation
Repeat one controlled operation that previously produced ERROR_STOPPED_ON_SYMLINK. For ERROR_STOPPED_ON_SYMLINK, verify both disappearance of the status and completion of the specific state transition described above. Adjacent messages around ERROR_STOPPED_ON_SYMLINK must also be reviewed so a fallback is not mistaken for a complete repair.
References
Looking for a different code? Search another status or error code.
