Known Build Error: libuv assertion "new_time >= loop->time" on Windows AzDO agents (exit code 57005)
- Dominant language
- C#
- Stars
- 38.4k
- Forks
- 10.9k
- Avg merge
- 2d 10h
- Merged PRs (30d)
- 281
Description
## Build Information
Build: https://dev.azure.com/dnceng-public/public/_build/results?buildId=1449805
Build error leg or test failing: Build / Test: Windows Server x64
Pull request: https://github.com/dotnet/aspnetcore/pull/67010
## Error Message
```json
{
"ErrorMessage": "Assertion failed: new_time >= loop->time",
"ErrorPattern": "",
"BuildRetry": true,
"ExcludeConsoleLog": true
}
```
## What this is
libuv's monotonic-clock invariant in `src/win/core.c:327` (`uv_update_time`) is violated when the underlying Windows interrupt-time counter steps backwards. This is a virtualization artifact on Azure hosted Windows agents (likely Hyper-V live migration / NTP step on a freshly provisioned VM). It manifests as a native abort with exit code 57005 (0xDEAD) and can fire in **any** Node.js process the agent runs — `UseNode@1`, `PublishBuildArtifacts@1`, `PublishTestResults@2`, etc. — i.e., it is not tied to any specific repo step.
Both bundled node versions on the agent are affected:
- `C:\vss-agent\4.273.0\externals\node24\bin\node.exe` — assertion from `src\win\core.c, line 327`
- `C:\vss-agent\4.273.0\externals\node20_1\bin\node.exe` — assertion from `c:\ws\deps\uv\src\win\core.c, line 327`
This is **distinct** from the npm-ci 0xDEAD crash family tracked at [nodejs/node#62991](https://github.com/nodejs/node/issues/62991) (a separate TCP/buffer corruption hypothesized to be fixed in Node 24.16). Pinning the pipeline Node version (e.g., `Install Node 24.14.1` in `.azure/pipelines/jobs/default-build.yml`) does not help, because:
1. The agent-bundled `externals\node24/node20_1` are not controlled by the pipeline.
2. The `UseNode@1` task itself runs in the agent-bundled Node and crashes *before* the pinned version is installed.
Within the single affected job in build 1449805, the assertion fires **six times across a 90-second window** in successive Node-based AzDO tasks (Install Node, three PublishBuildArtifacts uploads, two PublishTestResults). All produce the same `Exit code 57005 returned from process` line.
## Why `BuildRetry: true`
The assertion is a transient artifact of the host VM's clock — different agent draws will hit different VMs that may not exhibit the issue.
## Why `ExcludeConsoleLog: true`
The signature appears in AzDO timeline task logs only, not in Helix work-item consoles. Scanning Helix logs for this string is wasted work.
## Affected builds (seed; will append as bot reports new hits)
| Build | Repo | PR | Step |
|---|---|---|---|
| [1449805](https://dev.azure.com/dnceng-public/public/_build/results?buildId=1449805) | dotnet/aspnetcore | #67010 | Test: Windows Server x64 (Install Node 24.14.1 + 5 follow-on Node-based tasks) |
## Related
- [nodejs/node#62991](https://github.com/nodejs/node/issues/62991) — separate 0xDEAD crash family (npm ci TCP/buffer), tracked independently
- [microsoft/azure-pipelines-tasks#22195](https://github.com/microsoft/azure-pipelines-tasks/issues/22195), [#22201](https://github.com/microsoft/azure-pipelines-tasks/issues/22201) — task-side mirror bugs for #62991
- libuv has discussed relaxing this assertion upstream since it can fire on legitimately-monotonic-violating virtualization
### Known issue validation
**Build: :mag_right:** https://dev.azure.com/dnceng-public/public/_build/results?buildId=1449805
**Error message validated:** `[Assertion failed: new_time >= loop->time`]
**Result validation:** :white_check_mark: Known issue matched with the provided build.
**Validation performed at:** 6/4/2026 7:41:37 PM UTC
### Report
#### Summary
|24-Hour Hit Count|7-Day Hit Count|1-Month Count|
|---|---|---|
|0|0|0|
Contributor guide
Assessment
This issue has not been assessed yet.