25.4. Detecting Software Problems
Table 25.2. Supported Programming Languages and Software Projects
25.4.1. Detecting C and C++ Crashes
abrt-ccppservice installs its own core-dump handler, which, when started, overrides the default value of the kernel's
core_patternvariable, so that C and C++ crashes are handled by
abrtd. If you stop the
abrt-ccppservice, the previously specified value of
/proc/sys/kernel/core_patternfile contains the string
core, which means that the kernel produces files with the
core.prefix in the current directory of the crashed process. The
abrt-ccppservice overwrites the
core_patternfile to contain the following command:
|/usr/libexec/abrt-hook-ccpp %s %c %p %u %g %t e
abrt-hook-ccppprogram, which stores it in ABRT's dump location and notifies the
abrtddaemon of the new crash. It also stores the following files from the
/proc/PID/directory (where PID is the ID of the crashed process) for debugging purposes:
status. See proc(5) for a description of the format and the meaning of these files.
25.4.2. Detecting Python Exceptions
abrt.pthfile installed in
/usr/lib64/python2.7/site-packages/, which in turn imports
abrt_exception_handler.py. This overrides Python's default
sys.excepthookwith a custom handler, which forwards unhandled exceptions to
abrtdvia its Socket API.
-Soption to the Python interpreter:
python -S file.py
25.4.3. Detecting Ruby Exceptions
at_exitfeature, which is executed when a program ends. This allows for checking for possible unhandled exceptions. Every time an unhandled exception is captured, the ABRT handler prepares a bug report, which can be submitted to Red Hat Bugzilla using standard ABRT tools.
25.4.4. Detecting Java Exceptions
abrtd. The agent registers several JVMTI event callbacks and has to be loaded into the JVM using the
-agentlibcommand line parameter. Note that the processing of the registered callbacks negatively impacts the performance of the application. Use the following command to have ABRT catch exceptions from a Java class:
java -agentlib:abrt-java-connector[=abrt=on] $MyClass -platform.jvmtiSupported true
abrt=onoption to the connector, you ensure that the exceptions are handled by
abrtd. In case you want to have the connector output the exceptions to standard output, omit this option.
25.4.5. Detecting X.Org Crashes
abrt-xorgservice collects and processes information about crashes of the X.Org server from the
/var/log/Xorg.0.logfile. Note that no report is generated if a blacklisted X.org module is loaded. Instead, a
not-reportablefile is created in the problem-data directory with an appropriate explanation. You can find the list of offending modules in the
/etc/abrt/plugins/xorg.conffile. Only proprietary graphics-driver modules are blacklisted by default.
25.4.6. Detecting Kernel Oopses and Panics
abrt-vmcoreservice. The service only starts when a
vmcorefile (a kernel-core dump) appears in the
/var/crash/directory. When a core-dump file is found,
abrt-vmcorecreates a new
problem-data directoryin the
/var/tmp/abrt/directory and moves the core-dump file to the newly created problem-data directory. After the
/var/crash/directory is searched, the service is stopped.
kdumpservice must be enabled on the system. The amount of memory that is reserved for the kdump kernel has to be set correctly. You can set it using the system-config-kdump graphical tool or by specifying the
crashkernelparameter in the list of kernel options in the GRUB 2 menu. For details on how to enable and configure
kdump, see the Red Hat Enterprise Linux 7 Kernel Crash Dump Guide. For information on making changes to the GRUB 2 menu see Chapter 26, Working with GRUB 2.
abrt-pstoreoopsservice, ABRT is capable of collecting and processing information about kernel panics, which, on systems that support pstore, is stored in the automatically-mounted
/sys/fs/pstore/directory. The platform-dependent pstore interface (persistent storage) provides a mechanism for storing data across system reboots, thus allowing for preserving kernel panic information. The service starts automatically when kernel crash-dump files appear in the