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
Add option to not capture panics #578
Comments
The behavior is probably caused by running the component runtime as a future on the glib runtime (through spawn_local). The only way to improve on this would be to add our own unwind catcher and terminate the app from there, if desired by the user. |
Are you saying there wouldn't be a way to propagate errors up to a user-defined function? I'm wanting to capture panics in my |
Mentioning my use case to try to give some clarity on what I'm trying to do, but I'd like to capture all panics in my application from |
Most async runtimes capture panics in tasks and I think glib does that too. This is done to prevent a single task from terminating the entire app. Unfortunately, this is what you want in your case. What I was thinking is to add a panic handler to the |
I think the cleanest approach would be for nothing to capture panics, and for them to always just propogate all the way back up the stack. I don't really like the idea of having to add a panic handler to each I'm thinking of filing an issue with the upstream |
Alright, I think I've figured out a pretty good solution to my issue: As mentioned at gtk-rs/gtk-rs-core#1229 (comment), letting panics go all the way back up to my Since I just needed to capture panics on a global level, I've found this solution to work just fine though:
std::panic::set_hook(Box::new(|info| {
...
})); I didn't know This should be pretty much solved for me, feel free to close it if there isn't anything else you want looked at with it. |
It appears that when a panic happens anywhere in the
Component
trait (or any others that function similarly to it) that panics are captured. After the panic occurs, it seems like certain parts of my application (that I haven't seen a pattern to yet) are no longer running, and then my application is left in an unclean state where it can't really do much without breaking.I'm not sure if this is intended behavior, but I'd really like it if I could at least have an option to disable this panic capturing.
The text was updated successfully, but these errors were encountered: