Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[main] Update dependencies from dotnet/installer #11175

Merged
merged 28 commits into from
Apr 20, 2021

Conversation

dotnet-maestro[bot]
Copy link
Contributor

@dotnet-maestro dotnet-maestro bot commented Apr 9, 2021

This pull request updates the following dependencies

From https://github.com/dotnet/installer

  • Subscription: df3e6147-3e41-4928-6775-08d8f479343c
  • Build: 20210418.6
  • Date Produced: 4/19/2021 3:31 AM
  • Commit: 2455d34cebebfa62772f57be93b2cf99d14dbad2
  • Branch: refs/heads/main

…210408.1

Microsoft.Dotnet.Sdk.Internal
 From Version 6.0.100-preview.3.21202.5 -> To Version 6.0.100-preview.4.21208.1
@mandel-macaque mandel-macaque added the not-notes-worthy Ignore for release notes label Apr 9, 2021
@mandel-macaque
Copy link
Member

/azp run

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@mandel-macaque mandel-macaque added the do-not-merge Do not merge this pull request label Apr 9, 2021
@vs-mobiletools-engineering-service2
Copy link
Collaborator

❌ Tests failed on Build ❌

Tests failed on Build.

API diff

✅ API Diff from stable

View API diff

Test results

7 tests failed, 91 tests passed.

Failed tests

  • monotouch-test/iOS Unified 64-bits - simulator/Debug [dotnet]: Failed
  • monotouch-test/iOS Unified 64-bits - simulator/Debug (LinkSdk) [dotnet]: Failed
  • monotouch-test/iOS Unified 64-bits - simulator/Debug (static registrar) [dotnet]: Failed
  • monotouch-test/iOS Unified 64-bits - simulator/Release (all optimizations) [dotnet]: Failed
  • link sdk/iOS Unified 64-bits - simulator/Debug [dotnet]: Failed
  • link sdk/iOS Unified 64-bits - simulator/Release [dotnet]: Failed
  • introspection/watchOS 32-bits - simulator/Debug (watchOS 5.0): LaunchFailure

Pipeline on Agent XAMBOT-1109'

@dalexsoto
Copy link
Member

/azp run

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@mandel-macaque
Copy link
Member

We should have a build after the merge I just did, else something broke ;)

@mandel-macaque mandel-macaque removed the do-not-merge Do not merge this pull request label Apr 10, 2021
…210409.4

Microsoft.Dotnet.Sdk.Internal
 From Version 6.0.100-preview.3.21202.5 -> To Version 6.0.100-preview.4.21209.4
@dalexsoto
Copy link
Member

/azp run

@azure-pipelines
Copy link

Comment was made before the most recent commit for PR 11175 in repo xamarin/xamarin-macios

@dalexsoto
Copy link
Member

Looks like this got hung yesterday

dalexsoto and others added 3 commits April 11, 2021 08:01
…210410.1

Microsoft.Dotnet.Sdk.Internal
 From Version 6.0.100-preview.3.21202.5 -> To Version 6.0.100-preview.4.21210.1
but the ICU support was added based on P3 but merged after ^
@spouliot
Copy link
Contributor

link sdk failure might be something new in P4

2021-04-12 17:41:39.587029-0400 link sdk[12110:8173256] Could not register the assembly 'link sdk': System.TypeLoadException: Could not resolve type with token 01000083 from typeref (expected class 'System.Security.Principal.IIdentity' in assembly 'System.Runtime, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a')
   at System.Reflection.RuntimeModule.GetTypes()
   at System.Reflection.Assembly.GetTypes()
   at Registrar.DynamicRegistrar.CollectTypes(Assembly assembly)
   at Registrar.Registrar.RegisterAssembly(Assembly assembly)
2021-04-12 17:41:39.729900-0400 link sdk[12110:8173256] Could not register the assembly 'Touch.Client': System.TypeLoadException: Could not resolve type with token 01000070 from typeref (expected class 'System.ValueType' in assembly 'System.Runtime, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a')
   at System.Reflection.RuntimeModule.GetTypes()
   at System.Reflection.Assembly.GetTypes()
   at Registrar.DynamicRegistrar.CollectTypes(Assembly assembly)
   at Registrar.Registrar.RegisterAssembly(Assembly assembly)
2021-04-12 17:41:39.737336-0400 link sdk[12110:8173256] Could not register the assembly 'bindings-test': System.TypeLoadException: Could not resolve type with token 01000046 from typeref (expected class 'System.ValueType' in assembly 'System.Runtime, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a')
   at System.Reflection.RuntimeModule.GetTypes()
   at System.Reflection.Assembly.GetTypes()
   at Registrar.DynamicRegistrar.CollectTypes(Assembly assembly)
   at Registrar.Registrar.RegisterAssembly(Assembly assembly)

monotouch-tests time outs did not show much clues

spouliot and others added 2 commits April 12, 2021 20:25
…210412.5

Microsoft.Dotnet.Sdk.Internal
 From Version 6.0.100-preview.3.21202.5 -> To Version 6.0.100-preview.4.21212.5
dotnet-maestro bot and others added 3 commits April 14, 2021 12:14
…210413.70

Microsoft.Dotnet.Sdk.Internal
 From Version 6.0.100-preview.3.21202.5 -> To Version 6.0.100-preview.4.21213.70
…210414.14

Microsoft.Dotnet.Sdk.Internal
 From Version 6.0.100-preview.3.21202.5 -> To Version 6.0.100-preview.4.21214.14
@pjcollins
Copy link
Member

@spouliot @dalexsoto as a heads up, when the next SDK version is brought in you'll need some runtime pack related changes. The runtime pack names now have a .Mono suffix, and we should now be setting a default value of UseMonoRuntime=true in our targets (should be able to override the value in the users project). Here's some related Android changes:
dotnet/android@ef95ed8.


link sdk failure might be something new in P4

2021-04-12 17:41:39.587029-0400 link sdk[12110:8173256] Could not register the assembly 'link sdk': System.TypeLoadException: Could not resolve type with token 01000083 from typeref (expected class 'System.Security.Principal.IIdentity' in assembly 'System.Runtime, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a')

We also saw something similar in P4 bump from earlier this week, but it seems to be fixed with our latest bump to 6.0.100-preview.4.21214.14.

@@ -18,6 +18,8 @@

<!-- Don't include default Compile items for binding projects, because that would pick up ApiDefinition.cs and StructsAndEnums.cs -->
<EnableDefaultCompileItems Condition=" '$(IsBindingProject)' == 'true' ">false</EnableDefaultCompileItems>

<UseMonoRuntime Condition=" '$(UseMonoRuntime)' == '' ">true</UseMonoRuntime>
Copy link
Contributor

Choose a reason for hiding this comment

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

This is still likely going to be problematic wrt.

<_PackageIdInfix Condition="'$(_XamarinRuntime)' != 'CoreCLR' And '$(_PlatformName)' == 'macOS'">Mono.</_PackageIdInfix>

which is another variable that used to switch between the runtimes and applies the prefix.

Copy link
Contributor

@filipnavara filipnavara Apr 16, 2021

Choose a reason for hiding this comment

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

In fact it's the same place which causes the test build failures. _MonoNugetPackageId is computed incorrectly which results in _MonoFrameworkReference and _MonoRuntimePackPath being incorrect leading to incorrect path for the AOT compiler eventually.

Copy link
Contributor

Choose a reason for hiding this comment

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

This should fix the build failures: filipnavara@8325f8d

(intentionally minimal fix; _XamarinRuntime can be removed later and replaced with UseMonoRuntime in separate PR)

Copy link
Contributor

Choose a reason for hiding this comment

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

yes, some of those dual variables can't be avoided (for legacy) but we should strive to remove all others

Copy link
Contributor

Choose a reason for hiding this comment

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

This one is new (never released) so easy to avoid :)

Copy link
Contributor

Choose a reason for hiding this comment

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

yup, better kill it before anyone gets emotionally attached to it 😄

@filipnavara
Copy link
Contributor

The "monotouch-test/Mac [dotnet]/Debug [dotnet]" failure can be resolved by merging main into this branch. It's been fixed in 7926009.

@spouliot
Copy link
Contributor

Those monotouch-test failure are weird since they affect non-dotnet runs :|
Seems they don't launch on bots - but they do locally :(
Mystery for another day...

@filipnavara
Copy link
Contributor

filipnavara commented Apr 18, 2021

I tried running the test locally. First, they interactively ask for quite a lot of permissions. The non-dotnet tests run with few failures for me.

The dotnet one hangs on NSTimeZoneTest:

* thread #1, name = 'tid_203', queue = 'com.apple.main-thread', stop reason = signal SIGSTOP
  * frame #0: 0x000000011f90f0c6 libsystem_kernel.dylib`__psynch_mutexwait + 10
    frame #1: 0x000000011f9902c5 libsystem_pthread.dylib`_pthread_mutex_firstfit_lock_wait + 81
    frame #2: 0x000000011f98e1bc libsystem_pthread.dylib`_pthread_mutex_firstfit_lock_slow + 211
    frame #3: 0x000000011ef2b4d9 libc++.1.dylib`std::__1::mutex::lock() + 9
    frame #4: 0x000000010d8abe75 libmonosgen-2.0.dylib`icu::SimpleDateFormat::tzFormat(UErrorCode&) const + 37
    frame #5: 0x000000010d8aa6d7 libmonosgen-2.0.dylib`icu::SimpleDateFormat::subFormat(icu::UnicodeString&, char16_t, int, UDisplayContext, int, char16_t, icu::FieldPositionHandler&, icu::Calendar&, UErrorCode&) const + 553
    frame #6: 0x000000010d8aa41d libmonosgen-2.0.dylib`icu::SimpleDateFormat::_format(icu::Calendar&, icu::UnicodeString&, icu::FieldPositionHandler&, UErrorCode&) const + 641
    frame #7: 0x000000010d8aa17e libmonosgen-2.0.dylib`icu::SimpleDateFormat::format(icu::Calendar&, icu::UnicodeString&, icu::FieldPosition&) const + 70
    frame #8: 0x000000010d8a6f4f libmonosgen-2.0.dylib`icu::DateFormat::format(double, icu::UnicodeString&, icu::FieldPosition&) const + 109
    frame #9: 0x000000010d8b88f8 libmonosgen-2.0.dylib`udat_format + 263
    frame #10: 0x000000010d68011f libmonosgen-2.0.dylib`GlobalizationNative_GetTimeZoneDisplayName + 287

It may actually be a bug in ICU where it doesn't release the mutex in error path (https://github.com/dotnet/icu/blob/032ffcab30edde31f2274f6e5613254b84cc7fa4/icu/icu4c/source/i18n/smpdtfmt.cpp#L4266). Since the time zone data are stripped in icudt.dat the error path will be hit. The dotnet/runtime builds for browser that use the same ICU data don't call these APIs because they take slightly different code path in the managed code for time zone names. /cc @steveisok

UPD: ICU issue filed here and PR here. Even if that turns out to be valid fix we need another solution in the interim. The simplest one I can think of is to use the browser code paths in dotnet/runtime also for iOS/tvOS.

<!-- download the runtime packs -->
<PackageDownload Include="@(PackageRuntimeIdentifiers -> 'Microsoft.NETCore.App.Runtime.%(Identity)')" Version="[$(BundledNETCorePlatformsPackageVersion)]" />
<PackageDownload Include="@(PackageRuntimeIdentifiers -> 'Microsoft.NETCore.App.Runtime.Mono.%(Identity)')" Version="[$(BundledNETCorePlatformsPackageVersion)]" />
Copy link
Member

Choose a reason for hiding this comment

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

It looks like this doesn't download the CoreCLR version anymore (which we need for macOS). However, that should make the build fail, which it apparently doesn't, so IDK?

Copy link
Contributor

Choose a reason for hiding this comment

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

were any test are enabled ? maybe it silently fail ? 🤷‍♂️

…210418.6

Microsoft.Dotnet.Sdk.Internal
 From Version 6.0.100-preview.3.21202.5 -> To Version 6.0.100-preview.4.21218.6
@spouliot
Copy link
Contributor

I tried running the test locally. First, they interactively ask for quite a lot of permissions.

@filipnavara that's normal for this test app, none should be blocking and the test checks the non-determined state (not allowed) in a few cases.

Also thanks for filing the ICU issues. I'll rebuild (from clean) this morning since I did not hit the hangs.

@filipnavara
Copy link
Contributor

I can hit the hangs on [dotnet] tests consistently. In fact so consistently that I cannot see how it could have worked on main branch unless the InvariantGlobalization is now false when it would have been true before.

The non-dotnet tests ask for ~3 permissions and I had to interact with them manually. Then 7 tests failed related to some bundle properties. I didn't find any issue related to it except some SO posts referring to certain properties returning nil in simulator. However, that's probably unrelated to the time outs on the CI.

@spouliot
Copy link
Contributor

spouliot commented Apr 19, 2021

Filtered changelog for the latest bump https://gist.github.com/spouliot/4da8c7853ac10fea76e00dfe90f7abc6

Update dependencies from https://github.com/dotnet/installer build 20210418.6

@spouliot
Copy link
Contributor

I cannot see how it could have worked on main branch unless the InvariantGlobalization is now false when it would have been true before.

Something else must have changed... as the invariant change for ICU is in main and we don't get the failure there :|

@spouliot
Copy link
Contributor

So with a clean build I get the expected (same as bot) deadlock for [dotnet] tests but others are fine (no timeout) at least on my M1... I will try on an Intel Mac next.

@filipnavara
Copy link
Contributor

The ICU deadlock is triggered by a new code path introduced in dotnet/runtime#48931. At least one mystery solved.

@spouliot
Copy link
Contributor

I will try on an Intel Mac next.

Nope, I don't get the timeouts for non-dotnet tests :(

akoeplinger pushed a commit to dotnet/runtime that referenced this pull request Apr 19, 2021
Ref: xamarin/xamarin-macios#11175 (comment), https://unicode-org.atlassian.net/browse/ICU-21591

There seems to be a bug in ICU that leads to deadlock when the time zone data are stripped. Since dotnet/icu uses the same stripping of data on all the platforms the time zone data are also not present on iOS/tvOS or any platform that consumes it. So even if the deadlock itself is resolved at some point it makes sense to use the same implementation for all the platforms that rely on the filtered app-local ICU data.

I also enabled to code path on MacCatalyst to keep it consistent with iOS. I am open to change that. Android may need to be treated the same way too.
@spouliot
Copy link
Contributor

@filipnavara looks like you were right and that the dotnet timeouts affected the other monotouch-tests (or were just very lucky this morning)

introspection/watchOS 32-bits - simulator/Debug (watchOS 5.0): LaunchFailure

Failure is unrelated, known issue -> https://github.com/xamarin/maccore/issues/2411

@spouliot spouliot merged commit e8f4373 into main Apr 20, 2021
@spouliot spouliot deleted the darc-main-38ef8300-a7b5-4ebc-9dd4-75e9ac8721ed branch April 20, 2021 13:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
not-notes-worthy Ignore for release notes
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants