arkavo-org / arkavo-org/VRMMetalKit
iOS 27.0 beta simulator: Metal framework asserts crash PipelineBinaryArchive + readable-depth tests on Xcode Cloud
- Dominant language
- Swift
- Stars
- 6
- Forks
- 2
- Avg merge
- 18h 51m
- Merged PRs (30d)
- 26
Description
Xcode Cloud rolled to the Xcode 27 / iOS 27.0 beta simulator image (observed 2026-07-02; last green runs were 2026-06-19 on iOS 26 images). On the new image, 8 tests fail via `abort()` inside the Metal framework itself — not in VMK code. Reproduced locally on the iOS 27.0 (24A5355p) simulator via `xcodebuild test -project VRMMetalKitCI.xcodeproj -scheme VRMMetalKitHost`.
## Failures
**1. `PipelineBinaryArchive.serialize()` — 6 tests crash (signal abrt)**
```
Metal:+[MTLLoader sliceIDForDevice:legacyDriverVersion:airntDriverVersion:]
Metal:MTLReportFailure → abort
VRMMetalKitTests:PipelineBinaryArchive.serialize()
```
`MTLBinaryArchive` serialization assert-aborts in the iOS 27 beta sim driver. Affected: `testSerializeWritesReloadableArchive`, `testPersistentArchiveRoundTripsThroughCache`, `testPartialPreloadedArchiveSelfHeals`, `testWarmReloadDoesNotRewriteArchive`, `testRendererWritesArchiveWhenFlagEnabled`, `testRendererDisablesArchiveOnSharedAfterInit`.
**2. `ZFightingFrameAnalysisTests.testCreateReadableDepthBuffer` — 1 crash**
```
Metal:-[MTLTextureDescriptorInternal validateWithDevice:] → abort
MTLSimDriver:-[MTLSimDevice newTextureWithDescriptor:]
```
The readable-depth-texture descriptor used by the test helper trips a new (or newly-enforced) validation on the sim driver.
**3. `SpringBoneRendererDeterminismTests` — known #283 flake under parallel execution** (last-ULP float divergence; passes in isolation).
## Impact
- Library behavior on **supported targets (iOS 26 / macOS 26)** is unaffected — same source was green on those images.
- The `PipelineBinaryArchive` abort is inside Metal and cannot be caught; if the iOS 27 sim behavior ships to GM, the opt-in archive feature would crash apps running in the simulator.
## Suggested fixes
1. Gate `PipelineBinaryArchive` serialization off under `targetEnvironment(simulator)` on OS ≥ 27 (or probe once and disable), so the opt-in feature degrades gracefully instead of aborting.
2. Skip/guard the affected tests on the iOS 27 simulator until Apple fixes the beta driver (worth a Feedback to Apple).
3. Consider pinning the Xcode Cloud workflow to a released Xcode version to keep release CI off beta images.
Failing Xcode Cloud build: https://appstoreconnect.apple.com/teams/34e73773-3ee4-4354-8a86-370467333d1a/frameworks/7995A8F9-A728-4CFA-8DDA-0319C1061A57/builds/48cd9f8c-5d01-4b2d-a447-79eb4037f2e2
Noted as a known CI-environment issue in the 1.0.0 release notes.
Contributor guide
Research direction
Start by reproducing the failures with `xcodebuild test -project VRMMetalKitCI.xcodeproj -scheme VRMMetalKitHost` on the iOS 27 simulator. Inspect the six PipelineBinaryArchive tests, `ZFightingFrameAnalysisTests.testCreateReadableDepthBuffer`, and the Xcode Cloud workflow. Done means beta-simulator runs no longer abort while supported iOS 26 and macOS 26 behavior remains green.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- swift
- Domain
- ci-cd, mobile-dev, testing-qa
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100