Skip to content

CoreCLR Interpreter - fix all coreclr test issues #118618

@janvorli

Description

@janvorli

This issue tracks all the issues occurring when running all coreclr Pri-1 tests interpreted (using the src\tests\run.cmd interpreter). It is a result of running on Windows x64, it is possible that other platforms will have slightly different issues.

Platform: this were failing on Win x64

Whole merged test suites failing

  • Interop\Interop - commenting out the following tests make the suite not crash and complete (with some per-test errors). The ones where .cs files are listed, I didn't try to drill into the individual tests in the assemblies. - @kg investigating
    RunGenericFunctionPointerTest
    RunInvalidGenericFunctionPointerTest
    ValidateCopyConstructorAndDestructorCalled
    Interop/PInvoke/CriticalHandles/ReverseTest/ReverseTest.cs
    Interop/PInvoke/NativeCallManagedComVisible/AssemblyTrue/AssemblyTrueTest.cs
    Interop/PInvoke/NativeCallManagedComVisible/AssemblyWithoutComVisible/AssemblyWithoutComVisibleTest.cs
    Interop/PInvoke/NativeCallManagedComVisible/Default/DefaultTest.cs
    tests/Interop/PInvoke/Varargs/VarargsTest.cs
  • 4 !CREATE_CHECK_STRING(!"Detected use of a corrupted OBJECTREF. Possible GC hole.") in JitTest_gcreport_cs.StressTest.TestEntryPoint test
    JIT\Methodical\Methodical_d2
    JIT\Methodical\Methodical_r2
    JIT\Methodical\Methodical_ro
    JIT\Methodical\Methodical_do

Individual test failures

  • 5 arglist - opcode not supported yet - Disabled as incompatible with interpreter
    JIT\Directed\PREFIX\unaligned\1\arglist_Target_64BIT_unaligned_1
    JIT\Directed\PREFIX\unaligned\2\arglist_Target_64BIT_unaligned_2
    JIT\Directed\PREFIX\unaligned\4\arglist_Target_64BIT_unaligned_4
    JIT\Directed\PREFIX\volatile\1\arglist_Target_64BIT_volatile

  • 1 jmp - opcode not supported yet
    JIT\Directed\pinvoke\jump

  • 10 mkrefany - opcode not supported yet
    JIT\Directed\UnrollLoop\loop2_cs_d
    JIT\Directed\UnrollLoop\loop2_cs_do
    JIT\Directed\UnrollLoop\loop2_cs_r
    JIT\Directed\UnrollLoop\loop2_cs_ro
    JIT\Intrinsics\TypeIntrinsics_r
    JIT\Intrinsics\TypeIntrinsics_ro
    JIT\Regression\CLR-x86-JIT\V1-M09.5-PDC\b30864\b30864
    JIT\Regression\CLR-x86-JIT\V1-M11-Beta1\b35784\b35784
    reflection\SetValue\TrySetReadonlyStaticField
    reflection\SetValue\TrySetReadonlyStaticField2

  • 4 ckfinite - opcode not supported yet
    JIT\Regression\JitBlue\DevDiv_362706\DevDiv_362706
    JIT\Regression\JitBlue\DevDiv_370233\DevDiv_370233
    JIT\Regression\JitBlue\DevDiv_377155\DevDiv_377155
    JIT\Regression\CLR-x86-JIT\V1-M12-Beta2\b79250\b79250

  • 6 Invalid Program: attempted to call a UnmanagedCallersOnly method from managed code. There is a call using INTOP_CALLI to an UnmanagedCallersOnly method - Implement interpreter PInvoke Calli #119356
    baseservices\invalid_operations\InvalidOperations
    Exceptions\ForeignThread\ForeignThreadExceptions
    JIT\Stress\ABI\pinvokes_d
    JIT\Stress\ABI\pinvokes_do
    JIT\SIMD\Vector3Interop_r
    JIT\SIMD\Vector3Interop_r0

  • 13 AV at InterpreterStub + 0xC9 - the call stub was not generated?
    JIT\Generics\Coverage\chaos65204782cs_o
    JIT\Performance\CodeQuality\BenchmarksGame\binarytrees\binarytrees-6
    JIT\Regression\CLR-x86-JIT\V1.1-M1-Beta1\b143840\b143840

  • 13 AV at InterpreterStub + 0xC9 - the call stub was not generated?
    baseservices\TieredCompilation\BasicTestWithMcj
    baseservices\TieredCompilation\BasicTest_DefaultMode_R2r
    baseservices\TieredCompilation\BasicTest_QuickJitForLoopsOff
    baseservices\TieredCompilation\BasicTest_QuickJitForLoopsOn
    baseservices\TieredCompilation\BasicTest_QuickJitOn
    baseservices\TieredCompilation\BasicTest_QuickJitOn_R2r
    JIT\Directed\tls\TestTLSWithLoadedDlls
    JIT\Directed\debugging\debuginfo\tester
    JIT\Regression\JitBlue\Runtime_72363\Runtime_72363
    JIT\Regression\JitBlue\Runtime_95315\Runtime_95315

  • 24 failures due to call to System.StubHelpers.StubHelpers.GetStubContext() - [interp] Reverse p/invoke #119133
    baseservices\threading\commitstackonlyasneeded\DefaultStackCommit
    baseservices\threading\regressions\115178\115178
    baseservices\threading\threadpool\bindhandle\bindhandle1
    baseservices\threading\threadpool\bindhandle\bindhandleinvalid3
    baseservices\threading\threadpool\bindhandle\bindhandleinvalid6
    Exceptions\ForeignThread\ForeignThreadExceptions
    JIT\Directed\coverage\oldtests\callipinvoke
    JIT\Directed\coverage\oldtests\Desktop\callipinvoke_d
    JIT\Directed\coverage\oldtests\Desktop\callipinvoke_r
    JIT\Directed\aliasing_retbuf\aliasing_retbuf
    JIT\Directed\IL\PInvokeTail\TailWinApi
    JIT\Directed\pinvoke\calli_excep
    JIT\Directed\pinvoke\sysinfo_cs
    JIT\Directed\pinvoke\sysinfo_il
    JIT\Directed\PrimitiveABI\PrimitiveABI
    JIT\Directed\StructABI\EmptyStructs
    JIT\Generics\pinvoke\instance01
    JIT\Generics\pinvoke\instance02
    JIT\Generics\pinvoke\instance03
    JIT\Generics\pinvoke\static01
    JIT\Generics\pinvoke\static02
    JIT\Regression\clr-x64-JIT\v2.1\b173569\b173569
    JIT\Regression\clr-x64-JIT\v4.0\devdiv374539\DevDiv_374539
    JIT\Regression\CLR-x86-JIT\V1-M09.5-PDC\b28901\b28901

  • 1 Exit code -532462766 (E0434352 - unhandled exception) - [interp] Reverse p/invoke #119133
    baseservices\threading\regressions\115178

  • 2 assert SanityCheck
    baseservices\threading\regressions\269336\objmonhelper
    JIT\Stress\ABI\tailcalls_d

  • 1 Did not find GuardRegion for the whole stack
    baseservices\threading\commitstackonlyasneeded\DefaultStackCommit

  • 8 Assert.Equal() Failure: Values differ
    readytorun\crossboundarylayout\crossboundarytest
    readytorun\HardwareIntrinsics\X86\CpuId_R2R_Avx
    readytorun\HardwareIntrinsics\X86\CpuId_R2R_Avx2
    readytorun\HardwareIntrinsics\X86\CpuId_R2R_Avx512
    readytorun\HardwareIntrinsics\X86\CpuId_R2R_Avx_NoAvx2
    readytorun\HardwareIntrinsics\X86\CpuId_R2R_Baseline
    readytorun\HardwareIntrinsics\X86\CpuId_R2R_Sse42
    readytorun\JittedMethodsCountingTest\JittedMethodsCountingTest - Number of Jitted Methods in App: 83 - Max Threshold: 70

  • 4 !CREATE_CHECK_STRING(pMT && pMT->Validate()) - this looks like a GC hole or bad GC reporting
    GC\Features\HeapExpansion\bestfit-finalize
    GC\Features\HeapExpansion\bestfit
    GC\Features\HeapExpansion\bestfit_1
    GC\Features\SustainedLowLatency\scenario

  • 12 Exit code -1073741819 (C0000005 - STATUS_ACCESS_VIOLATION)
    JIT\Directed\tailcall\tailcall

  • 12 Exit code -1073741819 (C0000005 - STATUS_ACCESS_VIOLATION) - incorrect implementation of MemberFunction calli
    JIT\Directed\callconv\CdeclMemberFunction\CdeclMemberFunctionTest
    JIT\Directed\callconv\PlatformDefaultMemberFunction\PlatformDefaultMemberFunctionTest
    JIT\Directed\callconv\StdCallMemberFunction\StdCallMemberFunctionTest
    JIT\Directed\callconv\ThisCall\ThisCallTest

  • 1 Exit code -1073741819 (C0000005 - STATUS_ACCESS_VIOLATION) - stack overflow from tail calls
    JIT\Regression\JitBlue\Runtime_87393\Runtime_87393

  • 2 Exit code -1073741819 (C0000005 - STATUS_ACCESS_VIOLATION)
    JIT\HardwareIntrinsics\General\Vector256_1\Vector256_1_r
    JIT\HardwareIntrinsics\General\Vector256_1\Vector256_1_ro

  • 1 Exit code -1073741819 (C0000005 - STATUS_ACCESS_VIOLATION) - [interp] Reverse p/invoke #119133
    managed\Compilation\Compilation

  • 1 Exit code -1073741819 (C0000005 - STATUS_ACCESS_VIOLATION) - infinite recursion under GetFieldDescFromFieldDef, caused by invalid token?
    JIT\Regression\CLR-x86-JIT\v2.1\DDB\B168384\LdfldaHack

  • 2 Exit code -1073741819 (C0000005 - STATUS_ACCESS_VIOLATION) ([interp] Fixes for Vector3 Interop test #119025) - MODE_PREEMPTIVE encountered while thread is in cooperative state.
    JIT\SIMD\Vector3Interop_r
    JIT\SIMD\Vector3Interop_ro

  • 10 Exit code -2146232797 (80131623 - COR_E_FAILFAST)
    baseservices\typeequivalence\signatures\nopiatestil
    JIT\Directed\coverage\oldtests\callipinvoke
    JIT\Directed\coverage\oldtests\Desktop\callipinvoke_d
    JIT\Directed\coverage\oldtests\Desktop\callipinvoke_r
    JIT\Directed\IL\PInvokeTail\TailWinApi
    JIT\Directed\pinvoke\calli_excep
    JIT\Directed\pinvoke\sysinfo_il
    JIT\Directed\pinvoke\tail_pinvoke
    JIT\Regression\clr-x64-JIT\v2.1\b173569\b173569
    JIT\Regression\CLR-x86-JIT\V1-M09.5-PDC\b28901\b28901

  • 1 Assert failure: !isPInvoke && !isMarshaledPInvoke - [interp] Suppress tailcall flag if target is a non-marshaled pinvoke #119777
    JIT\Regression\CLR-x86-JIT\V1-M09.5-PDC\b28901

  • 1 Something is wrong, things moved! Pinned must not be working
    JIT\Directed\pinning\object-pin\object-pin

  • 1 System.AccessViolationException
    managed\Compilation\Compilation

  • 1 Unimplemented or invalid interpreter opcode - this is due to invalid target of CEE_LEAVE. The target points to a middle of an instruction and the test expects to get InvalidProgramException. But the compiler doesn't check for the target validity and ends up emitting "0xffffffff" as the target relative offset. - @kg investigating
    JIT\jit64\verif\sniff\fg\ver_fg_13

  • 2 Unimplemented or invalid interpreter opcode - this is most likely a bad codegen with branch to a bad location, probably due to EH stuff
    JIT\SIMD\VectorConvert_ro_Target_64Bit
    JIT\SIMD\VectorConvert_r_Target_64Bit

  • 1 Failed at line 31, expected 1065353216, got 0
    JIT\Intrinsics\BitCast

  • 4 System.InvalidCastException
    JIT\PGO\ProfileCastClassAndIsInst\ProfileCastClassAndIsInst
    JIT\PGO\ProfileCastClassAndIsInst\ProfileCastClassAndIsInst_random1
    JIT\PGO\ProfileCastClassAndIsInst\ProfileCastClassAndIsInst_random2
    JIT\PGO\ProfileCastClassAndIsInst\ProfileCastClassAndIsInst_random3

  • 3 !CREATE_CHECK_STRING(bSmallObjectHeapPtr || bLargeObjectHeapPtr) (davidwrighton investigating)
    JIT\Performance\CodeQuality\Bytemark
    baseservices\threading\regressions\beta2\437017
    JIT\Regression\VS-ia64-JIT\V1.2-M02\b14364\b14364

  • 1 reports "in wrong catch!!" (This is a shared generics issue) [clr-interp] Add support for catching exceptions which are dependent on the context param #119336
    JIT.Methodical.eh.generics.throwincatch.Test_throwincatch

  • 1 various unexpected NullReferenceExceptions or failures to catch them [clr-interp] allow modification of the this pointer in functions which use it as the generics context #119554
    JIT\Regression\CLR-x86-JIT\V2.0-Beta2\b441487\b441487

  • 1 assert accessType == IAT_VALUE in CEE_LDSTR compilation (Support IAT_PVALUE string literals in the interpreter #119011)
    JIT\Regression\JitBlue\Runtime_100437\Runtime_100437

  • 2 codeInfo.IsValid() - attempt to instrument interpreter code for GC stress - Disabled as incompatible with interpreter
    JIT\Regression\JitBlue\Runtime_45090\Runtime_45090
    JIT\Regression\JitBlue\GitHub_27924\GitHub_27924

  • 1 Expected: 100 Actual: 385
    JIT\Regression\JitBlue\GitHub_25027

  • 1 FAIL: The double ctor call worked without generating an exception - Disabled as incompatible with interpreter
    JIT\Regression\Dev11\Dev11_468598\Test_HndIndex_10_Reordered

  • 1 Test did not throw expected InvalidOperationException
    Loader\classloader\generics\Instantiation\Negative\abstract01

  • 1 targetSSP == 0 || (pHandlerIP != NULL) && (exInfo->m_frameIter.m_crawl.GetCodeManager() == ExecutionManager::GetInterpreterCodeManager()) || ((size_t)(targetSSP-8) == exInfo->m_frameIter.m_crawl.GetRegisterSet()->ControlPC) Fix several issues with interpreter and EH #119784
    Loader\classloader\regressions\vsw529206\vsw529206ModuleCctor

  • 2 Exit code 101 instead of 100
    readytorun\crossgen2\crossgen2smoke
    readytorun\crossgen2\crossgen2smoke_donotalwaysusecrossgen2

  • 1 Assert failure: endOffset == range.endOffset - [interp] Patch mov_src_off opcodes at emit time so live end offsets are correct #119656
    JIT\Regression\JitBlue\Runtime_64208\Runtime_64208

  • 1 Assert failure(PID 47024 [0x0000b7b0], Thread: 114444 [0x1bf0c]): extraParamArgLocation == INT_MAX (davidwrighton investigating)
    baseservices\compilerservices\UnsafeAccessors\UnsafeAccessorsTests

  • 6 The test fails with many failures reported by the test like Mismatch in stub call: expected -1512320402, got -163019589
    JIT\Stress\ABI\pinvokes_d
    JIT\Stress\ABI\stubs_d
    JIT\Stress\ABI\tailcalls_d
    JIT\Stress\ABI\pinvokes_do
    JIT\Stress\ABI\stubs_do
    JIT\Stress\ABI\tailcalls_do

  • 1 TestLocalsOneBlock failed to keep s2.ObjectField alive
    JIT\Methodical\Boxing\boxunbox\KeepAliveBoxOpt

  • 1 stack overflow
    JIT\Regression\JitBlue\devdiv_902271

  • 1 AV in System.RuntimeTypeHandle.GetRuntimeTypeFromHandle
    JIT\Regression\CLR-x86-JIT\V1-M11-Beta1\b35784

  • 1 FAILED: CheckPointer((void*)ftn) - [interp] Fix compile failures causing silent fallback to JIT #119775
    baseservices\invalid_operations\InvalidOperations

  • 1 Assert.Equal() Failure: Values differ - this one is sometimes passing, sometimes failing - looks like it was fixed by @davidwrighton
    CoreMangLib\system\span\RefStructWithSpan

  • 1 Unhandled exceptions should be processed by the native runtime only - Disabled this test as it tests propagating C++ exception from a pinvoke into managed code, which won't be supported by the interpreter (is is also not supported on any Unix)
    Exceptions\ForeignThread\ForeignThreadExceptions

  • INLINE_GETTHREAD returns 0 because InterpreterStub is invoked on a native thread with no managed Thread - [interp] Make InterpreterStub handle being called on threads without a Thread object #119906
    Interop\GCBridge\BridgeTest

  • Incorrect exception handling (two exceptions are printed to stdout and then the test fails; in non-interp mode, no exceptions are printed)
    Interop\ExecInDefAppDom\ExecInDefAppDom\ExecInDefAppDom.cmd

  • CleanUpNativeData not called
    Interop\ICustomMarshaler\Primitives\ICustomMarshaler_TargetWindows\ICustomMarshaler_TargetWindows.cmd

  • Exits before finishing without printing final output. Hard to diagnose because it throws lots of exceptions on purpose.
    Interop\NativeLibrary\Callback\CallbackStressTest_TargetWindows\CallbackStressTest_TargetWindows.cmd

  • Calling Native.Out(IntPtr arg, out CriticalHandle result) does not populate the result var with a valid instance of a CriticalHandle, it stays null. Something is going wrong here with marshaling. - [interp] Fix boundary condition where a leave is not added to the leaves table #120228
    Interop\PInvoke\CriticalHandles\Test\Test

  • Int128Native.TestInt128FieldLayout fails because lhs does not match expected value after calling AddStructWithInt128_ByRef

Additional failures in checked build

  • System.IO.IOException: The process cannot access the file 'D:\git\runtime7\artifacts\tests\coreclr\windows.x64.Checked\baseservices\threading\threadpool\bindhandle\bindhandle1\test.txt' because it is being used by another process.
    baseservices\threading\threadpool\bindhandle\bindhandle1\bindhandle1.cmd

  • AV in InterpExecMethod
    CoreMangLib\system\span\RefStructWithSpan\RefStructWithSpan.cmd

  • AV during GC
    GC\Scenarios\Boxing\simpvariant\simpvariant.cmd

  • Expected: 100 Actual: 0
    JIT\Directed\forceinlining\AttributeConflict\AttributeConflict.cmd

  • FAIL -- Unexpected inlining result in: Finally block
    JIT\Directed\forceinlining\PositiveCases\PositiveCases.cmd

  • Expected: 100 Actual: -1073741801 (0xc0000017 - STATUS_NO_MEMORY), but the actual problem is that it pinvokes RaiseException => unsupported
    JIT\Directed\pinvoke\calli_excep\calli_excep.cmd

  • Xunit.Sdk.EqualException: Assert.Equal() Failure: Values differ
    JIT\Directed\VectorABI\VectorMgdMgd_ro\VectorMgdMgd_ro.cmd
    JIT\Directed\debugging\poisoning\poison\poison.cmd

  • System.InvalidCastException: Unable to cast object of type 'GenericStruct`1[System.Int32]' to type 'ClassA'.
    JIT\PGO\ProfileCastClassAndIsInst\ProfileCastClassAndIsInst\ProfileCastClassAndIsInst.cmd
    JIT\PGO\ProfileCastClassAndIsInst\ProfileCastClassAndIsInst_random1\ProfileCastClassAndIsInst_random1.cmd
    JIT\PGO\ProfileCastClassAndIsInst\ProfileCastClassAndIsInst_random2\ProfileCastClassAndIsInst_random2.cmd
    JIT\PGO\ProfileCastClassAndIsInst\ProfileCastClassAndIsInst_random3\ProfileCastClassAndIsInst_random3.cmd

  • Assert failure(PID 80192 [0x00013940], Thread: 79712 [0x13760]): !isPInvoke && !isMarshaledPInvoke
    JIT\Regression\CLR-x86-JIT\V1-M09.5-PDC\b28901\b28901\b28901.cmd
    JIT\opt\Tailcall\TailcallVerifyWithPrefix\TailcallVerifyWithPrefix.cmd
    JIT\Directed\pinvoke\tail_pinvoke\tail_pinvoke.cmd
    JIT\Directed\IL\PInvokeTail\TailWinApi\TailWinApi.cmd
    JIT\Directed\IL\PInvokeTail\PInvokeTail\PInvokeTail.cmd

  • Unhandled exception. System.Exception: Profilee returned exit code 1234 instead of expected exit code 100.
    profiler\rejit\rejit\rejit.cmd

  • Test failed: Profiler tests are expected to contain the text 'PROFILER TEST PASSES'
    profiler\transitions\transitions\transitions.cmd

  • Exit code -1073741819 (C0000005 - STATUS_ACCESS_VIOLATION)
    Regressions\coreclr\GitHub_111242\Test111242\Test111242.cmd
    JIT\Directed\tailcall\more_tailcalls\more_tailcalls.cmd
    JIT\Directed\callconv\ThisCall\ThisCallTest\ThisCallTest.cmd
    JIT\Directed\callconv\StdCallMemberFunction\StdCallMemberFunctionTest\StdCallMemberFunctionTest.cmd
    JIT\Directed\callconv\PlatformDefaultMemberFunction\PlatformDefaultMemberFunctionTest\PlatformDefaultMemberFunctionTest.cmd
    JIT\Directed\callconv\CdeclMemberFunction\CdeclMemberFunctionTest\CdeclMemberFunctionTest.cmd

  • Unhandled exceptions should be processed by the native runtime only
    Regressions\coreclr\GitHub_117393\test117393\test117393.cmd

  • !CREATE_CHECK_STRING(!"Detected use of a corrupted OBJECTREF. Possible GC hole.") stemming from MethodDesc::GetMethodDescOfVirtualizedCode - The GC hole here is fixed in [clr-interp] Fix EH clause var construction #120028. But the individual tests may have other bugs. (The failure was memory corruption during EH, and some of these tests should not have been throwing.)
    Regressions\coreclr\GitHub_66005\test66005 (Fix is in [clr-interp] InterpreterJitManager::ResolveEHClause behaved incorrectly #120009)
    CoreMangLib\system\enum\EnumIConvertibleToType
    GC\API\GC\Collect\Collect
    GC\API\GC\GetGeneration\GetGeneration.cmd
    JIT\Directed\callconv\ThisCall\EmptyThisCallTest\EmptyThisCallTest.cmd
    JIT\opt\ObjectStackAllocation\ObjectStackAllocationTests\ObjectStackAllocationTests.cmd
    JIT\opt\OSR\synchronized\synchronized.cmd (This is caused by a lack of correct implementation of synchronized. @davidwrighton has a fix [clr-interp] Add support for synchronized methods #120006)
    readytorun\tests\generics\generics.cmd
    Regressions\coreclr\GitHub_22348\Test22348\Test22348.cmd (Fixed with [clr-interp] Fix unbox.any for small integer types #120016)
    CoreMangLib\system\enum\EnumIConvertibleToType\EnumIConvertibleToType.cmd
    JIT\Directed\aliasing_retbuf\aliasing_retbuf\aliasing_retbuf.cmd

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions