Skip to content

Conversation

@ilonatommy
Copy link
Member

Connected to dotnet/icu#686.

In case of failure, analyze additional changes in #93756.

@ilonatommy ilonatommy self-assigned this Oct 30, 2025
Copilot AI review requested due to automatic review settings October 30, 2025 13:41
@ilonatommy ilonatommy added arch-wasm WebAssembly architecture area-System.Globalization area-codeflow for labeling automated codeflow labels Oct 30, 2025
@dotnet-policy-service
Copy link
Contributor

Tagging subscribers to this area: @dotnet/area-system-globalization
See info in area-owners.md if you want to be subscribed.

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

This PR updates the Microsoft.NETCore.Runtime.ICU.Transport dependency from version 11.0.0-alpha.1.25466.1 to 11.0.0-alpha.1.25530.2, along with updating the corresponding commit SHA in the ICU repository.

Key Changes

  • Updated ICU transport package version to a newer alpha build
  • Updated the corresponding SHA reference to the dotnet/icu repository

Reviewed Changes

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

File Description
eng/Version.Details.xml Updated the ICU transport dependency version and commit SHA
eng/Version.Details.props Updated the MSBuild property for the ICU transport package version

@ilonatommy
Copy link
Member Author

ilonatommy commented Oct 30, 2025

✅ WASI/WASM failure

src/native/libs/build-native.proj(61,5): error MSB3073: (NETCORE_ENGINEERING_TELEMETRY=Build) The command ""/__w/1/s/src/native/libs/build-native.sh" wasm Release outconfig net10.0-wasi-Release-wasm -os wasi -cmakeargs "-DCMAKE_ICU_DIR=/__w/1/s/.packages/microsoft.netcore.runtime.icu.transport/11.0.0-alpha.1.25530.2/runtimes/wasi-wasm/native" -cmakeargs "-DCMAKE_TZD_DIR=/__w/1/s/.packages/system.runtime.timezonedata/11.0.0-beta.25467.3/contentFiles/any/any/data" -cmakeargs "-DCLR_CMAKE_RUNTIME_MONO=1" -cmakeargs "-DCMAKE_PRODUCT_VERSION=10.0.0" -cmakeargs "-DCMAKE_CONTINUOUS_INTEGRATION_BUILD=true" -cmakeargs "-DCMAKE_NET_CORE_APP_CURRENT_VERSION=10.0" -cmakeargs "-DCMAKE_BUILD_LIBRARIES_CONFIGURATION=Release" -cmakeargs "-DCMAKE_BUILD_RUNTIME_CONFIGURATION=Release" -numproc 4 " exited with code 2.

The new ICU 72 headers mark ucol_safeClone as deprecated, and our wasm build treats warnings as errors (-Werror), so the call at pal_collation.c:340 surfaces as an error.
Similar to e6a7f9b.
Addressed by 62a4dfe.

@ilonatommy
Copy link
Member Author

ilonatommy commented Oct 30, 2025

✅ WBT that use custom ICU files are failing - their custom ICU files were prepared with ICU v 68. WBT checking non-custom ICU files pass locally. I will update the custom files soon.

 Failed to load resource: the server responded with a status of 404 (Not Found)
  ICU call ulocdata_getCLDRVersion failed with error #2 'U_MISSING_RESOURCE_ERROR'.
  [MONO] Process terminated.
  [MONO] Unable to load required ICU Globalization data. Please see https://aka.ms/dotnet-missing-libicu for more information
     at Wasm.Build.Tests.WasmTemplateTestsBase.BrowserRunTest(String runArgs, String workingDirectory, RunOptions runOptions) in /workspaces/runtime/src/mono/wasm/Wasm.Build.Tests/Templates/WasmTemplateTestsBase.cs:line 384
     at Wasm.Build.Tests.WasmTemplateTestsBase.BrowserRunTest(String runArgs, String workingDirectory, RunOptions runOptions) in /workspaces/runtime/src/mono/wasm/Wasm.Build.Tests/Templates/WasmTemplateTestsBase.cs:line 386
     at Wasm.Build.Tests.WasmTemplateTestsBase.BrowserRun(RunOptions runOptions) in /workspaces/runtime/src/mono/wasm/Wasm.Build.Tests/Templates/WasmTemplateTestsBase.cs:line 319
     at Wasm.Build.Tests.WasmTemplateTestsBase.RunForPublishWithWebServer(RunOptions runOptions) in /workspaces/runtime/src/mono/wasm/Wasm.Build.Tests/Templates/WasmTemplateTestsBase.cs:line 307
     at Wasm.Build.Tests.IcuTestsBase.PublishAndRunIcuTest(Configuration config, Template templateType, Boolean aot, String testedLocales, GlobalizationMode globalizationMode, String extraProperties, Boolean onlyPredefinedCultures, String locale, String icuFileName) in /workspaces/runtime/src/mono/wasm/Wasm.Build.Tests/IcuTestsBase.cs:line 160; _testOutput=[] Executing (Captured Output) - /workspaces/runtime/artifacts/bin/dotnet-latest/dotnet new wasmbrowser  -  in pwd /workspaces/runtime/artifacts/bin/Wasm.Build.Tests/Release/net10.0/linux-x64/wbt artifacts/icu_Release_False_bbyczl2h_pt5

Addressed by f2e1a67.

@ilonatommy
Copy link
Member Author

ilonatommy commented Oct 30, 2025

linker tests:

eng/testing/linker/trimmingTests.targets(168,5): error : (NETCORE_ENGINEERING_TELEMETRY=Build) Error: [Failed Test]: /__w/1/s/src/libraries/System.Runtime/tests/System.Runtime.Tests/TrimmingTests/InvariantGlobalizationFalse.cs. The Command /__w/1/s/artifacts/bin/trimmingTests/projects/System.Runtime.TrimmingTests/InvariantGlobalizationFalse/browser-wasm/bin/Release/net10.0/browser-wasm/AppBundle/run-v8.sh return a non-success exit code 1.

details:

 MONO_WASM: External component has thrown an exception.
     at System.Globalization.CompareInfo.SortHandleCache.GetCachedSortHandle(String sortName)
     at System.Globalization.CompareInfo.IcuInitSortHandle(String interopCultureName)
     at System.Globalization.CompareInfo.InitSort(CultureInfo culture)
     at System.Globalization.CompareInfo..ctor(CultureInfo culture)
     at System.Globalization.CultureInfo.get_CompareInfo()
     at System.Globalization.TextInfo.PopulateIsAsciiCasingSameAsInvariant()
     at System.Globalization.TextInfo.ChangeCaseCommon[ToUpperConversion](TextInfo instance, String source)
     at System.Globalization.TextInfo.ToUpper(String str)
     at System.String.ToUpper(CultureInfo culture)
     at System.String.ToUpper()
     at Program.Main(String[] args)
     at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
     at System.Reflection.MethodBaseInvoker.InvokeDirectByRefWithFewArgs(Object obj, Span`1 copyOfArgs, BindingFlags invokeAttr)
EXEC : error : External component has thrown an exception. [/workspaces/runtime/src/libraries/System.Runtime/tests/System.Runtime.Tests/TrimmingTests/System.Runtime.TrimmingTests.proj]
      at cn (/workspaces/runtime/artifacts/bin/trimmingTests/projects/System.Runtime.TrimmingTests/InvariantGlobalizationFalse/browser-wasm/bin/Release/net10.0/browser-wasm/AppBundle/_framework/dotnet.runtime.js:3:27438)
      at on (/workspaces/runtime/artifacts/bin/trimmingTests/projects/System.Runtime.TrimmingTests/InvariantGlobalizationFalse/browser-wasm/bin/Release/net10.0/browser-wasm/AppBundle/_framework/dotnet.runtime.js:3:26676)
      at rn (/workspaces/runtime/artifacts/bin/trimmingTests/projects/System.Runtime.TrimmingTests/InvariantGlobalizationFalse/browser-wasm/bin/Release/net10.0/browser-wasm/AppBundle/_framework/dotnet.runtime.js:3:26530)
      at /workspaces/runtime/artifacts/bin/trimmingTests/projects/System.Runtime.TrimmingTests/InvariantGlobalizationFalse/browser-wasm/bin/Release/net10.0/browser-wasm/AppBundle/_framework/dotnet.runtime.js:3:178215
      at Object.xc [as runMain] (/workspaces/runtime/artifacts/bin/trimmingTests/projects/System.Runtime.TrimmingTests/InvariantGlobalizationFalse/browser-wasm/bin/Release/net10.0/browser-wasm/AppBundle/_framework/dotnet.runtime.js:3:178322)
      at async run (/workspaces/runtime/artifacts/bin/trimmingTests/projects/System.Runtime.TrimmingTests/InvariantGlobalizationFalse/browser-wasm/bin/Release/net10.0/browser-wasm/AppBundle/test-main.js:361:32)

more details when we log the error in

:

console.error: [pal_collation] ucol_open('tr-TR') failed: U_COLLATOR_VERSION_MISMATCH (28)

U_COLLATOR_VERSION_MISMATCH occurs when the static ICU libraries (libicuuc/libicui18n) and the data bundle linked into the WASM app expose different version tags. The runtime is trying to open the 72.x collation tables, but the packaged data blob still advertises an older collation version.

System.Runtime.Tests log

[15:41:17] info: [FAIL] System.Tests.DateOnlyTests.AllCulturesTest
[15:41:17] info: System.Runtime.InteropServices.ExternalException : External component has thrown an exception.
[15:41:17] info:    at System.Globalization.CompareInfo.SortHandleCache.GetCachedSortHandle(String sortName)
[15:41:17] info:    at System.DateTimeParse.DoStrictParse(ReadOnlySpan`1 s, ReadOnlySpan`1 formatParam, DateTimeStyles styles, DateTimeFormatInfo dtfi, DateTimeResult& result)
[15:41:17] info:    at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)

@ilonatommy ilonatommy requested a review from maraf as a code owner October 30, 2025 15:56
@ilonatommy
Copy link
Member Author

ilonatommy commented Oct 31, 2025

dotnet/icu#686 shipped incorrect prebuilts. They have a bit different size than the ones shipped in icu.transport packages. Static libs were created correctly. That mistake caused [pal_collation] ucol_open('tr-TR') failed: U_COLLATOR_VERSION_MISMATCH (28) and lib and trimming tests failures.

It looks like we have 2 sources of truth - prebuilts for runtime pack and ICU build artifacts for icu.transport packages.

Size diff can be explained by #55637. Not sure yet why the prebuilt file fails and icu.transport does not fail the tests.

@ilonatommy
Copy link
Member Author

ilonatommy commented Nov 1, 2025

[11:05:07] fail: [out of order message from the browser]: http://127.0.0.1:43535/_framework/dotnet.native.js 7:433 Uncaught RangeError: Maximum call stack size exceeded
[11:05:07] fail: MONO_WASM: Maximum call stack size exceeded
                 RangeError: Maximum call stack size exceeded
                     at _uhash_put\28UHashtable*\2c\20UElement\2c\20UElement\2c\20signed\20char\2c\20UErrorCode*\29 (http://127.0.0.1:43535/_framework/dotnet.native.wasm:wasm-function[4906]:0x14a07b)
                     at uhash_put (http://127.0.0.1:43535/_framework/dotnet.native.wasm:wasm-function[4905]:0x14a068)
                     at icu::Hashtable::put\28icu::UnicodeString\20const&\2c\20void*\2c\20UErrorCode&\29 (http://127.0.0.1:43535/_framework/dotnet.native.wasm:wasm-function[4654]:0x13d3b4)
                     at icu::CanonicalIterator::getEquivalents2\28icu::Hashtable*\2c\20char16_t\20const*\2c\20int\2c\20UErrorCode&\29 (http://127.0.0.1:43535/_framework/dotnet.native.wasm:wasm-function[5849]:0x18ac17)
                     at icu::CanonicalIterator::CanonicalIterator\28icu::UnicodeString\20const&\2c\20UErrorCode&\29 (http://127.0.0.1:43535/_framework/dotnet.native.wasm:wasm-function[5844]:0x18a77d)
                     at icu::CollationBuilder::addOnlyClosure\28icu::UnicodeString\20const&\2c\20icu::UnicodeString\20const&\2c\20long\20long\20const*\2c\20int\2c\20unsigned\20int\2c\20UErrorCode&\29 (http://127.0.0.1:43535/_framework/dotnet.native.wasm:wasm-function[5875]:0x18e8aa)
                     at icu::CollationBuilder::addRelation\28int\2c\20icu::UnicodeString\20const&\2c\20icu::UnicodeString\20const&\2c\20icu::UnicodeString\20const&\2c\20char\20const*&\2c\20UErrorCode&\29 (http://127.0.0.1:43535/_framework/dotnet.native.wasm:wasm-function[5870]:0x18e412)
                     at icu::CollationRuleParser::parse\28icu::UnicodeString\20const&\2c\20UErrorCode&\29 (http://127.0.0.1:43535/_framework/dotnet.native.wasm:wasm-function[6061]:0x19b646)
                     at icu::CollationRuleParser::parse\28icu::UnicodeString\20const&\2c\20UErrorCode&\29 (http://127.0.0.1:43535/_framework/dotnet.native.wasm:wasm-function[6061]:0x19aaf7)
                     at icu::CollationRuleParser::parse\28icu::UnicodeString\20const&\2c\20UErrorCode&\29 (http://127.0.0.1:43535/_framework/dotnet.native.wasm:wasm-function[6061]:0x19aaf7)

This upstream's approach might be helpful: unicode-org/icu#2629

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

Labels

arch-wasm WebAssembly architecture area-codeflow for labeling automated codeflow area-System.Globalization

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants