Skip to content

clang++ Assertion failure "too many large addends" #26428

Description

@jonpryor

Apple platform

iOS

Framework version

net10.0-*, net11.0-ios

Affected platform version

.NET 10, .NET 10 11 Preview 6

Description

When trying to build a certain app for Native AOT, the build fails in a clang++ call from the <LinkNativeCode/> task.

Steps to Reproduce

Apologies, as the repro is not small…

git clone https://github.com/unoplatform/uno
cd uno
# error is not limited to this commit; commit used for consistency/future reproducibility
git checkout 83effab5c73cddf21ef3ee7598edd9f6e45771fb
dotnet publish -f net10.0-ios -p:UnoTargetFrameworkOverride=net10.0-ios -p:SkiaPublishAot=true -p:DebugType=none -p:UNO_DISABLE_ANALYZERS_IN_SAMPLES=true -bl src/SamplesApp/SamplesApp.Skia.netcoremobile/SamplesApp.Skia.netcoremobile.csproj

Note: -p:DebugType=none is present in order to work around dotnet/runtime#132164

Note: -p:SkiaPublishAot=true sets $(PublishAot)=true within SamplesApp.Skia.netcoremobile.csproj.

Eventually, the above dotnet publish command will fail (it takes awhile; after 302.4s in my case):

    /usr/local/share/dotnet/packs/Microsoft.iOS.Sdk.net10.0_26.1/26.1.10502/targets/Xamarin.Shared.Sdk.targets(1862,3): error 
      clang++ exited with code 1:
      0  0x10250552c  __assert_rtn + 252
      1  0x1023eb65c  ld::Fixup::setAddend(long long, std::__1::function<unsigned int (long long)>) + 352
      2  0x102450f9c  ld::DynamicAtom::addFixup(ld::file_format::FixupKind, unsigned int, ld::Atom const*, ld::Atom const*, long long) + 368
      3  0x1023f9190  ld::FixupFromRelocs::diff(relocation_info const&, relocation_info const&, long long) const + 252
      4  0x102411f98  ld::InputFiles::SliceParser::parseObjectFile(mach_o::Header const*) const + 5960
      5  0x10241d940  ld::InputFiles::SliceParser::parse() const + 696
      6  0x102420c48  ld::InputFiles::parseAllFiles(void (ld::AtomFile const*) block_pointer)::$_0::operator()(unsigned long, ld::FileInfo const&) const + 516
      7  0x18c7dd4c8  _dispatch_client_callout2 + 16
      8  0x18c7d81a4  _dispatch_apply_invoke3 + 336
      9  0x18c7dd4b0  _dispatch_client_callout + 16
      10  0x18c7c6630  _dispatch_once_callout + 32
      11  0x18c7d72f4  _dispatch_apply_invoke + 248
      12  0x18c7dd4b0  _dispatch_client_callout + 16
      13  0x18c7fad6c  _dispatch_channel_invoke.cold.9 + 28
      14  0x18c7d5adc  _dispatch_root_queue_drain + 708
      15  0x18c7d6120  _dispatch_worker_thread2 + 184
      16  0x18c97be84  _pthread_wqthread + 232
      ld snapshot written at /tmp/SamplesApp-2026-08-10-144756.ld-snapshot
      ld: Assertion failed: (_addend == uniqueIndex && "too many large addends"), function setAddend, file Fixup.cpp, line 1445.
      clang++: error: linker command failed with exit code 1 (use -v to see invocation)

The 3rd line from the end mentions /tmp/SamplesApp-2026-08-10-144756.ld-snapshot, which in turn contains an assert_info file:

Assertion failed: (_addend == uniqueIndex && "too many large addends"), function setAddend, file Fixup.cpp, line 1445.
0  0x10250552c  __assert_rtn + 252
1  0x1023eb65c  ld::Fixup::setAddend(long long, std::__1::function<unsigned int (long long)>) + 352
2  0x102450f9c  ld::DynamicAtom::addFixup(ld::file_format::FixupKind, unsigned int, ld::Atom const*, ld::Atom const*, long long) + 368
3  0x1023f9190  ld::FixupFromRelocs::diff(relocation_info const&, relocation_info const&, long long) const + 252
4  0x102411f98  ld::InputFiles::SliceParser::parseObjectFile(mach_o::Header const*) const + 5960
5  0x10241d940  ld::InputFiles::SliceParser::parse() const + 696
6  0x102420c48  ld::InputFiles::parseAllFiles(void (ld::AtomFile const*) block_pointer)::$_0::operator()(unsigned long, ld::FileInfo const&) const + 516
7  0x18c7dd4c8  _dispatch_client_callout2 + 16
8  0x18c7d81a4  _dispatch_apply_invoke3 + 336
9  0x18c7dd4b0  _dispatch_client_callout + 16
10  0x18c7c6630  _dispatch_once_callout + 32
11  0x18c7d72f4  _dispatch_apply_invoke + 248
12  0x18c7dd4b0  _dispatch_client_callout + 16
13  0x18c7fad6c  _dispatch_channel_invoke.cold.9 + 28
14  0x18c7d5adc  _dispatch_root_queue_drain + 708
15  0x18c7d6120  _dispatch_worker_thread2 + 184
16  0x18c97be84  _pthread_wqthread + 232

A similar assert happens when using .NET 11 Preview 6 with Xcode 26.6.

Did you find any workaround?

No response

Build logs

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions