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

[wasm] Linker crashing with System.NotImplementedException: switch #71848

Closed
radical opened this issue Jul 8, 2022 · 7 comments · Fixed by #72076
Closed

[wasm] Linker crashing with System.NotImplementedException: switch #71848

radical opened this issue Jul 8, 2022 · 7 comments · Fixed by #72076
Labels
arch-wasm WebAssembly architecture area-AssemblyLoader-coreclr disabled-test The test is disabled in source code against the issue linkable-framework Issues associated with delivering a linker friendly framework

Comments

@radical
Copy link
Member

radical commented Jul 8, 2022

Failing on an unrelated #71821 build.

ILLink : error IL1012: IL Trimmer has encountered an unexpected error. Please report the issue at https:/dotnet/linker/issues [/__w/1/s/src/libraries/System.Text.RegularExpressions/tests/FunctionalTests/System.Text.RegularExpressions.Tests.csproj]
##[error]ILLink(0,0): error IL1012: (NETCORE_ENGINEERING_TELEMETRY=Build) IL Trimmer has encountered an unexpected error. Please report the issue at https:/dotnet/linker/issues
  Fatal error in IL Linker
  Unhandled exception. System.NotImplementedException: switch
     at Mono.Linker.Steps.UnreachableBlocksOptimizer.BodyReducer.IsConstantBranch(OpCode opCode, Int32 operand)
     at Mono.Linker.Steps.UnreachableBlocksOptimizer.BodyReducer.RemoveConditions()
     at Mono.Linker.Steps.UnreachableBlocksOptimizer.BodyReducer.RewriteBody()
     at Mono.Linker.Steps.UnreachableBlocksOptimizer.ProcessMethod(MethodDefinition method)
     at Mono.Linker.Steps.MarkStep.ProcessMethod(MethodDefinition method, DependencyInfo& reason, MessageOrigin& origin)
     at Mono.Linker.Steps.MarkStep.ProcessQueue()
     at Mono.Linker.Steps.MarkStep.ProcessPrimaryQueue()
     at Mono.Linker.Steps.MarkStep.Process()
     at Mono.Linker.Steps.MarkStep.Process(LinkContext context)
     at Mono.Linker.Pipeline.ProcessStep(LinkContext context, IStep step)
     at Mono.Linker.Pipeline.Process(LinkContext context)
     at Mono.Linker.Driver.Run(ILogger customLogger)
     at Mono.Linker.Driver.Main(String[] args)
/__w/1/s/.dotnet/sdk/7.0.100-preview.5.22307.18/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.ILLink.targets(110,5): error NETSDK1144: Optimizing assemblies for size failed. Optimization can be disabled by setting the PublishTrimmed property to false. [/__w/1/s/src/libraries/System.Text.RegularExpressions/tests/FunctionalTests/System.Text.RegularExpressions.Tests.csproj]
##[error].dotnet/sdk/7.0.100-preview.5.22307.18/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.ILLink.targets(110,5): error NETSDK1144: (NETCORE_ENGINEERING_TELEMETRY=Build) Optimizing assemblies for size failed. Optimization can be disabled by setting the PublishTrimmed property to false.

Interestingly, this is failing only for the wasm/highresource_aot jobs, and not the regular AOT ones.

  • highresource_aot: runs some library tests, and run them on the build machine itself
  • regular EAT/AOT: runs the tests on helix

Could it be using an older linker?

cc @vitek-karas @sbomer @marek-safar

@dotnet-issue-labeler
Copy link

I couldn't figure out the best area label to add to this issue. If you have write-permissions please help me learn by adding exactly one area label.

@ghost ghost added the untriaged New issue has not been triaged by the area owner label Jul 8, 2022
@radical radical added arch-wasm WebAssembly architecture blocking-clean-ci Blocking PR or rolling runs of 'runtime' or 'runtime-extra-platforms' linkable-framework Issues associated with delivering a linker friendly framework and removed untriaged New issue has not been triaged by the area owner labels Jul 8, 2022
@ghost
Copy link

ghost commented Jul 8, 2022

Tagging subscribers to 'arch-wasm': @lewing
See info in area-owners.md if you want to be subscribed.

Issue Details

Failing on an unrelated #71821 build.

ILLink : error IL1012: IL Trimmer has encountered an unexpected error. Please report the issue at https:/dotnet/linker/issues [/__w/1/s/src/libraries/System.Text.RegularExpressions/tests/FunctionalTests/System.Text.RegularExpressions.Tests.csproj]
##[error]ILLink(0,0): error IL1012: (NETCORE_ENGINEERING_TELEMETRY=Build) IL Trimmer has encountered an unexpected error. Please report the issue at https:/dotnet/linker/issues
  Fatal error in IL Linker
  Unhandled exception. System.NotImplementedException: switch
     at Mono.Linker.Steps.UnreachableBlocksOptimizer.BodyReducer.IsConstantBranch(OpCode opCode, Int32 operand)
     at Mono.Linker.Steps.UnreachableBlocksOptimizer.BodyReducer.RemoveConditions()
     at Mono.Linker.Steps.UnreachableBlocksOptimizer.BodyReducer.RewriteBody()
     at Mono.Linker.Steps.UnreachableBlocksOptimizer.ProcessMethod(MethodDefinition method)
     at Mono.Linker.Steps.MarkStep.ProcessMethod(MethodDefinition method, DependencyInfo& reason, MessageOrigin& origin)
     at Mono.Linker.Steps.MarkStep.ProcessQueue()
     at Mono.Linker.Steps.MarkStep.ProcessPrimaryQueue()
     at Mono.Linker.Steps.MarkStep.Process()
     at Mono.Linker.Steps.MarkStep.Process(LinkContext context)
     at Mono.Linker.Pipeline.ProcessStep(LinkContext context, IStep step)
     at Mono.Linker.Pipeline.Process(LinkContext context)
     at Mono.Linker.Driver.Run(ILogger customLogger)
     at Mono.Linker.Driver.Main(String[] args)
/__w/1/s/.dotnet/sdk/7.0.100-preview.5.22307.18/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.ILLink.targets(110,5): error NETSDK1144: Optimizing assemblies for size failed. Optimization can be disabled by setting the PublishTrimmed property to false. [/__w/1/s/src/libraries/System.Text.RegularExpressions/tests/FunctionalTests/System.Text.RegularExpressions.Tests.csproj]
##[error].dotnet/sdk/7.0.100-preview.5.22307.18/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.ILLink.targets(110,5): error NETSDK1144: (NETCORE_ENGINEERING_TELEMETRY=Build) Optimizing assemblies for size failed. Optimization can be disabled by setting the PublishTrimmed property to false.

Interestingly, this is failing only for the wasm/highresource_aot jobs, and not the regular AOT ones.

  • highresource_aot: runs some library tests, and run them on the build machine itself
  • regular EAT/AOT: runs the tests on helix

Could it be using an older linker?

cc @vitek-karas @sbomer @marek-safar

Author: radical
Assignees: -
Labels:

arch-wasm, blocking-clean-ci, linkable-framework

Milestone: -

@radical radical changed the title Linker crashing with System.NotImplementedException: switch [wasm] Linker crashing with System.NotImplementedException: switch Jul 8, 2022
@lewing
Copy link
Member

lewing commented Jul 8, 2022

System.Text.RegularExpressions.Tests is high resource so that makes sense

@radical
Copy link
Member Author

radical commented Jul 9, 2022

System.Text.RegularExpressions.Tests isn't built in EAT, or AOT builds. Only in the highresource_aot .

radical added a commit to radical/runtime that referenced this issue Jul 9, 2022
- Disabling `FunctionalTests/System.Text.RegularExpressions.Tests` this
  test for HighResourceAOT
- Also, ensure that the HighResourceAOT tests are run for regular
  library tests, and EAT.

Issue: dotnet#71848
@pavelsavara
Copy link
Member

Another log

@ghost
Copy link

ghost commented Jul 9, 2022

Tagging subscribers to this area: @vitek-karas, @agocke, @VSadov
See info in area-owners.md if you want to be subscribed.

Issue Details

Failing on an unrelated #71821 build.

ILLink : error IL1012: IL Trimmer has encountered an unexpected error. Please report the issue at https:/dotnet/linker/issues [/__w/1/s/src/libraries/System.Text.RegularExpressions/tests/FunctionalTests/System.Text.RegularExpressions.Tests.csproj]
##[error]ILLink(0,0): error IL1012: (NETCORE_ENGINEERING_TELEMETRY=Build) IL Trimmer has encountered an unexpected error. Please report the issue at https:/dotnet/linker/issues
  Fatal error in IL Linker
  Unhandled exception. System.NotImplementedException: switch
     at Mono.Linker.Steps.UnreachableBlocksOptimizer.BodyReducer.IsConstantBranch(OpCode opCode, Int32 operand)
     at Mono.Linker.Steps.UnreachableBlocksOptimizer.BodyReducer.RemoveConditions()
     at Mono.Linker.Steps.UnreachableBlocksOptimizer.BodyReducer.RewriteBody()
     at Mono.Linker.Steps.UnreachableBlocksOptimizer.ProcessMethod(MethodDefinition method)
     at Mono.Linker.Steps.MarkStep.ProcessMethod(MethodDefinition method, DependencyInfo& reason, MessageOrigin& origin)
     at Mono.Linker.Steps.MarkStep.ProcessQueue()
     at Mono.Linker.Steps.MarkStep.ProcessPrimaryQueue()
     at Mono.Linker.Steps.MarkStep.Process()
     at Mono.Linker.Steps.MarkStep.Process(LinkContext context)
     at Mono.Linker.Pipeline.ProcessStep(LinkContext context, IStep step)
     at Mono.Linker.Pipeline.Process(LinkContext context)
     at Mono.Linker.Driver.Run(ILogger customLogger)
     at Mono.Linker.Driver.Main(String[] args)
/__w/1/s/.dotnet/sdk/7.0.100-preview.5.22307.18/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.ILLink.targets(110,5): error NETSDK1144: Optimizing assemblies for size failed. Optimization can be disabled by setting the PublishTrimmed property to false. [/__w/1/s/src/libraries/System.Text.RegularExpressions/tests/FunctionalTests/System.Text.RegularExpressions.Tests.csproj]
##[error].dotnet/sdk/7.0.100-preview.5.22307.18/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.ILLink.targets(110,5): error NETSDK1144: (NETCORE_ENGINEERING_TELEMETRY=Build) Optimizing assemblies for size failed. Optimization can be disabled by setting the PublishTrimmed property to false.

Interestingly, this is failing only for the wasm/highresource_aot jobs, and not the regular AOT ones.

  • highresource_aot: runs some library tests, and run them on the build machine itself
  • regular EAT/AOT: runs the tests on helix

Could it be using an older linker?

cc @vitek-karas @sbomer @marek-safar

Author: radical
Assignees: -
Labels:

arch-wasm, area-AssemblyLoader-coreclr, blocking-clean-ci, linkable-framework

Milestone: -

radical added a commit that referenced this issue Jul 12, 2022
… due to linker issues (#71875)

* [wasm] Disable tests failing on HighResourceAOT job

- Disabling `FunctionalTests/System.Text.RegularExpressions.Tests` this
  test for HighResourceAOT
- Also, ensure that the HighResourceAOT tests are run for regular
  library tests, and EAT.

Issue: #71848

* Disable for EAT also

* [wasm] Disable some STJ.Serialization tests failing due to linker issues

This seems to be hit only with `EnableAggressiveTrimming=true`, and
`RunAOTCompilation=true`. All the traces are similar to:

```
[FAIL] System.Text.Json.Serialization.Tests.CollectionTestsDynamic_AsyncStreamWithSmallBuffer.InvalidPropertyNameFail(policyType: typeof(System.Text.Json.Serialization.Tests.CollectionTests+KeyNameNullPolicy), offendingProperty: "Key")
Assert.Throws() Failure
Expected: typeof(System.InvalidOperationException)
Actual:   typeof(System.NotSupportedException): Metadata for type 'System.Collections.Generic.KeyValuePair`2[System.String,System.String]' was not provided to the serializer. The serializer method used does not support reflection-based creation of serialization-related type metadata. If using source generation, ensure that all root types passed to the serializer have been indicated with 'JsonSerializableAttribute', along with any types that might be serialized polymorphically.
---- System.NotSupportedException : Metadata for type 'System.Collections.Generic.KeyValuePair`2[System.String,System.String]' was not provided to the serializer. The serializer method used does not support reflection-based creation of serialization-related type metadata. If using source generation, ensure that all root types passed to the serializer have been indicated with 'JsonSerializableAttribute', along with any types that might be serialized polymorphically.
   at System.Text.Json.JsonSerializer.SerializeAsync[KeyValuePair`2](Stream , KeyValuePair`2 , JsonSerializerOptions , CancellationToken )
   at System.Text.Json.Serialization.Tests.JsonSerializerWrapper.AsyncStreamSerializerWrapper.SerializeWrapper[KeyValuePair`2](Stream utf8Json, KeyValuePair`2 value, JsonSerializerOptions options)
   at System.Text.Json.Serialization.Tests.StreamingJsonSerializerWrapper.<SerializeWrapper>d__11`1[[System.Collections.Generic.KeyValuePair`2[[System.String, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.String, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext()
   at System.Text.Json.JsonSerializer.SerializeAsync[KeyValuePair`2](Stream , KeyValuePair`2 , JsonSerializerOptions , CancellationToken )
   at System.Text.Json.Serialization.Tests.JsonSerializerWrapper.AsyncStreamSerializerWrapper.SerializeWrapper[KeyValuePair`2](Stream utf8Json, KeyValuePair`2 value, JsonSerializerOptions options)
   at System.Text.Json.Serialization.Tests.CollectionTests.<>c__DisplayClass377_0.<<InvalidPropertyNameFail>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.Text.Json.JsonSerializer.SerializeAsync[KeyValuePair`2](Stream , KeyValuePair`2 , JsonSerializerOptions , CancellationToken )
   at System.Text.Json.Serialization.Tests.JsonSerializerWrapper.AsyncStreamSerializerWrapper.SerializeWrapper[KeyValuePair`2](Stream utf8Json, KeyValuePair`2 value, JsonSerializerOptions options)
----- Inner Stack Trace -----
   at System.Text.Json.JsonSerializer.SerializeAsync[KeyValuePair`2](Stream , KeyValuePair`2 , JsonSerializerOptions , CancellationToken )
   at System.Text.Json.Serialization.Tests.JsonSerializerWrapper.AsyncStreamSerializerWrapper.SerializeWrapper[KeyValuePair`2](Stream utf8Json, KeyValuePair`2 value, JsonSerializerOptions options)
   at System.Text.Json.Serialization.Tests.StreamingJsonSerializerWrapper.<SerializeWrapper>d__11`1[[System.Collections.Generic.KeyValuePair`2[[System.String, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.String, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext()
   at System.Text.Json.JsonSerializer.SerializeAsync[KeyValuePair`2](Stream , KeyValuePair`2 , JsonSerializerOptions , CancellationToken )
   at System.Text.Json.Serialization.Tests.JsonSerializerWrapper.AsyncStreamSerializerWrapper.SerializeWrapper[KeyValuePair`2](Stream utf8Json, KeyValuePair`2 value, JsonSerializerOptions options)
   at System.Text.Json.Serialization.Tests.CollectionTests.<>c__DisplayClass377_0.<<InvalidPropertyNameFail>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.Text.Json.JsonSerializer.SerializeAsync[KeyValuePair`2](Stream , KeyValuePair`2 , JsonSerializerOptions , CancellationToken )
   at System.Text.Json.Serialization.Tests.JsonSerializerWrapper.AsyncStreamSerializerWrapper.SerializeWrapper[KeyValuePair`2](Stream utf8Json, KeyValuePair`2 value, JsonSerializerOptions options)
```

Issue: #71838

* Disable System.Text.Json.Serialization.Tests.PropertyNameTestsDynamic.JsonNameConflictOnCaseInsensitiveFail also

* Disable another STJ failing test - #71981

* [wasm] Disable two more tests failing due to #71838
@radical radical added disabled-test The test is disabled in source code against the issue and removed blocking-clean-ci Blocking PR or rolling runs of 'runtime' or 'runtime-extra-platforms' labels Jul 12, 2022
@vitek-karas
Copy link
Member

dotnet/linker#2889 has a fix to make linker not crash.

radical added a commit to radical/runtime that referenced this issue Jul 13, 2022
@ghost ghost added the in-pr There is an active PR which will close this issue when it is merged label Jul 13, 2022
lewing pushed a commit that referenced this issue Jul 13, 2022
The linker bump in dotnet/linker#2889 should
have fixed the issue.

Closes #71848 .
@ghost ghost removed the in-pr There is an active PR which will close this issue when it is merged label Jul 13, 2022
@ghost ghost locked as resolved and limited conversation to collaborators Aug 12, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
arch-wasm WebAssembly architecture area-AssemblyLoader-coreclr disabled-test The test is disabled in source code against the issue linkable-framework Issues associated with delivering a linker friendly framework
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants