Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

JIT/jit64/opt/rngchk/RngchkStress2_o/RngchkStress2_o.dll is timing out #111988

Closed
kunalspathak opened this issue Jan 30, 2025 · 7 comments · Fixed by #112259
Closed

JIT/jit64/opt/rngchk/RngchkStress2_o/RngchkStress2_o.dll is timing out #111988

kunalspathak opened this issue Jan 30, 2025 · 7 comments · Fixed by #112259
Assignees
Labels
area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI blocking-clean-ci-optional Blocking optional rolling runs in-pr There is an active PR which will close this issue when it is merged
Milestone

Comments

@kunalspathak
Copy link
Member

kunalspathak commented Jan 30, 2025

export DOTNET_TieredCompilation=0
export DOTNET_JitStress=f5

Observed in osx_x64 as well as linux_arm64

Image

@kunalspathak kunalspathak added area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI untriaged New issue has not been triaged by the area owner labels Jan 30, 2025
Copy link
Contributor

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

@amanasifkhalid
Copy link
Member

cc @dotnet/jit-contrib

@amanasifkhalid amanasifkhalid added blocking-clean-ci-optional Blocking optional rolling runs and removed untriaged New issue has not been triaged by the area owner labels Feb 3, 2025
@amanasifkhalid amanasifkhalid added this to the 10.0.0 milestone Feb 3, 2025
@AndyAyersMS
Copy link
Member

Looks like this get stuck in 3-opt:

****** START compiling SimpleArray_01.Test:Test1() (MethodHash=31819848)
Generating code for Unix arm64
OPTIONS: compCodeOpt = BLENDED_CODE
OPTIONS: compDbgCode = false
OPTIONS: compDbgInfo = true
...
Swapping partitions [BB965, BB965] and [BB966, BB964] (cost change = -12259964326927110866866776217202473468949912977468817408.000000)
Swapping partitions [BB966, BB966] and [BB967, BB965] (cost change = -12259964326927110866866776217202473468949912977468817408.000000)
Swapping partitions [BB967, BB964] and [BB965, BB966] (cost change = -12259964326927110866866776217202473468949912977468817408.000000)
Swapping partitions [BB965, BB965] and [BB966, BB964] (cost change = -12259964326927110866866776217202473468949912977468817408.000000)
Swapping partitions [BB966, BB966] and [BB967, BB965] (cost change = -12259964326927110866866776217202473468949912977468817408.000000)
Swapping partitions [BB967, BB964] and [BB965, BB966] (cost change = -12259964326927110866866776217202473468949912977468817408.000000)
Swapping partitions [BB965, BB965] and [BB966, BB964] (cost change = -12259964326927110866866776217202473468949912977468817408.000000)
Swapping partitions [BB966, BB966] and [BB967, BB965] (cost change = -12259964326927110866866776217202473468949912977468817408.000000)

@AndyAyersMS
Copy link
Member

@amanasifkhalid want to take a look?

@AndyAyersMS
Copy link
Member

Guessing STRESS_BB_PROFILE may be the culprit?

andya@AndyBR3:~/bugs/r111988$ grep STRESS jit.d
*** JitStress: STRESS_GENERIC_VARN ***
*** JitStress: STRESS_BB_PROFILE ***
*** JitStress: STRESS_CLONE_EXPR ***
*** JitStress: STRESS_FOLD ***
*** JitStress: STRESS_REVERSE_FLAG ***
*** JitStress: STRESS_DO_WHILE_LOOPS ***
*** JitStress: STRESS_MAKE_CSE ***
*** JitStress: STRESS_DOWNWARDS_COUNTED_LOOPS ***
*** JitStress: STRESS_SPLIT_TREES_RANDOMLY ***

@amanasifkhalid
Copy link
Member

@amanasifkhalid want to take a look?

Sure, I'll take this.

@amanasifkhalid
Copy link
Member

Guessing STRESS_BB_PROFILE may be the culprit?

This does seem to be the problem, in this case. The block weights are so unwieldy that I wouldn't expect 3-opt to converge to a local minimum due to floating-point imprecision, and if it isn't actually oscillating in this case, there are still over a thousand basic blocks in the method to reason about. Capping the number of swaps allowed to something large like 1000 doesn't incur any diffs locally, and I wouldn't expect it to kick in under non-stress scenarios unless the profile is hopelessly corrupted.

@dotnet-policy-service dotnet-policy-service bot added the in-pr There is an active PR which will close this issue when it is merged label Feb 7, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI blocking-clean-ci-optional Blocking optional rolling runs in-pr There is an active PR which will close this issue when it is merged
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants