-
Notifications
You must be signed in to change notification settings - Fork 349
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
Use faulthandler instead of isys signal handlers #4350
Use faulthandler instead of isys signal handlers #4350
Conversation
31d64a2
to
593dde4
Compare
/kickstart-test --testtype smoke |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good to me, thank you!
I wonder if we need to add / update strings in log monitor of kickstart tests. May be worth checking, but not blocking the PR.
Certainly, and |
A few more details:
I will amend the commit message with that. |
This changes how the core dump support works, as well as the intermediate outputs. However, it provides eventually the same kinds of information, only in different places and order. Previously: - Print that a signal was received, and which one. - Log to syslog that this happened. - Print userland stack trace of main process main thread. - Save core dump: - always to /tmp/anaconda.core.<PID> - always, independent of system settings - somehow very slowly - maybe forking python and running gcore isn't the most performant idea - file size ca. 1 GB - Journal gets only the syslog message. Now: - Print that a fatal error happened, no mention of signals. - No unique message in syslog to identify that "anaconda" crashed. - Print python stack of all the threads in the main process. - Save core dump: - to default location - according to system settings - needs invoking coredumpctl manually to work with the actual core dump - blazing fast saving compared to previous state - initally stored compressed to ca. 60 MB, exports to ca. 430 MB - apparently requires more debuginfo downloads for loading in gdb, system can run out of space or memory - Journal gets more: - unique message that "Process <PID> (anaconda) of user <UID> dumped core." - userland stack traces of *all* threads - To analyze, use coredumpctl: - `coredumpctl` with no arguments lists the PID, signal, and executable - `coredumpctl info` (with no query) shows metadata and the same information as journal, in pager In both cases, using the (coredumpctl+)gdb+debuginfod+dnf toolchain leads to a successful interactive debugging session.
593dde4
to
1911c78
Compare
Based on the above, I think we can merge this and not lose anything. |
/kickstart-test --testtype smoke |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you!
@bcl just a heads up that this might change how fatal errors look... |
The code that lmc uses is here - https://github.com/weldr/lorax/blob/f33-branch/src/pylorax/monitor.py#L38 So as long as the new output has either 'Traceback' or 'Call Trace:' in it lmc will catch it. |
Unfortunately that's none of that.
I'll make a PR. |
This significantly changes outputs, but provides eventually the same kinds of information, only in different order.
Previously:
Now:
In both cases, using the (coredumpctl+)gdb+debuginfod+dnf toolchain leads to a successful interactive debugging session.