-
Notifications
You must be signed in to change notification settings - Fork 5.2k
[release/10.0] [RuntimeAsync] A few fixes for issues found when enabling rt async in Libraries. #119960
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
Conversation
This reverts commit de8c967.
|
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch |
|
Tagging subscribers to this area: @mangod9 |
|
@AndyAyersMS - could you take a look at this backport PR? |
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. Fixing crash.
|
I don't see anything fatal, so seems fine. |
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.
JIT changes LGTM.
|
Adding @davidwrighton for VM review. |
|
Thanks!!! |
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
Backport of #119864 to release/10.0
/cc @VSadov
Customer Impact
Customer reported
Found internally
In async methods the GS cookie check, if also present, could end up using (and corrupting) the same register as used to return continuation.
Synthetic async thunks that provide interop between ordinary task-returning methods and runtime async methods, did not special-case
ValueTask, which is sufficiently different to require slightly different IL.When multiple awaits are in the same try block, the async analysis could pay attention only to the first one and skip over others.
These bugs require fairly trivial fixes, but otherwise could result in crashes in affected scenarios.
Regression
This is new code/scenarios with runtime async.
Testing
The fix was verified on existing libraries tests that caught the issues.
Risk
Low, most changes are to the new code that is only enabled with runtime async.