Skip to content

[release/10.0.1xx] [CI] Misc fixes#24896

Open
rolfbjarne wants to merge 20 commits intorelease/10.0.1xxfrom
dev/rolf/backport-pr-24893-release/10.0.1xx-2026-03-16
Open

[release/10.0.1xx] [CI] Misc fixes#24896
rolfbjarne wants to merge 20 commits intorelease/10.0.1xxfrom
dev/rolf/backport-pr-24893-release/10.0.1xx-2026-03-16

Conversation

rolfbjarne and others added 14 commits March 12, 2026 10:57
This fixes the following problem:

* We default the max simulator version to the SDK version of an OS (currently 26.2)
* However, iOS/tvOS 26.3 exists, and that's the simulator 'xcodebuild -downloadPlatform' installs with Xcode 26.3.
* The max simulator version is what we use in xharness to decide which simulator to run tests in.
* The result is that xharness will try to use/create a simulator for iOS 26.2, but that might not be possible (unless said simulator was already installed from before the current build), because it wasn't provisioned.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
… iOS/tvOS 26.3

Replace xamvideotest.mp4 with a freshly-generated, well-formed H.264 Baseline
video. The old video (created in 2015 by Mainconcept encoder) had non-standard
dimensions (438x434, not multiples of 16) and produced codecBadDataErr (-8969)
on iOS/tvOS 26.4 simulators where the decoder is stricter.

The new video uses standard dimensions (320x240), H.264 Constrained Baseline
profile, and is generated with ffmpeg to ensure well-formed NAL units.

Also add WaitForAsynchronousFrames() after FinishDelayedFrames() in all async
decode tests. FinishDelayedFrames() directs the session to emit all delayed
frames, but WaitForAsynchronousFrames() is needed to block until all async
callbacks have completed before checking assertions.

Fixes #24844

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…n auth

Replace all uses of the xamops.azdevex.provisionator-task.provisionator@3
AzDO task with a new provision.yml template that uses the
provisionator-bootstrap.sh script with BosStorageMirror SAS token
authorization.

This bypasses dl.internalx.com entirely, which suffers from 502 timeouts
under concurrent load (>10 parallel requests) due to sequential KeyVault
token scanning hitting the 120s httpPlatform request timeout.

The new approach:
- Generates short-lived SAS tokens via AzurePowerShell@5
- Downloads provisionator directly from bosstoragemirror.blob.core.windows.net
- Eliminates the dl.internalx.com bottleneck

This follows the same pattern already adopted by the AgentCleanser and
ClientTools.Provisionator pipelines.

Note: The pipeline will need the 'Xamarin - RelEng (BosStorageMirror-Contributor-MI)'
Azure service connection authorized for the macios pipeline.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add shellcheck disable directives for SC2220 (missing *) case in getopts)
and SC2181 (indirect exit code check with $?) since this is an upstream
script from ClientTools.Provisionator.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Backports CI changes to run Provisionator via a shared template + bootstrap script, switching authentication to short-lived BosStorageMirror SAS tokens (instead of the AzDO Provisionator task/GitHub token), to reduce dl.internalx.com timeout issues under load.

Changes:

  • Replaced direct xamops.azdevex.provisionator-task.provisionator@2 usages with a shared templates/common/provision.yml template.
  • Added templates/common/provision.yml to generate SAS tokens via AzureCLI and invoke a new provisionator-bootstrap.sh script.
  • Added provisionator-bootstrap.sh (and a local .gitignore) to download/cache Provisionator from BosStorageMirror and execute it.

Reviewed changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
tools/devops/automation/templates/windows/reserve-mac.yml Switch Xcode provisioning to the shared provision template.
tools/devops/automation/templates/tests/build.yml Switch test dependency provisioning to the shared provision template.
tools/devops/automation/templates/mac/build.yml Switch (disabled) brew provisioning step to shared template wiring.
tools/devops/automation/templates/build/build.yml Switch product/framework provisioning to shared template (preserving retry behavior).
tools/devops/automation/templates/common/provision.yml New template: generate SAS tokens + invoke bootstrap script with env-based auth.
tools/devops/automation/scripts/provisionator-bootstrap.sh New bootstrapper: download Provisionator from BosStorageMirror (SAS) and execute.
tools/devops/automation/scripts/.gitignore Ignore extracted _provisionator cache directory.

You can also share your feedback on Copilot code review. Take the survey.

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

This comment has been minimized.

…o have consistent results. (#24574)

Use an autorelease pool to ensure object lifetime is consistent, and thus asserts work as expected.
@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

This comment has been minimized.

@vs-mobiletools-engineering-service2

This comment has been minimized.

rolfbjarne and others added 3 commits March 20, 2026 18:36
1. Split the AdaptiveTest into 4 different tests to make it easier to figure out
   where crashes occur.

2. Use autorelease pools to have more consistent memory management. This means
   the OnReleaseInfo callbacks will be called during the test, so adjust accordingly.

3. Create a CGRenderingBufferProvider in OnAllocate callbacks. This seems to be
   what fixes the crash. This also makes it so that the calls to CGBitmapContext.ToImage()
   succeed, so adjust accordingly.
…correct buffer size. (#24862)

The hardcoded 512-byte rendering buffer was far too small for a 256x256
adaptive bitmap context. Replace with the correct size computed from the
adaptive parameters (AlignedBytesPerRow * Height) to avoid SIGSEGV in
CGBitmapContextCreateImage when it tries to read beyond the buffer.

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ized buffer (#24920)

CreateAdaptive_3 and CreateAdaptive_4 used a hardcoded 512-byte buffer for
a 256x256 adaptive bitmap context. When ToImage() called
CGBitmapContextCreateImage, CoreGraphics tried to copy the bitmap data from
this tiny buffer, reading past the allocation and causing a SIGSEGV.

Fix CreateAdaptive_3 by computing the buffer size from
parameters.AlignedBytesPerRow * parameters.Height (matching CreateAdaptive_2).

Fix CreateAdaptive_4 by using a 1MB buffer, large enough for any 256x256
adaptive bitmap format.

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@vs-mobiletools-engineering-service2
Copy link
Collaborator

✅ [CI Build #dbbcc8f] Build passed (Build packages) ✅

Pipeline on Agent
Hash: dbbcc8ff55aaf2d7fc650580fd1759b1baa51e98 [PR build]

@vs-mobiletools-engineering-service2
Copy link
Collaborator

✅ [PR Build #dbbcc8f] Build passed (Detect API changes) ✅

Pipeline on Agent
Hash: dbbcc8ff55aaf2d7fc650580fd1759b1baa51e98 [PR build]

@vs-mobiletools-engineering-service2
Copy link
Collaborator

✅ API diff for current PR / commit

NET (empty diffs)

✅ API diff vs stable

NET (empty diffs)

ℹ️ Generator diff

Generator Diff: vsdrops (html) vsdrops (raw diff) gist (raw diff) - Please review changes)

Pipeline on Agent
Hash: dbbcc8ff55aaf2d7fc650580fd1759b1baa51e98 [PR build]

@vs-mobiletools-engineering-service2
Copy link
Collaborator

✅ [CI Build #dbbcc8f] Build passed (Build macOS tests) ✅

Pipeline on Agent
Hash: dbbcc8ff55aaf2d7fc650580fd1759b1baa51e98 [PR build]

@vs-mobiletools-engineering-service2
Copy link
Collaborator

💻 [CI Build #dbbcc8f] Tests on macOS M1 - Mac Monterey (12) passed 💻

All tests on macOS M1 - Mac Monterey (12) passed.

Pipeline on Agent
Hash: dbbcc8ff55aaf2d7fc650580fd1759b1baa51e98 [PR build]

@vs-mobiletools-engineering-service2
Copy link
Collaborator

💻 [CI Build #dbbcc8f] Tests on macOS X64 - Mac Sonoma (14) passed 💻

All tests on macOS X64 - Mac Sonoma (14) passed.

Pipeline on Agent
Hash: dbbcc8ff55aaf2d7fc650580fd1759b1baa51e98 [PR build]

@vs-mobiletools-engineering-service2
Copy link
Collaborator

💻 [CI Build #dbbcc8f] Tests on macOS arm64 - Mac Sequoia (15) passed 💻

All tests on macOS arm64 - Mac Sequoia (15) passed.

Pipeline on Agent
Hash: dbbcc8ff55aaf2d7fc650580fd1759b1baa51e98 [PR build]

@vs-mobiletools-engineering-service2
Copy link
Collaborator

💻 [CI Build #dbbcc8f] Tests on macOS M1 - Mac Ventura (13) passed 💻

All tests on macOS M1 - Mac Ventura (13) passed.

Pipeline on Agent
Hash: dbbcc8ff55aaf2d7fc650580fd1759b1baa51e98 [PR build]

@vs-mobiletools-engineering-service2
Copy link
Collaborator

💻 [CI Build #dbbcc8f] Tests on macOS arm64 - Mac Tahoe (26) passed 💻

All tests on macOS arm64 - Mac Tahoe (26) passed.

Pipeline on Agent
Hash: dbbcc8ff55aaf2d7fc650580fd1759b1baa51e98 [PR build]

@vs-mobiletools-engineering-service2
Copy link
Collaborator

🔥 [CI Build #dbbcc8f] Test results 🔥

Test results

❌ Tests failed on VSTS: test results

0 tests crashed, 16 tests failed, 114 tests passed.

Failures

❌ linker tests

8 tests failed, 36 tests passed.

Failed tests

  • link sdk/iOS - simulator/Debug: Crashed
  • link sdk/iOS - simulator/Release: Crashed
  • link all/iOS - simulator/Debug: Crashed
  • link all/iOS - simulator/Release: Crashed
  • link all/iOS - simulator/Debug (don't bundle original resources): Crashed
  • trimmode copy/iOS - simulator/Debug: Crashed
  • trimmode copy/iOS - simulator/Release: Crashed
  • trimmode link/iOS - simulator/Debug: Crashed

Html Report (VSDrops) Download

❌ monotouch tests (iOS)

7 tests failed, 4 tests passed.

Failed tests

  • monotouch-test/iOS - simulator/Debug (ARM64): Crashed
  • monotouch-test/iOS - simulator/Release (NativeAOT, ARM64): Crashed
  • monotouch-test/iOS - simulator/Debug (managed static registrar): Crashed
  • monotouch-test/iOS - simulator/Release (managed static registrar, all optimizations): Crashed
  • monotouch-test/iOS - simulator/Release (NativeAOT, x64): Crashed
  • monotouch-test/iOS - simulator/Debug (interpreter): Crashed
  • monotouch-test/iOS - simulator/Release (interpreter): Crashed

Html Report (VSDrops) Download

❌ monotouch tests (MacCatalyst)

1 tests failed, 14 tests passed.

Failed tests

  • monotouch-test/Mac Catalyst/Release (static registrar): Failed (Test run failed.
    Tests run: 3497 Passed: 3347 Inconclusive: 10 Failed: 1 Ignored: 149)

Html Report (VSDrops) Download

Successes

✅ cecil: All 1 tests passed. Html Report (VSDrops) Download
✅ dotnettests (iOS): All 1 tests passed. Html Report (VSDrops) Download
✅ dotnettests (MacCatalyst): All 1 tests passed. Html Report (VSDrops) Download
✅ dotnettests (macOS): All 1 tests passed. Html Report (VSDrops) Download
✅ dotnettests (Multiple platforms): All 1 tests passed. Html Report (VSDrops) Download
✅ dotnettests (tvOS): All 1 tests passed. Html Report (VSDrops) Download
✅ framework: All 2 tests passed. Html Report (VSDrops) Download
✅ fsharp: All 4 tests passed. Html Report (VSDrops) Download
✅ generator: All 5 tests passed. Html Report (VSDrops) Download
✅ interdependent-binding-projects: All 4 tests passed. Html Report (VSDrops) Download
✅ introspection: All 6 tests passed. Html Report (VSDrops) Download
✅ monotouch (macOS): All 12 tests passed. Html Report (VSDrops) Download
✅ monotouch (tvOS): All 11 tests passed. Html Report (VSDrops) Download
✅ msbuild: All 2 tests passed. Html Report (VSDrops) Download
✅ windows: All 3 tests passed. Html Report (VSDrops) Download
✅ xcframework: All 4 tests passed. Html Report (VSDrops) Download
✅ xtro: All 1 tests passed. Html Report (VSDrops) Download

Pipeline on Agent
Hash: dbbcc8ff55aaf2d7fc650580fd1759b1baa51e98 [PR build]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants