Skip to content

[Question] JIT/Directed/debugging/debuginfo/tester fail with DOTNET_TieredCompilation=0 on Linux #104451

@gbalykov

Description

@gbalykov

Test JIT/Directed/debugging/debuginfo/tester passes with tiered jit and other env vars specified for it:

export DOTNET_JitNoForwardSub=1
export DOTNET_JitEnableHeadTailMerge=0
export DOTNET_JitEnableCrossBlockLocalAssertionProp=0
export DOTNET_JitEnableOptRepeat=0

Output:

  0.0s: ==TEST STARTING==
  0.3s: Started sending sentinel events...
  0.3s: Connecting to EventPipe...
  0.5s: Creating EventPipeEventSource...
  0.5s: EventPipeEventSource created
  0.5s: Dynamic.All callback registered
  0.5s: Running optional trace validator
  0.6s: Finished running optional trace validator
  0.6s: Starting stream processing...
  0.6s: Saw new provider 'Microsoft-Windows-DotNETRuntime'
  0.8s: Saw sentinel event
  0.8s: Stopped sending sentinel events
  0.8s: Starting event generating action...
  0.8s: Stopping event generating action
  0.8s: Sending StopTracing command...
  0.9s: Saw new provider 'Microsoft-DotNETCore-EventPipe'
  0.9s: Saw new provider 'Microsoft-Windows-DotNETRuntimeRundown'
  1.0s: Stopping stream processing
  1.0s: Dropped 0 events
  1.0s: Finished StopTracing command
  1.0s: Reader task finished
  1.0s: Validating optional callback...
[tests_d]DebugInfoMethods.TestUninlined: Validate mappings for debuggable codegen (tier: MinOptJitted)
[tests_d]DebugInfoMethods.TestLateFailingInlineCandidate: Validate mappings for debuggable codegen (tier: MinOptJitted)
[tests_d]DebugInfoMethods.TestSucceedingInlineCandidate: Validate mappings for debuggable codegen (tier: MinOptJitted)
[tests_d]DebugInfoMethods.TestControlFlow: Validate mappings for debuggable codegen (tier: MinOptJitted)
[tests_r]DebugInfoMethods.TestUninlined: Validate mappings for optimized codegen (tier: QuickJitted)
[tests_r]DebugInfoMethods.TestLateFailingInlineCandidate: Validate mappings for optimized codegen (tier: QuickJitted)
[tests_r]DebugInfoMethods.TestSucceedingInlineCandidate: Validate mappings for optimized codegen (tier: QuickJitted)
[tests_r]DebugInfoMethods.TestControlFlow: Validate mappings for optimized codegen (tier: QuickJitted)
  1.0s: ==TEST FINISHED: PASSED!==

However, setting DOTNET_TieredCompilation=0 leads to fail:

  0.0s: ==TEST STARTING==
  0.5s: Started sending sentinel events...
  0.5s: Connecting to EventPipe...
  0.8s: Creating EventPipeEventSource...
  0.8s: EventPipeEventSource created
  0.8s: Dynamic.All callback registered
  0.8s: Running optional trace validator
  0.9s: Finished running optional trace validator
  0.9s: Starting stream processing...
  1.0s: Saw new provider 'Microsoft-Windows-DotNETRuntime'
  1.2s: Saw sentinel event
  1.2s: Stopped sending sentinel events
  1.2s: Starting event generating action...
  1.2s: Stopping event generating action
  1.2s: Sending StopTracing command...
  1.3s: Saw new provider 'Microsoft-DotNETCore-EventPipe'
  1.3s: Saw new provider 'Microsoft-Windows-DotNETRuntimeRundown'
  1.3s: Stopping stream processing
  1.3s: Dropped 0 events
  1.3s: Finished StopTracing command
  1.3s: Reader task finished
  1.3s: Validating optional callback...
[tests_d]DebugInfoMethods.TestUninlined: Validate mappings for debuggable codegen (tier: MinOptJitted)
[tests_d]DebugInfoMethods.TestLateFailingInlineCandidate: Validate mappings for debuggable codegen (tier: MinOptJitted)
[tests_d]DebugInfoMethods.TestSucceedingInlineCandidate: Validate mappings for debuggable codegen (tier: MinOptJitted)
[tests_d]DebugInfoMethods.TestControlFlow: Validate mappings for debuggable codegen (tier: MinOptJitted)
[tests_r]DebugInfoMethods.TestUninlined: Validate mappings for optimized codegen (tier: Optimized)
[tests_r]DebugInfoMethods.TestLateFailingInlineCandidate: Validate mappings for optimized codegen (tier: Optimized)
[tests_r]DebugInfoMethods.TestSucceedingInlineCandidate: Validate mappings for optimized codegen (tier: Optimized)
[tests_r]DebugInfoMethods.TestControlFlow: Validate mappings for optimized codegen (tier: Optimized)
  Validation failed: expected mappings at IL offsets 000, 006, 00e, 012, 01c, 02c
  Actual (IL <-> native):
    Prolog <-> 000
    000 <-> 008
    012 <-> 00c
    02c <-> 020
    034 <-> 032
    Epilog <-> 032
  1.3s: ==TEST FINISHED: FAILED!==
Xunit.Sdk.EqualException: Assert.Equal() Failure: Values differ
Expected: 100
Actual:   -1
   at Xunit.Assert.Equal[T](T expected, T actual, IEqualityComparer`1 comparer) in /_/src/Microsoft.DotNet.XUnitAssert/src/EqualityAsserts.cs:line 168
   at __GeneratedMainWrapper.Main() in /home/runtime/artifacts/tests/coreclr/obj/linux.x64.Release/Managed/JIT/Directed/debugging/debuginfo/tester/XUnitWrapperGenerator/XUnitWrapperGenerator.XUnitWrapperGenerator/SimpleRunner.g.cs:line 10

This happens independently from architecture. According to original PR that added it (#61962), README and other files, it seems that it should support such mode. Looks like now debug info generated for Optimized differs from QuickJitted and MinOptJitted and test seems to need update for such case. Is this correct?

Build of e78b72b:

./build.sh --arch x64 --runtimeConfiguration Release --librariesConfiguration Release --subset clr+libs
BuildAllTestsAsStandalone=true ./src/tests/build.sh -Release -x64 -priority1

cc @jakobbotsch @dotnet/samsung

Metadata

Metadata

Assignees

Labels

Priority:2Work that is important, but not critical for the releasearea-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMIin-prThere is an active PR which will close this issue when it is merged

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions