-
Notifications
You must be signed in to change notification settings - Fork 4.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Developers can target macOS UI with .NET 6 #44736
Comments
I couldn't figure out the best area label to add to this issue. If you have write-permissions please help me learn by adding exactly one area label. |
@rolfbjarne and @janvorli I have added a checkbox above for validating the signally logistics as they relate to customer crash collection mechanisms. I need to defer for how to validate these scenarios. /cc @jeffschwMSFT |
This is also an area where coreclr and mono provide different experiences. For mono providing a hook so that textual traces would be produced was at the tip of possible. coreclr provides an x-plat post mortem diagnostic experience (out of proc). So this is likely an area where we can provide an enhanced experience in addition to the signal approach, but perhaps instead of that one as well. |
@jeffschwMSFT my main concern is that we don't prevent people from using custom crash-reporting mechanisms, and in that regard it's important to know if CoreCLR are using signals in any way right now (for instance: are NullReferenceExceptions implemented by handling SIGSEGVS like they are on Mono? And what out floating point exceptions such as division by zero / SIGFPE?) Also on some platforms it's not possible to do anything out of proc (this is the case on iOS - which is currently not a target platform for CoreCLR, but may be in the future). |
@rolfbjarne we use signals for handling hardware exceptions like SIGSEGV and SIGFPE on Linux, but not on MacOS where we use exception ports (I was planning to migrate to signals on macOS too soon). But we only handle them when they occur in our code (managed code for both and SIGSEGV also in a few related JIT helpers). When they happen at other places, we call the previously registered handler to give a chance to handle it e.g. in a custom host. |
@janvorli I think we'll have to come up with some solution then, because that will interfere with third-party crash reporters.
The purpose of a crash reporter is to detect and report crashes anywhere in an app, and they all assume that SIGSEGV/SIGFPE are bad and should be treated as a crash (rightfully so IMHO). They have no way of knowing that SIGSEGVs/SIGFPEs in certain parts of the app shouldn't be fatal. The way we solved this with Xamarin was to let mono handle any signals first, and then chain to the previous handler (like CoreCLR doing) + add API to have third-party code (re)install mono's signal handlers, so that third-party code doesn't have to be initialized before mono (which is usually not possible). This is described here: https://www.mono-project.com/docs/advanced/signals/ This use case is narrow enough that I don't think we have to provide an identical API in CoreCLR, but we should at least find a solution to the problem. |
What are the third-party crash reporters that this is important to solve for? |
Crashlytics is one example of a third party crash reporter some of our customers use. |
Sentry is another crash reporting tool with customers using Mono on iOS/macOS. |
@steveisok @marek-safar can we close this now? are any tasks remaining for the 6.0 release? |
@steveisok @marek-safar friendly ping 😄 |
We can close it if it's bothering you but this will be fully completed after GA |
Not bothering for sure 😄 just doing bookkeeping on issues marked as 6.0 for our areas. If this will be completed post 6.0 but it's not finished yet, I'll just switch the milestone. |
This issue title seems to be targeted at .NET 6 and I'm trying to clean up the .NET 6 project. Do we need to update the issue or create a new one? |
I defer to @marek-safar on this |
This work is the evolution of existing Xamarin.Mac solution but built on CoreCLR VM foundations. The goal is to expose macOS APIs to allow developers to leverage macOS APIs such us Cocoa, Catalyst system and other native macOS APIS in the way they can build applications which run locally or are distributed via Mac App Store.
Work Items
The text was updated successfully, but these errors were encountered: