Fix WSL alternate stack check (dotnet/coreclr#25972)
authorJan Vorlicek <janvorli@microsoft.com>
Thu, 1 Aug 2019 23:14:12 +0000 (01:14 +0200)
committerGitHub <noreply@github.com>
Thu, 1 Aug 2019 23:14:12 +0000 (01:14 +0200)
commit354c9cf776fcf69fcd278f03e0690cc97cf2a1f1
tree8f9acce66aaa4a4acbc8ed8373011a0798990dff
parentf7fc8b0253eae24b7ad2bb00e5507ee065bfbec9
Fix WSL alternate stack check (dotnet/coreclr#25972)

* Fix WSL alternate stack check

On WSL, the alternate stack check in sigsegv_handler doesn't work. The
uc_stack members are always zero no matter whether the handler is
executed on an alternate or default stack. So the check to detect
whether we are running on an alternate stack or not is always returning
false on WSL and it prevents NULL reference exceptions from being
handled.
The fix is to introduce an env variable COMPlus_EnableAlternateStackCheck
that can be used to enable the alternate stack check. By default, the
sigsegv_handler is considered to always run on an alternate stack.

Commit migrated from https://github.com/dotnet/coreclr/commit/d7d8f91a8bad9effe9b5605edec6d26d540e0f85
src/coreclr/src/pal/src/exception/signal.cpp
src/coreclr/src/pal/src/include/pal/signal.hpp