-
Notifications
You must be signed in to change notification settings - Fork 4.9k
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
Assertion failed '(igInLoop->igLoopBackEdge == nullptr) || (igInLoop->igLoopBackEdge == igLoopHeader)' #82729
Comments
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch, @kunalspathak Issue DetailsLibraries pgo, possibly recent regression in weekend runs (I had clean private runs on Friday, but this is PGO so may not always be testing the exact same codegen)
|
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch, @kunalspathak Issue DetailsLibraries pgo, possibly recent regression in weekend runs (I had clean private runs on Friday, but this is PGO so may not always be testing the exact same codegen)
|
Will take a look. |
@AndyAyersMS - Seems I am not able to repro this because of some randomness introduced? Is there a reliable way to force the situation to reproduce? |
From the dumps it looks like we are somehow the loop we have identified has a back target in the middle of the loop:
However, when I print the Disasm, I don't see so many IGs in the method which makes sense as why this issue is not reproducing. I think in the repro case, there are things getting inlined (due to I see this was also opened few months ago in #79986, but I was not able to reproduce it and had to close it. That one could have happened for the same reason. |
After more poking in the dump, here is what I came up with.
From For Is there a way to find out the target of |
No. All I can suggest is to run this repeatedly and either dump out the text PGO data or collect SPMI, so if it ever fails you can replay that particular compilation. |
Is the JIT behavior deterministic if you force a particular random seed (and is it possible to force a particular random seed)? Then, you could run repeatedly with different random seeds and hopefully find one that reproduces the behavior. I wonder if, for the random cases, we should someone print out (or otherwise expose) what random numbers / seeds were used. In the random jitstress/libraries-jitstress pipelines, the pipeline is responsible for choosing the random jitstress value, which then gets captured in the console log, to aid reproducibility. |
Looks like |
Follow the code from
|
Yes, I realized that after asking. So here is the updated diagram with targets updated. Essentially, IG64 jumps back to IG63, so ideally
|
Either we are missing an align instruction for |
#83286 to print the state if this happens. It might be still hard to understand without a jitdump or a repro, but this should still solve some purpose. |
This issue is not reproducible and consistent. I would remove the |
@kunalspathak this repros for me on my Rpi box -- I can try to grab an SPMI context for you. |
Attached the context. Taken on bee217f |
Thanks @jakobbotsch . I will check it out. This is linux-arm64 context? I opened #83286 to print some traces, but this would be helpful in finding the root cause. |
Yep. |
I was able to repro it on my local machine with that method context. Thanks once again @jakobbotsch . The problem is while optimizing the layout, we compact a block
After optimizing layout:
We should disable alignment for such blocks whose header comes before the block that needs alignment. I recall @AndyAyersMS fixed similar issue in #70936, but that would need revision. I will submit a fix later tomorrow. |
The code does it job except that during compaction, we fail to update the |
Updated #83286 with the fix. |
Libraries pgo, possibly recent regression in weekend runs (I had clean private runs on Friday, but this is PGO so may not always be testing the exact same codegen)
https://dev.azure.com/dnceng-public/public/_build/results?buildId=185788&view=ms.vss-test-web.build-test-results-tab
The text was updated successfully, but these errors were encountered: