arkavo-org / arkavo-org/VRMMetalKit

iOS 27.0 beta simulator: Metal framework asserts crash PipelineBinaryArchive + readable-depth tests on Xcode Cloud

Open
#370 1 comment 0 reactions 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.