Known Build Error: libuv assertion "new_time >= loop->time" on Windows AzDO agents (exit code 57005)
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
{
"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 fromsrc\win\core.c, line 327C:\vss-agent\4.273.0\externals\node20_1\bin\node.exe— assertion fromc:\ws\deps\\\uv\src\win\core.c, line 327
This is distinct from the npm-ci 0xDEAD crash family tracked at nodejs/node#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:
- The agent-bundled
externals\node24/node20_1are not controlled by the pipeline. - The
UseNode@1task 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 | dotnet/aspnetcore | #67010 | Test: Windows Server x64 (Install Node 24.14.1 + 5 follow-on Node-based tasks) |
Related
- nodejs/node#62991 — separate 0xDEAD crash family (npm ci TCP/buffer), tracked independently
- microsoft/azure-pipelines-tasks#22195, #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 |
Source: dotnet/aspnetcore