Fix #8860: [Win32] Crashlog window wasn't reliably shown for crashes. #8861
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Motivation / Problem
If a crash occurs on a different thread to the main thread, the crashlog window wasn't reliably shown on windows.
Description
Crashlog on windows relies on a captured stack pointer to always have a safe stack area. We only captured the stack pointer on the main thread, which doesn't work when calling the crashlog handler from a different thread.
To solve this, we make the stack pointer a thread local var and capture it on thread init.
Limitations
@JGRennison has an alternate suggestion in #8860, which, as far as I can see, would be enough for Windows (expect ARM64). This PR implements a solution that is more general, which in the future could be used to support thread specific things also on other platforms.
Checklist for review
Some things are not automated, and forgotten often. This list is a reminder for the reviewers.