-
Notifications
You must be signed in to change notification settings - Fork 2.7k
Fix hijacking for ARM/ARM64/x86 on Unix #20042
Conversation
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.
Does this still allow return address hijacking to work for empty methods? I.e. Are there offsets within optimized |
Build breaks on x86... |
I've fixed the x86 build break. I have not realized that the IsIPInProlog/ Epilog cannot be compiled on Windows x86, but only on Linux x86. |
@dotnet-bot test OSX10.12 x64 Checked Innerloop Build and Test |
1 similar comment
@dotnet-bot test OSX10.12 x64 Checked Innerloop Build and Test |
@dotnet-bot test Ubuntu arm Cross Checked Innerloop Build and Test |
@dotnet-bot test OSX10.12 x64 Checked Innerloop Build and Test |
1 similar comment
@dotnet-bot test OSX10.12 x64 Checked Innerloop Build and Test |
@dotnet-bot test Ubuntu arm Cross Checked Innerloop Build and Test |
@dotnet-bot test Ubuntu arm Cross Checked no_tiered_compilation_innerloop Build and Test |
@dotnet-bot test Ubuntu arm Cross Checked Innerloop Build and Test |
@dotnet-bot test Ubuntu arm Cross Checked no_tiered_compilation_innerloop Build and Test |
Hi, how can I get noticed for the release of this fix? |
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.
Fixes #20015