EVENT=post-create analyzer=CCpp
if grep '^TracerPid:[[:space:]]*[123456789]' proc_pid_status >/dev/null 2>&1; then
# We see 'TracerPid: <nonzero>" 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"