EVENT=post-create analyzer=CCpp if grep '^TracerPid:[[:space:]]*[123456789]' proc_pid_status >/dev/null 2>&1; then # We see 'TracerPid: " in /proc/PID/status # Process is ptraced (gdb, strace, ltrace) # Debuggers have wide variety of bugs where they leak SIGTRAP # to traced process and nuke it. Ignore this crash. echo "The crashed process was ptraced - not saving the crash" exit 1 # abrt will remove the problem directory fi if grep -q ^ABRT_IGNORE_ALL=1 environ \ || grep -q ^ABRT_IGNORE_CCPP=1 environ \ ; then echo "ABRT_IGNORE variable is 1 - not saving the crash" # abrtd will delete the problem directory when we exit nonzero: exit 1 fi # Try generating backtrace, if it fails we can still use # the hash generated by abrt-action-analyze-c [ ! -e core_backtrace ] && abrt-action-generate-core-backtrace # Run GDB plugin to see if crash looks exploitable [ -r coredump ] && abrt-action-analyze-vulnerability # Generate hash abrt-action-analyze-c && abrt-action-list-dsos -m maps -o dso_list && ( # Try to save relevant log lines. # Can't do it as analyzer step, non-root can't read log. executable=`cat executable` && base_executable=${executable##*/} && # Test if the current version of journalctl has --system switch journalctl --system -n1 >/dev/null if [ $? -ne 0 ]; then # It's not an error if /var/log/messages isn't readable: test -f /var/log/messages || exit 0 test -r /var/log/messages || exit 0 log=`grep -F -e "$base_executable" /var/log/messages | tail -99` else uid=`cat uid` && log="[System Logs]:\n" && log=$log`journalctl -b --system | grep -F -e "$base_executable" | tail -99` && log=$log"\n[User Logs]:\n" && log=$log`journalctl _UID="$uid" -b | grep -F -e "$base_executable" | tail -99` && log=`echo -e "$log"` fi if test -n "$log"; then printf "%s\n" "$log" >var_log_messages # echo "Element 'var_log_messages' saved" fi ) EVENT=collect_xsession_errors analyzer=CCpp dso_list~=.*/libX11.* # # Where is X session error log - traditional or new location? # xsession_errors=~/.xsession-errors test -f "$xsession_errors" || xsession_errors=~/.cache/gdm/session.log # # We do not want to abort further processing, # thus we do not fail (exit with nonzero) if the file isn't there: test -f "$xsession_errors" || { echo "No $xsession_errors"; exit 0; } test -r "$xsession_errors" || { echo "Can't read $xsession_errors"; exit 0; } executable=`cat executable` && base_executable=${executable##*/} && grep -F -e "$base_executable" "$xsession_errors" | tail -999 >xsession_errors && echo "Element 'xsession_errors' saved" # TODO: can we still specify additional directories to search for debuginfos, # or was this ability lost with move to python installer? EVENT=analyze_LocalGDB analyzer=CCpp # Run GDB plugin to see if crash looks exploitable abrt-action-analyze-vulnerability # Run GDB to genereate backtrace abrt-action-analyze-ccpp-local --without-bz # Bugzilla requires nonempty duphash EVENT=report_Bugzilla analyzer=CCpp duphash!= test -f component || abrt-action-save-package-data component="`cat component`" format="bugzilla_format.conf" test -f "/etc/libreport/plugins/bugzilla_format_$component.conf" \ && format="bugzilla_format_$component.conf" formatdup="bugzilla_formatdup.conf" test -f "/etc/libreport/plugins/bugzilla_formatdup_$component.conf" \ && formatdup="bugzilla_formatdup_$component.conf" reporter-bugzilla -b \ -c /etc/libreport/plugins/bugzilla.conf \ -F "/etc/libreport/plugins/$format" \ -A "/etc/libreport/plugins/$formatdup" # Send micro report EVENT=report_uReport analyzer=CCpp /usr/libexec/abrt-action-ureport # update ABRT database after successful report to bugzilla EVENT=post_report analyzer=CCpp reporter-ureport -A -B exit 0 EVENT=analyze_CCpp analyzer=CCpp abrt-action-perform-ccpp-analysis # Reporting of C/Cpp problems EVENT=report-gui analyzer=CCpp report-gtk -- "$DUMP_DIR" EVENT=report-cli analyzer=CCpp report-cli -- "$DUMP_DIR"