Skip to content

CoreLibBinder asserts with certain static abstract in interface declarations #71441

@tannergooding

Description

@tannergooding

As per #71405, changing IShiftOperators to carry around an additional generic type parameter is causing an assert:

Assert failure(PID 27404 [0x00006b0c], Thread: 7640 [0x1dd8]): pMT != NULL

CORECLR! CoreLibBinder::GetExistingClass + 0x3E (0x00007ff9`d12f59ae)
CORECLR! CoreLibBinder::GetElementType + 0x1A (0x00007ff9`d131f90a)
CORECLR! SigPointer::GetTypeHandleThrowing + 0x937 (0x00007ff9`d1664dc7)
CORECLR! SigPointer::GetTypeHandleThrowing + 0x19B0 (0x00007ff9`d1665e40)
CORECLR! ClassLoader::LoadTypeDefOrRefOrSpecThrowing + 0x9B5 (0x00007ff9`d13fc4c5)
CORECLR! MethodTableBuilder::LoadExactInterfaceMap + 0x5D9 (0x00007ff9`d192d469)
CORECLR! ClassLoader::LoadExactParentAndInterfacesTransitively + 0x654 (0x00007ff9`d13cc344)
CORECLR! ClassLoader::LoadExactParents + 0x431 (0x00007ff9`d13cc7d1)
CORECLR! ClassLoader::DoIncrementalLoad + 0x78D (0x00007ff9`d13ee7fd)
CORECLR! ClassLoader::LoadTypeHandleForTypeKey_Body + 0xDDC (0x00007ff9`d140059c)
    File: C:\Users\tagoo\source\repos\runtime\src\coreclr\vm\binder.h Line: 393
    Image: C:\Users\tagoo\source\repos\runtime\artifacts\tests\coreclr\windows.x64.Debug\Tests\Core_Root\corerun.exe

The stack trace is:

> coreclr.dll!DbgAssertDialog(const char * szFile, int iLine, const char * szExpr) Line 599	C++
  coreclr.dll!CoreLibBinder::GetExistingClass(BinderClassID id) Line 393	C++
  coreclr.dll!CoreLibBinder::GetElementType(CorElementType type) Line 218	C++
  coreclr.dll!SigPointer::GetTypeHandleThrowing(Module * pModule, const SigTypeContext * pTypeContext, ClassLoader::LoadTypesFlag fLoadTypes, ClassLoadLevel level, int dropGenericArgumentLevel, const Substitution * pSubst, const ZapSig::Context * pZapSigContext, MethodTable * pMTInterfaceMapOwner) Line 1091	C++
  coreclr.dll!SigPointer::GetTypeHandleThrowing(Module * pModule, const SigTypeContext * pTypeContext, ClassLoader::LoadTypesFlag fLoadTypes, ClassLoadLevel level, int dropGenericArgumentLevel, const Substitution * pSubst, const ZapSig::Context * pZapSigContext, MethodTable * pMTInterfaceMapOwner) Line 1388	C++
  coreclr.dll!ClassLoader::LoadTypeDefOrRefOrSpecThrowing(Module * pModule, unsigned int typeDefOrRefOrSpec, const SigTypeContext * pTypeContext, ClassLoader::NotFoundAction fNotFoundAction, ClassLoader::PermitUninstantiatedFlag fUninstantiated, ClassLoader::LoadTypesFlag fLoadTypes, ClassLoadLevel level, int dropGenericArgumentLevel, const Substitution * pSubst, MethodTable * pMTInterfaceMapOwner) Line 2035	C++
  coreclr.dll!MethodTableBuilder::LoadExactInterfaceMap(MethodTable * pMT) Line 9208	C++
  coreclr.dll!ClassLoader::LoadExactParentAndInterfacesTransitively(MethodTable * pMT) Line 908	C++
  coreclr.dll!ClassLoader::LoadExactParents(MethodTable * pMT) Line 941	C++
  coreclr.dll!ClassLoader::DoIncrementalLoad(TypeKey * pTypeKey, TypeHandle typeHnd, ClassLoadLevel currentLevel) Line 2871	C++
  coreclr.dll!ClassLoader::LoadTypeHandleForTypeKey_Body(TypeKey * pTypeKey, TypeHandle typeHnd, ClassLoadLevel targetLevel) Line 3516	C++
  coreclr.dll!ClassLoader::LoadTypeHandleForTypeKey(TypeKey * pTypeKey, TypeHandle typeHnd, ClassLoadLevel targetLevel, const InstantiationContext * pInstContext) Line 3235	C++
  coreclr.dll!ClassLoader::LoadTypeDefThrowing(Module * pModule, unsigned int typeDef, ClassLoader::NotFoundAction fNotFoundAction, ClassLoader::PermitUninstantiatedFlag fUninstantiated, unsigned int tokenNotToLoad, ClassLoadLevel level, Instantiation * pTargetInstantiation) Line 2216	C++
  coreclr.dll!SigPointer::GetTypeHandleThrowing(Module * pModule, const SigTypeContext * pTypeContext, ClassLoader::LoadTypesFlag fLoadTypes, ClassLoadLevel level, int dropGenericArgumentLevel, const Substitution * pSubst, const ZapSig::Context * pZapSigContext, MethodTable * pMTInterfaceMapOwner) Line 1422	C++
  coreclr.dll!ClassLoader::LoadTypeDefOrRefOrSpecThrowing(Module * pModule, unsigned int typeDefOrRefOrSpec, const SigTypeContext * pTypeContext, ClassLoader::NotFoundAction fNotFoundAction, ClassLoader::PermitUninstantiatedFlag fUninstantiated, ClassLoader::LoadTypesFlag fLoadTypes, ClassLoadLevel level, int dropGenericArgumentLevel, const Substitution * pSubst, MethodTable * pMTInterfaceMapOwner) Line 2035	C++
  coreclr.dll!MethodTableBuilder::LoadExactInterfaceMap(MethodTable * pMT) Line 9208	C++
  coreclr.dll!ClassLoader::LoadExactParentAndInterfacesTransitively(MethodTable * pMT) Line 908	C++
  coreclr.dll!ClassLoader::LoadExactParents(MethodTable * pMT) Line 941	C++
  coreclr.dll!ClassLoader::DoIncrementalLoad(TypeKey * pTypeKey, TypeHandle typeHnd, ClassLoadLevel currentLevel) Line 2871	C++
  coreclr.dll!ClassLoader::LoadTypeHandleForTypeKey_Body(TypeKey * pTypeKey, TypeHandle typeHnd, ClassLoadLevel targetLevel) Line 3516	C++
  coreclr.dll!ClassLoader::LoadTypeHandleForTypeKey(TypeKey * pTypeKey, TypeHandle typeHnd, ClassLoadLevel targetLevel, const InstantiationContext * pInstContext) Line 3235	C++
  coreclr.dll!ClassLoader::EnsureLoaded(TypeHandle typeHnd, ClassLoadLevel level) Line 1021	C++
  coreclr.dll!CoreLibBinder::LoadPrimitiveType(CorElementType et) Line 1194	C++
  coreclr.dll!SystemDomain::LoadBaseSystemClasses() Line 1378	C++
  coreclr.dll!SystemDomain::Init() Line 1203	C++
  coreclr.dll!EEStartupHelper() Line 935	C++
  coreclr.dll!`EEStartup'::`9'::__Body::Run(void * p) Line 1073	C++
  coreclr.dll!EEStartup() Line 1075	C++
  coreclr.dll!EnsureEEStarted() Line 311	C++
  coreclr.dll!CorHost2::Start() Line 101	C++

Metadata

Metadata

Assignees

No one assigned

    Labels

    area-TypeSystem-coreclrblockingMarks issues that we want to fast track in order to unblock other important work

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions