Skip to content

[CI] BuildNet10_0App fails to link _mono_helper_box_nullable #26474

Closed

Description

@dalexsoto

Failure signature

BuildNet10_0App fails while linking iOS and Mac Catalyst applications because the AOT-generated System.Private.CoreLib.dll.o references a native runtime symbol that is unavailable:

Undefined symbols for architecture arm64/x86_64:
  "_mono_helper_box_nullable", referenced from:
      wrapper_managed_to_native_object___icall_wrapper_mono_helper_box_nullable_intptr_intptr
      in System.Private.CoreLib.dll.o
ld: symbol(s) not found
clang++: error: linker command failed with exit code 1

Confirmed occurrences

PR / head Azure run / attempt Jobs
#26454 / b956034e64eae11ea91afcec93b11996be9adbe0 15086535 / 1 dotnettests_ios, dotnettests_maccatalyst
#26454 / 918e83b75ed8152cb415cc7627e51ce69bc3124a 15088820 / 1 dotnettests_ios, dotnettests_maccatalyst
#26454 / 3adbceca8e2a7ceb62aaf29c8d03633fd7d3fea2 15090225 / 1 dotnettests_ios, dotnettests_maccatalyst
#26356 / 070e656c01f70d18b2f0a3eac813c9ffbe3bc1e7 15114195 / 1 dotnettests_ios, dotnettests_maccatalyst

Total: 8 confirmed test occurrences across 2 distinct PRs, 4 heads, and 4 Azure runs.

First observed: 2026-08-25. Latest observed: 2026-08-27.

Classification and impact

Deterministic source/runtime linkage failure. The same symbol, generated wrapper, and linker failure reproduce on iOS arm64 and Mac Catalyst x86_64 across multiple dependency-update heads. This blocks the .NET 10 compatibility test in both platform jobs.

Run 15114195 uses .NET SDK 11.0.100-rc.2.26426.102 with the 26.5.10315 .NET 10 Apple SDK packs. The iOS failure ran on AcesShared 20; the Mac Catalyst failure ran on AcesShared 21.

No retry was requested because unchanged retries cannot repair a deterministic runtime/native-pack mismatch. Later #26454 heads stopped reproducing this signature, but it has recurred on #26356; the exact fixing commit was not established from retained diagnostics.

Investigation performed

  • Inspected Azure task logs and NUnit/HTML artifacts for all current failures.
  • Confirmed the exact _mono_helper_box_nullable symbol and System.Private.CoreLib.dll.o reference on both architectures.
  • Searched all open and closed dotnet/macios issues by stable signature, exact symbol, test name, linker error, and component. No issue represents this exact root cause.
  • [CI] DotNetWatch CoreCLR Hot Reload crashes with Bad IL range #26470 tracks a different post-Hot-Reload Bad IL range failure and only mentions this symbol as a separate, previously resolved validation outcome.
  • Older undefined-symbol issues involve different native symbols and causes.

Reproduction pattern

On an affected dependency-update head, build the .NET 10 simple application through:

  • Xamarin.Tests.DotNetProjectTest.BuildNet10_0App(iOS, "ios-arm64")
  • Xamarin.Tests.DotNetProjectTest.BuildNet10_0App(MacCatalyst, "maccatalyst-x64")

The managed AOT object references _mono_helper_box_nullable, but the linked native runtime libraries do not provide it.

Workaround

No confirmed workaround is available. Aligning the managed runtime/AOT output and native runtime pack resolves the underlying class of mismatch; the exact package or commit change still needs to be identified.

Azure artifacts and logs are subject to retention limits.

Activity

  1. added
    ci-postmortemCI post-mortem analysis: flaky tests, infrastructure failures, shared regressions
    on Aug 27, 2026
  2. rolfbjarne commented on Aug 27, 2026

    @rolfbjarne
    Member

    Fixed with 1060054

  3. dalexsoto commented on Aug 27, 2026

    @dalexsoto
    MemberAuthor

    _mono_helper_box_nullable fix validation (2026-08-27)

    PR #26356 head 10600548eb4614d4042b832a8dcc5388b9e612cf removes the obsolete TargetsCurrent=true override so .NET 10 applications use matching .NET 10 AOT and runtime packs.

    In run 15115823:

    This validates the fix on both architectures that previously reproduced the signature.

    Issue-specific checklist: the issue body has no Additional info to collect section.

    The issue remains closed COMPLETED; the successful validation supports the closure reason, so it is not being reopened.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    ci-postmortemCI post-mortem analysis: flaky tests, infrastructure failures, shared regressionscopilot

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions