Skip to content
This repository was archived by the owner on Jan 23, 2023. It is now read-only.

Port to release/2.1 - Fix hijack for ARM/ARM64/x86 on Unix #20116

Merged

Conversation

janvorli
Copy link
Member

Description

We were not checking the case when we have interrupted a thread inside
of a function epilog for other architectures than amd64. When such an
interruption happens, GS cookie check in a stack walking has failed,
since we are unable to decode GS cookie location when the IP is in
epilog.

Customer Impact

Customer's application terminates on ARM, ARM64 or x86 Unix due to fail fast when a thread is suspended for GC while running in a function epilog.

Regression?
No

Risk
No

Original issue: #20015

* Fix hijacking for ARM/ARM64/x86 on Unix

We were not checking the case when we have interrupted a thread inside
of a function epilog for other architectures than amd64. When such an
interruption happens, GS cookie check in a stack walking has failed,
since we are unable to decode GS cookie location when the IP is in
epilog.
This fix implements IsIPInEpilog for all architectures and makes the
check unconditional.
@janvorli janvorli added this to the 2.1.x milestone Sep 25, 2018
@janvorli janvorli self-assigned this Sep 25, 2018
@janvorli janvorli requested a review from jkotas September 25, 2018 00:12
@leecow leecow added Servicing-approved Approved for servicing release and removed Servicing-consider Issue for next servicing release review labels Sep 25, 2018
@leecow leecow modified the milestones: 2.1.x, 2.1.6 Sep 25, 2018
@janvorli
Copy link
Member Author

@dotnet-bot test Windows_NT x86 Checked Innerloop Build and Test
@dotnet-bot test Windows_NT x86 Release Innerloop Build and Test
@dotnet-bot test Ubuntu arm Cross Checked Innerloop Build and Test

@janvorli
Copy link
Member Author

All test failures caused by issue fixed by pending #20124

@janvorli
Copy link
Member Author

janvorli commented Oct 2, 2018

@dotnet-bot test Windows_NT x86 Checked Innerloop Build and Test
@dotnet-bot test Windows_NT x86 Release Innerloop Build and Test
@dotnet-bot test Ubuntu arm Cross Checked Innerloop Build and Test

@janvorli
Copy link
Member Author

janvorli commented Oct 3, 2018

@dotnet-bot test Windows_NT arm Cross Checked Innerloop Build and Test please

@janvorli
Copy link
Member Author

janvorli commented Oct 3, 2018

@dotnet-bot test Windows_NT arm64 Cross Checked Innerloop Build and Test please

@janvorli
Copy link
Member Author

janvorli commented Oct 3, 2018

This change can be merged in, the Windows_NT arm / arm64 take several days to get scheduled and then they fail due to missing artifacts. This change is Unix only anyways.

@janvorli janvorli merged commit 9bff252 into dotnet:release/2.1 Oct 6, 2018
@janvorli janvorli deleted the port-fix-arm-hijacking-to-2.1 branch October 6, 2018 20:55
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants