ABRT (Automatic Bug Reporting Tool), is a set of tools that help users detect and analyze application crashes. ABRT features additional type of lightweight bug report that can be used to report software crashes to Red Hat. These reports, called uReports, are designed to contain no potentially sensitive information and do not require you to download potentially large amount of debugging information. They will allow Red Hat to keep track of bug occurrences while not necessarily providing enough information for their engineers to fix the bug. For that, you still may have to send a full bug report.
ABRT currently supports the detection of crashes in applications written in the C, C++, Java, Python, and Ruby programming languages, as well as X.Org crashes, kernel oopses, and kernel panics.
What exactly does a uReport contain?
ABRT supports uReports for four types of crashes: crashes of C/C++ programs that result in a core dump, uncaught Python exceptions, uncaught Java exceptions and kernel oopses. Each uReport generally contains a stack trace, or multiple stack traces in the case of multi-threaded C/C++ and Java programs. The stack trace only describes the call stack of the program at the time of the crash and does not contain contents of any variables.
Every uReport also contains identification of the operating system, versions of the RPM packages involved in the crash, and whether the program ran under a root user. There are also items specific to each crash type:
- for C/C++ crashes, these are: path to the executable and signal delivered to the program
- for Python exceptions, there is the type of the exception (without the error message, which may contain sensitive data)
- for kernel oopses, these are: list of loaded kernel modules, list of taint flags, and full text of the kernel oops
1. First, we’ll install the necessary packages to start using the ABRT tools and utilities. Install the abrt daemon and tools via the following command line:
# yum install abrt-cli
2. Enable and start the abrt daemon with the systemct command.
# systemctl enable abrtd # systemctl start abrtd
For CentOS/RHEL 6 and below, use:
# chkconfig abrtd on # service abrtd start
3. Verify the status of the service.
# systemctl status abrtd ● abrtd.service - ABRT Automated Bug Reporting Tool Loaded: loaded (/usr/lib/systemd/system/abrtd.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2018-06-05 15:17:50 UTC; 15s ago Main PID: 2071 (abrtd) Tasks: 1 CGroup: /system.slice/abrtd.service └─2071 /usr/sbin/abrtd -d -s Jun 05 15:17:50 user.geeklab.com systemd: Started ABRT Automated Bug Reporting Tool. Jun 05 15:17:50 user.geeklab.com systemd: Starting ABRT Automated Bug Reporting Tool... Jun 05 15:17:50 user.geeklab.com abrtd: Init complete, entering main loop
1. You may need to first enable the autoerporting feature, otherwise you would get an error when you execute the “abrt-cli list” command as shown below.
# abrt-cli list The Autoreporting feature is disabled. Please consider enabling it by issuing 'abrt-auto-reporting enabled' as a user with root privileges
2. As suggested in the error message above enable the Autoreporting feature first using the below command.
# abrt-auto-reporting enabled
Enabling micro-reporting allows Red Hat to keep track of bug occurrences and potentially provide fixes even without the need to open a support case.
3. Once installed, ABRT will start catching crashes. When a crash occurs ABRT creates a sosreport and gathers all the necessary data for engineers to fix the crash. To list crashes caught by ABRT do:
# abrt-cli list
or use the desktop application (gnome-abrt on CentOS/RHEL 7, abrt-gui on CentOS/RHEL 6). ABRT will guide you through the reporting process. Please review the report so that it doesn’t contain any sensitive data.
4. The output from the above command can be used to get all the information about the segmentation fault. You can also report the issue to RedHat support with the “abrt-cli report” command. The sytax of the command is :
# abrt-cli report Usage: abrt-cli report [options] DIR... -v, --verbose Be verbose -d, --delete Remove PROBLEM_DIR after reporting -u, --unsafe Ignore security checks to be able to report all problems
Enabling automatic reporting
You can turn the automatic reporting on by running “abrt-auto-reporting” enabled as root or by making sure that /etc/abrt/abrt.conf contains the following line:
# vi /etc/abrt/abrt.conf AutoreportingEnabled = yes
If you prefer to use command-line tools you can use the abrt-cli program to send the bug report manually to the RedHat support team.