fix: pin unity-test-runner to v4.3.2 to fix Unity 6000.6.x builds - #4127
Open
frostebite wants to merge 4 commits into
Open
fix: pin unity-test-runner to v4.3.2 to fix Unity 6000.6.x builds#4127frostebite wants to merge 4 commits into
frostebite wants to merge 4 commits into
Conversation
Unity 6.6+ editors request 1GiB of shared memory and hard-fail with "Insufficient shared memory available - if using Docker, please run the container with --shm-size=1025M" against Docker's 64m default - this surfaced here as a retry-then-fail loop on the 6000.6.0f1 matrix leg that looked like a license activation problem (https://github.com/MirrorNetworking/Mirror/actions/runs/34241094252/job/102111159900), but Unity itself was crashing on startup (exit 134, SIGABRT) before licensing ever got involved. game-ci/[email protected] passes --shm-size=1025m on the Docker run to fix it, without any other change - same action architecture this workflow already ran. Note the floating @v4 tag also already resolves to a fix (a newer thin-wrapper rewrite that shells out to game-ci/cli, which defaults to the same 1025m), so this workflow would likely pass again even unchanged. Pinning to v4.3.2 here instead for the smallest possible diff from what was already running and verified stable. Co-Authored-By: Claude Sonnet 5 <[email protected]>
Full context (root cause, both fixes, and the choice between staying pinned vs. tracking floating @v4) belongs in the PR description / review comments, not baked into the workflow file at this length - every existing comment in this file is 1-3 short lines. Co-Authored-By: Claude Sonnet 5 <[email protected]>
A comment that says "see PR description" is a dangling reference once this merges and the PR itself scrolls out of view - explain the why directly instead, matching how every other comment in this file already stands on its own. Co-Authored-By: Claude Sonnet 5 <[email protected]>
The PR description already carries the full why; a one-line version pin needs no accompanying comment, and it keeps this easier to skim and merge as-is. Co-Authored-By: Claude Sonnet 5 <[email protected]>
3 tasks
frostebite
added a commit
to game-ci/cli
that referenced
this pull request
Sep 9, 2026
Supersedes the approach in #254 (v0.1.54): that release tried to extract the serial embedded in a personal .ulf and reuse it for a portable, account-bound serial activation. Verified correct end-to-end against a synthetic license file (mutation, docker env var construction, shell quoting - all directly tested), but still failed in production against at least one real user's actual .ulf (MirrorNetworking/Mirror#4127, "Machine bindings don't match" even after upgrading to v0.1.54) - something about a real, current personal .ulf's shape doesn't match closely enough for extraction to produce something Unity's licensing client accepts, and there's no way to get a real sample to debug further since it's a secret. Two independent users separately arrived at the same working fix by hand: drop the .ulf entirely and provide just the account credentials. This replaces the extraction attempt with exactly that - whenever a license file and full account credentials are both present and no genuine serial was given, force --unityLicensingMethod=personal through the existing explicit-override mechanism, the same escape hatch a user would reach for manually. No parsing, no new per-platform script logic, same reasoning both users already validated by hand. Co-authored-by: Claude Sonnet 5 <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fixes the retry-then-fail loop on the
6000.6.0f1matrix leg ofRunUnityTests.yml(reported on Discord, reproduced from this run).The actual failure, underneath what looked like a license activation problem:
Unity 6.6+ editors request 1GiB of shared memory and hard-fail on startup (exit 134 = SIGABRT) against Docker's 64m default.
unity-test-runnernever passed--shm-sizeto the Docker run at all, so there was no workaround available. The crash happened to occur during the same editor invocation used for license activation, so it got retried 5 times as if it were a transient licensing error before giving up - hence the "retry cycle."game-ci/[email protected]fixes this by passing--shm-size=1025mon the Docker run - same action architecture this workflow already ran, single-purpose fix, nothing else changes.Update: a second, unrelated issue - now also fixed
After this PR was opened, floating
@v4(which had separately gained the shared-memory fix via a newer rewrite that shells out to thegame-ciCLI) hit a different failure for this workflow:Root cause: this workflow provides both
UNITY_LICENSE(a personal.ulf) andUNITY_EMAIL/UNITY_PASSWORD. A personal.ulfis bound to whichever machine originally requested it, so loading it directly fails on any other machine - and every CI container is a different machine. The pre-rewriteunity-test-runner(whatv4.3.2still runs) avoided this by extracting the embedded serial and activating through the Unity account instead, which works on any machine; that fallback was missing from the CLI-based rewrite. Fixed now in game-ci/cli#254, released asgame-ci/cliv0.1.54.Either option is safe now
v4.3.2(the old, long-stable action architecture) - smallest possible diff, avoids depending on the CLI-based rewrite entirely.@v4unchanged -unity-test-runneralways pulls the latestgame-ciCLI release, so it now includes both fixes above with no workflow change needed at all.Your call - both should be green on
6000.6.0f1now.Test plan
6000.6.0f1matrix leg passing (previously the one consistently failing)🤖 Generated with Claude Code