Repository navigation
Keep gamed enabled to avoid XCUITest launch delays - #57
Merged
Merged
Conversation
Controlled Xcode 27.0 / iOS 18.6 experiments isolated com.apple.gamed as the trigger for an approximately 10.4-second warm app-launch delay. DTServiceHub attempted to reach the disabled GameKit service while the app remained before application code. Keeping only gamed enabled removed the delay with every other service selection unchanged; the exact private tooling timeout remains unconfirmed. Use the existing AlwaysEnabled mechanism instead of deleting gamed from the allowlist, so normal reboot-based on/off operations can also repair devices slimmed by earlier versions. Preserve the game-center diagnostic and accept managed always-enabled services in JSON keep lists, keeping existing workaround profiles valid while still rejecting unknown labels. Leave live no-reboot re-enabling semantics and other game services alone. Add regressions for default selection, legacy repair, profile compatibility, and the existing diagnostic. Document the tested environment and repair limitation. The gamed regression fails on the original profile and all make check gates pass after the change. Launch measurements were collected with the equivalent keep-list control before this patch. This commit was created by AI.
Contributor
|
Thank you! This is a very useful finding. I just removed the explanation from the README. The reason for keeping gamed enabled is in the code comment, which should be enough. |
Interlap01
marked this pull request as ready for review
October 8, 2026 11:38
Interlap01
pushed a commit
that referenced
this pull request
Oct 9, 2026
On a never-booted simulator slimmed offline, disabling com.apple.assistantd (the only vendor of com.apple.assistant.dictation) makes Spotlight's search header loop on dictation availability and leak memory without bound (~20-115 MB/s). Keep it enabled via the siri category's AlwaysEnabled, like gamed in #57; re-running `simslim on` repairs devices slimmed earlier. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
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.
Disabling
com.apple.gamedadded about 10.4 seconds to each warm XCUITest app launch with Xcode 27.0 (27A266a) and iOS 18.6 (22G86) on Apple Silicon. This keeps it enabled by default using the existingAlwaysEnabledcompatibility mechanism.Evidence
Each condition in the table used the same short test three times on a fresh iPhone 13 mini simulator. Values below are medians of warm iterations 2 and 3; first-launch work is excluded.
com.apple.gameddisabledgamedkeptThe measured gap ends at XCTest's
Setting up automation sessionactivity and starts at completion of the preceding app-termination activity. It is not a first-visible-frame metric. The complete XCTest Launch activity also dropped from about 14.2 s to 3.4 s when keepinggamed.All 39 short iterations across 13 bisection/control conditions passed. The original and amended full profiles differed by exactly one disabled label, verified from the disabled-service inventory. These experiments used simslim 0.11.0 and an existing Debug app/XCUITest, not a standalone minimal sample. Other Xcode/runtime combinations have not been checked.
During the slow gap, launchd reported
failed lookupforcom.apple.gamed, requested byDTServiceHub; that tooling process logged a GameKit XPC connection error (NSCocoaErrorDomain 4099). Sampling the app showed its main thread at_dyld_start +0, without app-code frames. Keepinggamedremoved the failed lookups. The controls isolate the local trigger, but the exact private tooling call or timeout remains unconfirmed.Original profile:
On a separate fresh simulator, adding
com.apple.gamedto the keep list removes the delay. Use fresh simulators or restore stock through the reboot path between conditions:on --no-rebootdoes not re-enable services already disabled.Changes
gamedfromapps.Labelstoapps.AlwaysEnabled, with a visible explanation. Other game services remain slimmable.onoroffrepairs devices slimmed by older versions.keep: ["com.apple.gamed"]. Unknown labels remain rejected.doctor --requires game-centercompatible and able to detect legacy disabled state.--no-rebootrepair limitation.Validation
gamedregression failed against upstream's original profile and passes with this change.make checkpassed: all Go tests,go vet, Swift formatting lint, shell syntax, and plist lint.Draft for maintainer discussion. No changes to live-bootstrap behavior or other service selections are included.