Fix chained hardware exception handling on Unix (dotnet/coreclr#12344)
authorJan Vorlicek <janvorli@microsoft.com>
Sat, 17 Jun 2017 12:13:39 +0000 (14:13 +0200)
committerGitHub <noreply@github.com>
Sat, 17 Jun 2017 12:13:39 +0000 (14:13 +0200)
commita59e906e509393c5d6937d726b502b61087c96c6
tree7792171360b6fa73b7278fb69a2fcb601418ed0c
parent3fe743359bea26900fbf6cd07873abc523941d1e
Fix chained hardware exception handling on Unix (dotnet/coreclr#12344)

There is an issue when hardware exception occurs while handling another hardware exception. In such case,
the exception unwinding ends up in an infinite loop. It is caused by the kernel reusing the same location
for signal handler context.

The fix is to use a windows style context local variable in the common_signal_handler that contains
the right context - it is the original signal context converted to windows style context.

Commit migrated from https://github.com/dotnet/coreclr/commit/a02634eb41284dbd432ef84aa38f526f955e5f64
src/coreclr/src/pal/src/exception/seh-unwind.cpp
src/coreclr/src/pal/src/exception/signal.cpp