Skip to content

Variable Debug Info covers 0 instructions (using USING_VARIABLE_LIVE_RANGE) #47202

@cshung

Description

@cshung

R2RDump of windows, x64, release build of System.Private.CoreLib built using crossgen2 shows that USING_VARIABLE_LIVE_RANGE can produce variable mapping that covers 0 instruction. Attached please find the R2RDump of the offending method.

void Interop.GetRandomBytes(byte*, int)
Handle: 0x0600000A
Rid: 10
EntryPointRuntimeFunctionId: 8
Number of RuntimeFunctions: 1
Number of fixups: 4
    TableIndex 4, Offset 0117: Interop+BCrypt+NTSTATUS Interop+BCrypt.BCryptGenRandom(IntPtr, byte*, int, int) (INDIRECT_PINVOKE_TARGET)
    TableIndex 4, Offset 01EC: Interop+BCrypt+NTSTATUS (TYPE_HANDLE)
    TableIndex 4, Offset 0266: System.InvalidOperationException (TYPE_HANDLE)
    TableIndex 4, Offset 027D: System.OutOfMemoryException (TYPE_HANDLE)

void Interop.GetRandomBytes(byte*, int)
Id: 8
StartAddress: 0x001CCC00
Size: 194 bytes
UnwindRVA: 0x00021EC4
Version:            1
Flags:              0x03 EHANDLER UHANDLER
SizeOfProlog:       0x0013
CountOfUnwindCodes: 10
FrameRegister:      None
FrameOffset:        0x0
PersonalityRVA:     0x4F9ECC
UnwindCode[0]: CodeOffset 0x0013 FrameOffset 0x0000 NextOffset 0x0 Op 0 - Scaled small
UnwindCode[2]: CodeOffset 0x000B FrameOffset 0x0000 NextOffset 0x0 Op RSI(6)
UnwindCode[4]: CodeOffset 0x0009 FrameOffset 0x0000 NextOffset 0x0 Op R12(12)
UnwindCode[6]: CodeOffset 0x0005 FrameOffset 0x0000 NextOffset 0x0 Op R14(14)
UnwindCode[8]: CodeOffset 0x0001 FrameOffset 0x0000 NextOffset 0x0 Op RBP(5)

Debug Info
    Bounds:
    Native Offset: 0x0, Prolog, Source Types: StackEmpty
    Native Offset: 0x1B, IL Offset: 0x0000, Source Types: StackEmpty
    Native Offset: 0x6E, IL Offset: 0x000e, Source Types: StackEmpty
    Native Offset: 0x72, Epilog, Source Types: StackEmpty
    Native Offset: 0x83, IL Offset: 0x0011, Source Types: StackEmpty
    Native Offset: 0x8B, IL Offset: 0x0019, Source Types: StackEmpty
    Native Offset: 0x9D, IL Offset: 0x001e, Source Types: SourceTypeInvalid
    Native Offset: 0xA6, IL Offset: 0x001f, Source Types: StackEmpty
    Native Offset: 0xB8, IL Offset: 0x0024, Source Types: SourceTypeInvalid

    Variable Locations:
    Variable Number: 0
    Start Offset: 0x0
    End Offset: 0x1B
    Loc Type: VLT_REG
    Register: RCX

    Variable Number: 0
    Start Offset: 0x1B
    End Offset: 0x22
    Loc Type: VLT_REG
    Register: RCX

    Variable Number: 1
    Start Offset: 0x0
    End Offset: 0x1B
    Loc Type: VLT_REG
    Register: RDX

    Variable Number: 1
    Start Offset: 0x1B
    End Offset: 0x1C
    Loc Type: VLT_REG
    Register: RDX

    Variable Number: 2
    Start Offset: 0x6E
    End Offset: 0x72
    Loc Type: VLT_REG
    Register: RSI

    Variable Number: 2
    Start Offset: 0x83
    End Offset: 0x83
    Loc Type: VLT_REG
    Register: RSI

Metadata

Metadata

Assignees

Labels

area-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions