Skip to content

Sdk.Tests net11.0 module hung on Linux CI (#442 run 39031358513, 50 min, not reproduced in 4 configurations on dev-01) #447

Open

Description

@Blind-Striker

What happened

In #442's run 39031358513 (head 656db84f), the Linux job's Test step ran from 12:11:15 to 12:58:51 UTC, until the run was cancelled. A green master run finishes that step in about 4 minutes.

The step runs dotnet test --configuration Release --no-build --max-parallel-test-modules 4. Its log shows the following:

Module Result
OpenCode.Sdk.Extensions.Tests net10.0 and net11.0 passed, 12:11:21
OpenCode.Sdk.Tools.Tests net10.0 passed (+2033), 12:13:46
OpenCode.Sdk.Tests net10.0 passed (+2800), 12:14:50
OpenCode.Sdk.Tests net11.0 started at 12:11:18 and never finished

The job timeout killed the process before it wrote a TRX, so no test row is named. Windows and macOS were green on the same head.

Not reproduced on dev-01 (Linux)

All four runs used the same head (656db84f) on dev-01, with these settings:

  • OPENCODE_SDK_TESTS_BUN_MISMATCH=allow, because dev-01 has Bun 1.4.3 and the pin is 1.4.2;
  • OPENCODE_SDK_TESTS_RUN_ROOT=/var/tmp/…;
  • TMPDIR under ~/.tools/tmp;
  • DOTNET_CLI_USE_MSBUILD_SERVER=0.
# Configuration Result
1 Launcher namespace, net10.0 166/170. The 4 reds are environmental: the service fixture was not built.
2 Launcher namespace, net11.0 170/170
3 All of OpenCode.Sdk.Tests, net11.0 alone 2798/2800. The 2 reds are environmental: netstandard2.0 and net472 assets not built. Slowest row 15.0 s. No hang.
4 CI's exact command (--max-parallel-test-modules 4, every module) OpenCode.Sdk.Tests net10.0 2800/2800 and net11.0 2800/2800, about 2.5 min each. The 3 Tools.Tests reds are environmental: jscpd not installed in that worktree.

Next

  1. A CI change adds the Microsoft Testing Platform session --timeout to the Test steps. A hung module then ends inside its step and leaves a TRX that names its in-flight rows.
  2. After that merges, [RT-E2] refactor: the launcher runs on its seams' clock, and shipped src bans the system clock #442 is rebased, and its CI serves as the diagnostic run.

If the hang recurs, the row is named and fixed. If not, this issue stays open while the timeout guard watches.

The red was recorded with the lead before any rerun.

Activity

  1. Blind-Striker commented on Oct 17, 2026

    @Blind-Striker
    CollaboratorAuthor

    Next escalation, if this recurs and the listed-minus-recorded diff from the CI --timeout guard does not name the row: Microsoft.Testing.Extensions.HangDump, which names in-flight tests. It is a test-side package, so it needs a dependency decision.

  2. Blind-Striker commented on Oct 17, 2026

    @Blind-Striker
    CollaboratorAuthor

    Diagnostic run on #442 rebased onto #449 (head 28eb395, run 39043694161): green on all three OSes, with each Test step finished well inside the new 25-minute session timeout: Linux 15:10:26-15:13:56, macOS 15:11:15-15:15:10, Windows 15:12:51-15:18:57. The hang did not recur. This stays open as a non-deterministic suspect: the next occurrence fails inside its step, and test-results/main/listed-tests.txt narrows the in-flight rows.

  3. added this to the 1.0 milestone on Oct 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions