-
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
Properly handle byrefs in tailcall helper stubs #41815
Conversation
Switch to using ByReference instead of using stind.i/ldind.i and relying on the JIT to report the locations being moved between. Fixes dotnet#41555
@BruceForstall assuming tests pass, can you check if this fixes #41555? |
I was never able to reliably repro the problem, so I won't be able to "prove" the fix works that way. I looked at the generated code + GC info for the "Call" stub for the 41555 test case on Windows arm32, and it looks good to me: the byrefs I annotated in the bug as needing GC tracking are appropriately tracked. If you're happy with this change as is, I'm inclined to trigger outerloop + gcstress0x3-gcstress0xc + gcstress-extra legs. That's expensive and time consuming, but it's the best way, IMO, to see that the issue doesn't repro in the CI where it was (somewhat) reliably repro'ing (and check for regressions). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM; thanks for the quick turnaround!
Thanks for checking! Triggering those legs sounds good to me. |
Triggered: outerloop: https://dev.azure.com/dnceng/public/_build/results?buildId=800825&view=results |
outerloop failures are #41853, gcstress failures are a few timeouts (that's unfortunately common). The |
/backport to release/5.0-rc2 |
Started backporting to release/5.0-rc2: https://github.com/dotnet/runtime/actions/runs/239756050 |
Switch to using ByReference instead of using stind.i/ldind.i and relying
on the JIT to report the locations being moved between.
Fixes #41555
cc @BruceForstall @jkotas