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] Perf pipeline (dotnet-runtime-perf) completely broken for main #78575

Closed
radical opened this issue Nov 18, 2022 · 13 comments
Closed

[wasm] Perf pipeline (dotnet-runtime-perf) completely broken for main #78575

radical opened this issue Nov 18, 2022 · 13 comments
Labels
arch-wasm WebAssembly architecture perf-pipeline Issues with dotnet-runtime-perf, or runtime-wasm-perf pipelines
Milestone

Comments

@radical
Copy link
Member

radical commented Nov 18, 2022

Failing build - 20221118.2:

System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.
 ---> System.PlatformNotSupportedException: System.Diagnostics.FileVersionInfo is not supported on this platform.
   at System.Diagnostics.FileVersionInfo.GetVersionInfo(String )
   at BenchmarkDotNet.Portability.RuntimeInformation.GetNetCoreVersion()
   at BenchmarkDotNet.Portability.RuntimeInformation.GetRuntimeVersion()
   at BenchmarkDotNet.Environments.BenchmarkEnvironmentInfo..ctor()
   at BenchmarkDotNet.Environments.BenchmarkEnvironmentInfo.GetCurrent()
   at BenchmarkDotNet.Autogenerated.Runnable_0.Run(IHost host, String benchmarkName)
   at System.Reflection.MethodInvoker.InterpretedInvoke(Object , IntPtr* )
   at System.Reflection.MethodInvoker.Invoke(Object , IntPtr* , BindingFlags )
   --- End of inner exception stack trace ---
   at System.Reflection.MethodInvoker.Invoke(Object , IntPtr* , BindingFlags )
   at System.Reflection.RuntimeMethodInfo.Invoke(Object , BindingFlags , Binder , Object[] , CultureInfo )
   at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
   at BenchmarkDotNet.Autogenerated.UniqueProgramName.AfterAssemblyLoadingAttached(String[] args)

cc @am11 @akoeplinger @jkotas

Report

Summary

24-Hour Hit Count 7-Day Hit Count 1-Month Count
0 0 0
@radical radical added arch-wasm WebAssembly architecture blocking-clean-ci Blocking PR or rolling runs of 'runtime' or 'runtime-extra-platforms' perf-pipeline Issues with dotnet-runtime-perf, or runtime-wasm-perf pipelines labels Nov 18, 2022
@radical radical added this to the 8.0.0 milestone Nov 18, 2022
@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
Copy link

ghost commented Nov 18, 2022

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

Issue Details

Failing build - 20221118.2:

System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.
 ---> System.PlatformNotSupportedException: System.Diagnostics.FileVersionInfo is not supported on this platform.
   at System.Diagnostics.FileVersionInfo.GetVersionInfo(String )
   at BenchmarkDotNet.Portability.RuntimeInformation.GetNetCoreVersion()
   at BenchmarkDotNet.Portability.RuntimeInformation.GetRuntimeVersion()
   at BenchmarkDotNet.Environments.BenchmarkEnvironmentInfo..ctor()
   at BenchmarkDotNet.Environments.BenchmarkEnvironmentInfo.GetCurrent()
   at BenchmarkDotNet.Autogenerated.Runnable_0.Run(IHost host, String benchmarkName)
   at System.Reflection.MethodInvoker.InterpretedInvoke(Object , IntPtr* )
   at System.Reflection.MethodInvoker.Invoke(Object , IntPtr* , BindingFlags )
   --- End of inner exception stack trace ---
   at System.Reflection.MethodInvoker.Invoke(Object , IntPtr* , BindingFlags )
   at System.Reflection.RuntimeMethodInfo.Invoke(Object , BindingFlags , Binder , Object[] , CultureInfo )
   at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
   at BenchmarkDotNet.Autogenerated.UniqueProgramName.AfterAssemblyLoadingAttached(String[] args)

cc @am11 @akoeplinger @jkotas

Author: radical
Assignees: -
Labels:

arch-wasm, blocking-clean-ci, perf-pipeline

Milestone: 8.0.0

@am11
Copy link
Member

am11 commented Nov 18, 2022

toolchain.cmake is not used in wasm, so i'm not sure how it can break main.

@radical
Copy link
Member Author

radical commented Nov 18, 2022

I'll try to reproduce this locally.

@radical
Copy link
Member Author

radical commented Nov 18, 2022

There are multiple parts that can be different between two runs.

  • The first suspect is the runtime commit changes. (not applicable, like you said)
  • dotnet sdk version difference - they ran with the same one
  • Different performance repo branch HEADs - I'm checking this now
  • v8 version - shouldn't be relevant here

@jkotas
Copy link
Member

jkotas commented Nov 18, 2022

Different performance repo branch HEADs - I'm checking this now

Yes, that would be my guess. Likely caused by dotnet/performance#2741

@radical
Copy link
Member Author

radical commented Nov 18, 2022

Yes, that would be my guess. Likely caused by dotnet/performance#2741

Indeed it is. That bumped BDN from 0.13.2.1950 to 0.13.2.2007, and reverting that changes fixes the issue.
These were the BDN changes in that bump - dotnet/BenchmarkDotNet@eda1a41...9c32a87 .

@radical
Copy link
Member Author

radical commented Nov 18, 2022

cc @LoopedBard3 @adamsitnik

adamsitnik added a commit to dotnet/BenchmarkDotNet that referenced this issue Nov 18, 2022
@adamsitnik
Copy link
Member

adamsitnik commented Nov 18, 2022

I won't be able to test it today (11 PM here), but I've merged a change that should solve the problem: dotnet/BenchmarkDotNet#2201

@radical this build should get green within an hour and publish 0.13.2.2009 version

Explanation: dotnet/BenchmarkDotNet#2142 has changed the way we detect Mono runtime to also support MonoVM on .NET 6+:

- public static bool IsMono { get; } = Type.GetType("Mono.Runtime") != null;
+ public static bool IsMono { get; } = Type.GetType("Mono.RuntimeStructs") != null

This affects the code flow in https://github.com/dotnet/BenchmarkDotNet/blob/ad8e9b26ef22aa77abff2469f7668986e1449127/src/BenchmarkDotNet/Portability/RuntimeInformation.cs#L166-L196 (IsMono was before IsWasm) and caused the call to not supported API.

If it does not solve the problem, please just revert the recent BDN version update.

@radical
Copy link
Member Author

radical commented Nov 18, 2022

Thank you for the super quick fix! I can test this out later today.

@radical
Copy link
Member Author

radical commented Nov 19, 2022

@LoopedBard3 could you publish the new package to the internal feeds? https://ci.appveyor.com/project/dotnetfoundation/benchmarkdotnet/builds/45428788

@LoopedBard3
Copy link
Member

Pushed! @radical

radical added a commit to radical/performance that referenced this issue Nov 19, 2022
@radical radical removed the blocking-clean-ci Blocking PR or rolling runs of 'runtime' or 'runtime-extra-platforms' label Nov 19, 2022
@adamsitnik
Copy link
Member

We need to avoid introducing similar breaking changes in the future.

@radical I've created dotnet/BenchmarkDotNet#2203 PTAL and add your thoughts.

@ghost ghost locked as resolved and limited conversation to collaborators Dec 21, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
arch-wasm WebAssembly architecture perf-pipeline Issues with dotnet-runtime-perf, or runtime-wasm-perf pipelines
Projects
None yet
Development

No branches or pull requests

5 participants