') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); [release/10.0] Narrow Mono AOT typeload error cleanup by github-actions[bot] · Pull Request #129804 · dotnet/runtime · GitHub
Skip to content

[release/10.0] Narrow Mono AOT typeload error cleanup - #129804

Merged
steveisok merged 2 commits into
release/10.0from
backport/pr-129748-to-release/10.0
Jun 24, 2026
Merged

[release/10.0] Narrow Mono AOT typeload error cleanup#129804
steveisok merged 2 commits into
release/10.0from
backport/pr-129748-to-release/10.0

Conversation

@github-actions

@github-actionsgithub-actionsBot commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

Backport of #129748 to release/10.0

/cc @vitek-karas

Customer Impact

  • Customer reported
  • Found internally

Fixes#129613

Without this fix, some customer apps fail to AOT compile on .NET 10 with an assertion in inline_method() followed by Failed to AOT compile ... exited with code 134. In the reported case this blocks publishing an iOS app with Mono AOT, while the same scenario worked on .NET 8.

Regression

  • Yes
  • No

This is a regression between .NET 8 and .NET 9 introduced by #91261.

Testing

  • ./build.sh mono -os iossimulator -arch arm64 -c Release -rf mono
  • validated manually against the customer issue sample / reduced repro by replaying the exact failing AOT compiler command and confirming the fixed compiler succeeds where the regressed compiler asserts in inline_method()
  • added a direct Mono mini regression in src/mono/mono/mini/iltests.il
  • local regression validation:
    • mono iltests.exe --run-only missing_field_then_inline
    • mono --aot=full,static iltests.exe

Risk

Low.

This is a targeted fix in Mono AOT compiler error handling plus a focused regression test. The change modifies a path which always fails to correctly handle the missing field reference and allow the application to compile (the error is then reported at runtime when the affected code path executes).

IMPORTANT: If this backport is for a servicing release, please verify that:

  • For .NET 8 and .NET 9: The PR target branch is release/X.0-staging, not release/X.0.
  • For .NET 10+: The PR target branch is release/X.0 (no -staging suffix).

Package authoring no longer needed in .NET 9

IMPORTANT: Starting with .NET 9, you no longer need to edit a NuGet package's csproj to enable building and bump the version.
Keep in mind that we still need package authoring in .NET 8 and older versions.

vitek-karasand others added 2 commits June 24, 2026 15:43
Only clear the expected recoverable field-resolution metadata errors after lowering the failure into runtime throw IR.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@vitek-karasvitek-karas self-assigned this Jun 24, 2026
@vitek-karas
vitek-karas requested a review from BrzVladJune 24, 2026 15:54
@vitek-karasvitek-karas added area-Codegen-AOT-mono Servicing-consider Issue for next servicing release review labels Jun 24, 2026
@lewinglewing added Servicing-approved Approved for servicing release and removed Servicing-consider Issue for next servicing release review labels Jun 24, 2026
@steveisok
steveisok enabled auto-merge (squash) June 24, 2026 18:02
@rbhandarbhanda added this to the 10.0.10 milestone Jun 24, 2026
@lewing

Copy link
Copy Markdown
Member

/ba-g infra

Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-Codegen-AOT-monoServicing-approvedApproved for servicing release

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Failed to AOT compile aot-instances.dll, the AOT compiler exited with code 134

5 participants

@lewing@BrzVlad@steveisok@vitek-karas@rbhanda