-
Notifications
You must be signed in to change notification settings - Fork 243
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
[BUG] While using cursive, stacktrace (on panic) are never printed to (non-alternate) screen #754
Comments
Hi, and thanks for the report! I think the issue is that the message is printed at the time of the panic, before unwinding (and calling drop). Then, unwinding happens, and the screen is cleared. I see two possible workarounds:
|
I'm doing the third possible workaround, which works nicely with custom panic hooks (like color-backtrace) - resetting the terminal state in the panic handler :) Seems to work great - except for vscode terminal which does something weird: color_backtrace::install()
// reset the terminal before printing the panic
let hook = std::panic::take_hook(); // someday the update_hook method will become stable
std::panic::set_hook(Box::new(move |info| {
use cursive::backends::crossterm::crossterm::*;
_ = execute!(
std::io::stdout(),
terminal::LeaveAlternateScreen,
cursor::Show,
event::DisableMouseCapture,
);
_ = terminal::disable_raw_mode();
hook(info)
}));
|
Describe the bug
Using cursive and a panic comes up (example via a
todo!
or explicitpanic!
) does not show up at all once.run
has been called and the panic originates from a viewTo Reproduce
todo!("test")
to examplethemed_view
in functionshow_dialog
(anywhere in the function) (or any other example)Expected behavior
Cursive should exit all screen modes, but not prevent stacktraces / have the stacktraces printed after
Screenshots
Environment
LANG=en_US.UTF-8
Additional context
I have been trying to debug this, but i have not found the cause yet, from what i can tell this problem is backend agnostic (it happens in
ncurses
andcrossterm
) and modifyingDrop
incrossterm
(while it is used) almost changes nothing, the only thing that changed something was to comment-outLeaveAlternateScreen
, which somehow it still exits the alternate screen (maybe because of my shell or terminal on process exit?) where it has printed the stacktrace, but formatted very badlyusing crossterm directly (without cursive) does not result in this problem, when reset via a panic hook
The text was updated successfully, but these errors were encountered: