[lldb][swift] Mark async unwinding plans as SourcedFromCompiler #9820
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.
LLDB always attempts to check other unwinding plans when an unwind plan produces a CFA == 0. It does so because it doesn't distinguish the case where the plan truly produced the end of the stack versus the case where the plan was faulty.
We need a mechanism to disable this for swift async plans: if the language runtime constructs such a plan, then that plan will correctly identify the bottom of the stack. Checking other plans is harmless in non-async settings (they would just produce the same backtrace), but it is harmful for async virtual backtraces, as a "regular" unwind plan would produce a real backtrace if it were asked to start from the top of the stack (which would happen in short backtraces).
Until such mechanism exists, we can work around the issue by claiming swift async plans are "sourced from compiler", which seem to disable the fallback mechanism because plans sourced from the compiler are considered the most reliable plans.
rdar://142683622