-
Notifications
You must be signed in to change notification settings - Fork 4.6k
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
[release/8.0-staging] Call the Copy Constructor for stack arguments in C++/CLI on x86 #100221
[release/8.0-staging] Call the Copy Constructor for stack arguments in C++/CLI on x86 #100221
Conversation
…86 (dotnet#100050) * Add repro test case * Directly load the argument address using ldarga to avoid making a copy * Reimplement the "Copy Constructor Cookie" logic in a more modern and maintainable style to get the test passing again * Narrow support to Windows only --------- Co-authored-by: Aaron R Robinson <arobins@microsoft.com>
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.
I would avoid the additional cleanup in the servicing backport.
Sounds good. I wasn't sure how much effort we wanted to narrow the changes. I just tried applying them without a local build. If there is any fallout, I will look again tomorrow. |
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.
approved. we will take for consideration in 8.0.x
ba9df1e
into
dotnet:release/8.0-staging
This is a port of #100050 to .NET 8.
/cc @jeffschwMSFT @agocke @jkotas
Customer Impact
See user reported issue #100033.
The workaround is to disable debug iterators or change the legacy code to avoid the problematic pattern. Both of these are unacceptable long-term in-production fixes.
Regression
Regression introduced from .NET Framework. Support was added in .NET Core 3.1 and included the regression - dotnet/coreclr#22805.
Testing
A test was added that validates the issue in a C++/CLI scenario.
Risk
Low