Fix System.Net.Security.Unit.Tests crashes due to stripped Dictionary IL#132125
Conversation
|
Azure Pipelines: 16 pipeline(s) were filtered out due to trigger conditions. There may be pipelines that require an authorized user to comment /azp run to run. |
Co-authored-by: rzikm <32671551+rzikm@users.noreply.github.com>
|
Tagging subscribers to this area: @dotnet/ncl, @bartonjs, @vcsjones |
|
Azure Pipelines: Successfully started running 4 pipeline(s). 12 pipeline(s) were filtered out due to trigger conditions. There may be pipelines that require an authorized user to comment /azp run to run. |
|
We're trying to reproduce this locally to see if we come up with a better solution than disabling stripping. So far we we're unable to reproduce it on iPhone. cc: @vitek-karas @davidnguyen-tech |
|
I will try to reproduce the issue locally on tvos by tomorrow |
|
We have a few library suites that add |
|
I am also fine with just disabling the test on non-desktop platforms, I don't think the additional coverage provides much benefit. |
…p only (#132277) Alternative to #131929 and #132125 for #131922. `System.Net.Security.Unit.Tests` crashes during runtime init on Apple-mobile CoreCLR (e.g. tvOS), before test discovery runs. The single test `UpdateOptions_ServerCertificateContextProvided_DoesNotDisposeCallerContext` exercises `SslStreamCertificateContext.Create` with intermediate certificates, which pulls in a generic `Dictionary` instantiation whose IL body is stripped from the Apple-mobile CoreCLR ReadyToRun composite image, crashing the whole app at startup. Because the app crashes before test discovery, per-test `[Fact]`/attribute-based skipping can't help. ## Approach Rather than disabling the entire test project on non-desktop platforms (as the alternatives do), this keeps the rest of the suite running on mobile and only excludes the one problematic test from the mobile build: - Make `SslAuthenticationOptionsTests` a `partial` class. - Move `UpdateOptions_ServerCertificateContextProvided_DoesNotDisposeCallerContext` verbatim into a new `SslAuthenticationOptionsTests.Desktop.cs`. - Register that file with an MSBuild `Compile` condition limited to desktop platforms (`windows`/`unix`/`osx`). An MSBuild condition is used rather than a `#if` because the `TARGET_*` C# defines aren't reliably present in this test project. `TargetFrameworks` and the existing `IgnoreForCI` line are untouched, so the app still builds and all other unit tests still run on mobile. ## Comparison to alternatives - #131929 changes the test to also supply the root cert so Android's chain build succeeds. That addresses the Android `PlatformNotSupportedException` but not the tvOS R2R startup crash, which is unrelated to the test's certificate inputs. - #132125 disables the whole `System.Net.Security.Unit.Tests` project in CI on non-desktop platforms, losing all mobile coverage of these unit tests. This PR is the most surgical option: it drops only the one test on mobile and preserves the remaining coverage. ## Validation Test-only change; no product code touched. Not built locally (test project requires the full libraries baseline build in this environment); the change is a mechanical move plus a build-condition addition. CI will exercise the desktop and mobile legs. > [!NOTE] > This PR was generated with the assistance of GitHub Copilot. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
|
replaced by #132277 |
Uh oh!
There was an error while loading. Please reload this page.