Using ABRT on CentOS/RHEL 7

ABRT (Automatic Bug Reporting Tool), is a set of tools that detects and analyze application crashes. 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. 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

Installing ABRT

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 systemd[1]: Started ABRT Automated Bug Reporting Tool.
Jun 05 15:17:50 systemd[1]: Starting ABRT Automated Bug Reporting Tool...
Jun 05 15:17:50 abrtd[2071]: Init complete, entering main loop

Using abrt-cli

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