[release/8.0-staging] [mono] Chain SIGSEGV
native crashes to the default SIGSEGV
handler
#110866
+48
−5
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.
Backport of #110741 to release/8.0-staging
/cc @ivanpovazan
Customer Impact
Found internally: #106064 and reported by customer #107641
Without this change customers cannot get crash reports for post-mortem debugging when segmentation fault happens in the native code in their iOS/MacCatalyst applications.
This makes it really difficult to determine a cause of the crash on physical devices since there is no log or crash report when the failure occurs.
In this PR we make sure that we also consider default SIGSEGV handlers configured as
sa.sa_handler == SIG_DFL
when chaining the signal, after our signal handling completes. This enables the default handler to respond to the signal and generate a crash report.Regression
It is unclear when the regression happened as we were able to get SIGSEGV crash reports on iOS before.
It is possible that there was a change on how default OS handlers are configured on iOS-like platforms by Apple, which stopped our crash chaining logic from working properly.
Testing
Tested manually on MAUI iOS and MacCatalyst applications that the SIGSEGV signal is properly propagated to the default handler and that crash reports are generated properly.
Risk
Low. The change only includes an additional case to consider when chaining crash signals.
release/X.0-staging
, notrelease/X.0
.Package authoring no longer needed in .NET 9
IMPORTANT: Starting with .NET 9, you no longer need to edit a NuGet package's csproj to enable building and bump the version.
Keep in mind that we still need package authoring in .NET 8 and older versions.