dotnet / runtime

.NET is a cross-platform runtime for cloud, mobile, desktop, and IoT apps.
https://docs.microsoft.com/dotnet/core/
MIT License
15.25k stars 4.73k forks source link

[MONO][Interp] Tracking runtime test failures with Mono interpreter #54383

Open fanyang-mono opened 3 years ago

fanyang-mono commented 3 years ago

Here are the issues:

Probably worth investigating in NET6 - most of these are probably intentionally bad IL or other IL edge case behavior (and could be triaged to lower priority pretty quickly) - but they might uncover interpreter issues:

Also warrants a deeper investigation in .NET6 - the failures here are not well understood:

Other issues:

Lower priority:

ghost commented 3 years ago

Tagging subscribers to this area: @brzvlad See info in area-owners.md if you want to be subscribed.

Issue Details
Comparing to Android x64 with JIT, here are the additional 93 tests failing to run on Android x64 with interpreter - [ ] #54358 [MONO][Android][Interp] JIT/Performance/CodeQuality/Burgers/Burgers/Burgers.sh failed on Android x64 with interpreter - [ ] #54359 [MONO][Android][Interp] JIT/CodeGenBringUpTests/Localloc_* failed on Android x64 with interpreter - [ ] #54371 [MONO][Android][Interp] Assertion at /__w/1/s/src/mono/mono/mini/interp/transform.c:6813, condition `td->clause_indexes [in_offset] != -1' not met - [ ] #54372 [MONO][Android][Interp] transform.c: Unimplemented opcode: ee at 0x0 - [ ] #54373 [MONO][Android][Interp] JIT/Directed/* failed with Error 101 on Android x64 with interpreter - [ ] #54374 [MONO][Android][Interp] JIT/Directed/tailcall/tailcall/tailcall.sh failed with SEGV on Android x64 with interpreter - [ ] #54375 [MONO][Android][Interp] JIT/IL_Conformance/Old/Conformance_Base/div_r8/div_r8.sh failed with unhandled exception on Android x64 with interpreter - [ ] #54376 [MONO][Android][Interp] JIT/IL_Conformance/* tests failed return the correct return code on Android x64 with interpreter - [ ] #54381 [MONO][Android][Interp] Assertion: should not be reached at /__w/1/s/src/mono/mono/mini/interp/transform.c:5325 - [ ] #54359 [MONO][Android][Interp] JIT/CodeGenBringUpTests/Localloc_* failed on Android x64 with interpreter
Author: fanyang-mono
Assignees: fanyang-mono
Labels: `area-Codegen-Interpreter-mono`, `os-android`
Milestone: -
BrzVlad commented 3 years ago

The title is misleading since these issues have nothing to do with android. These tests were already disabled on our CI runs on interpreter, however they were not triaged in detail. When it comes to android, it would have been more interesting to see whether there are any additional issues compared to desktop interpreter, which normally shouldn't be.

fanyang-mono commented 3 years ago

The title is misleading since these issues have nothing to do with android. These tests were already disabled on our CI runs on interpreter, however they were not triaged in detail. When it comes to android, it would have been more interesting to see whether there are any additional issues compared to desktop interpreter, which normally shouldn't be.

I see. Let me clean the issues up.

fanyang-mono commented 3 years ago

These are existing issues since .NET 5. None of them is currently block our customer. We will revisit them in .NET 7.

lambdageek commented 3 years ago

I went through and reorganized the list into 4 lists.

The first group "Probably worth investigating in NET6" are tests that I think a quick investigation will reprioritize for .NET 7. I suspect most of these are failing because the test is some bad IL, and the interpreter is generally not designed to gracefully exit for patently broken code.

The second group "Also warrants a deeper investigation in .NET6" Seem like they might be real high-impact issues.

The third group "Other issues" - particularly the JIT ones - I can't really tell from looking at them how big the impact is. I don't think they're intentionally bad IL, but I also can't tell from a superficial scanning of them if they're trying unlikely edge cases or something that is likely to be common

The fourth group are all the cases where the IL is intentionally bad and we're unlikely to see this from normal C# code.

fanyang-mono commented 2 years ago

Moving to 8.0.0