Open jkotas opened 1 year ago
Tagging subscribers to this area: @agocke, @MichalStrehovsky, @jkotas See info in area-owners.md if you want to be subscribed.
Author: | jkotas |
---|---|
Assignees: | - |
Labels: | `area-NativeAOT-coreclr` |
Milestone: | 8.0.0 |
The change was reverted by #95415
It looks like all the crashes occurred when the SIGSEGV was hit while the GC was trying to suspend all threads. I'm not sure why that was causing crashes with the alternate stack but isn't causing crashes when it uses the regular stack.
My (wild) guess is that it might be due to libunwind not being able to walk over the SIGSEGV frame when the handler is running on a different stack from the code where the sigsegv occured. In coreclr, we actually don't rely on libunwind over that boundary, we explicitly skip it using a context that we store in the sigsegv handler. See https://github.com/dotnet/runtime/blob/62dcb1218c72664f681d721a309b933663fd7b3b/src/coreclr/pal/src/exception/seh-unwind.cpp#L669-L679
Repro
Actual result
Segmentation fault
Expected result
Process is terminating due to StackOverflowException
(Reported by partner team.)