Fix unhandled exception when dependency is missing #99117
Merged
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.
ASPNet team has found that the new exception handling doesn't handle unhandled exception caused by a missing dependency assembly correctly. Instead of invoking the unhandled exception machinery in the native code, it actually exited back to the managed exception handler loop with a failure from the the SfiInit.
The reason is that in that specific case, the check if there are still managed frames on the stack that's done by checking if there is any explicit frame doesn't work, since there is a helper method frame.
This change fixes it by moving the unhandled exception check to the end of the SfiInit when we haven't found any managed frame through the stack walker.
It also changes the
RaiseFailFastException
toRaiseException
so that a native host can catch it, which the ASPNet also needs.I have added a test case for that to the unhandled exception tests.