|2009-08-20||From 12:00 to 21:00 UTC (8am - 5pm EDT, 14:00 - 23:00 CET)||#fedora-qa (webirc)|
Today's installment of Fedora Test Day will focus on Automated Bug Reporting Tool (ABRT). This tool should help non-power users with bug reporting, making it as easy as a few mouse clicks. ABRT is a daemon that watches for application crashes. When a crash occurs, it collects the crash data (core file, application's command line etc.) and takes action according to the type of application that crashed and according to the configuration in the abrt.conf configuration file. Bottom line: do not hunt the bugs with a pitchforks, rather use bugzappers/big light source to draw them from the dark and kill them easily at close range.
ABRT should be easy for users and very useful for developers and admins. Ease of crash/bug reporting and quick response from maintainers based on info from ABRT should make Fedora more stable and thus more attractive for users.
We will test:
- ABRT GUI;
- compiled (C/C++) programs support;
- Python programs support;
- detection if apps are from supported packages;
- using configured plugins:
- database plugin;
- bugzilla plugin (report crash to bugzilla);
- file transfer plugin (transfer crash data via network);
- mailx plugin (send mail when crash happens);
- kernel oops plugin;
- RunApp plugin (run arbitrary application when crash happens).
The following people will be available for testing, workarounds, bug fixes, and general discussion:
- Development - Zdenek Prikryl Jiri Moskovcak (confirmed) <<FIXME: Confirmation needed>>
- Quality Assurance - David Pravec, Kamil Páral, James Laska
Prerequisite for Test Day
You will need to get current ABRT (select your method):
- install latest ABRT from Rawhide
- install latest ABRT from its development repository on Fedora 11
<<FIXME: for now we have only internal RedHat IP server, setup public repository!>>. For Redhat internal abrt development server create /etc/yum.repos.d/abrt.repo containing:
[abrt] name=ABRT baseurl=http://10.34.33.153/$releasever/$basearch/ gpgcheck=0 enabled=1
- download and burn ABRT Testing CD (ISO images will be available at least 24 hours before the test day starts)
- ABRT features, overview
- ABRT Home page (trac wiki)
- ABRT FUDCon Berlin 2009 presentation
- ABRT was in the past called CrashCatcher
How to start using ABRT
Install abrt and plugins:
# yum install abrt-desktop
This is not needed when you will use ABRT TestDay Live CD.
Start the daemon (as root):
# /etc/init.d/abrt start
$ chkconfig abrt on $ reboot
Start the notification applet (should be autostarted, but if it's not):
$ abrt-applet &
Test basic functionality
Now if something crashes, ABRT will handle the crash. If you want to test this, crash something, for example:
$ xfontsel & $ killall -6 xfontsel
An icon will appear in the notification area. You can now run the GUI:
$ abrt-gui &
Now select the crash, click "report" to report it, or click "delete" to delete it.
First let's go thru the config file and explain purpose of every option one can find there.....
Let start with common section:
[ Common ] # Enable GPG check # this option is to ensure, that we primary report crashes only in fedora signed packages # if you disable this abrt will report crashes in customized unsigned packages EnableOpenGPG = no
How to test it:
Set this to yes, create some package (or download 3rd party one), install it and crash the program from that package - ABRT should ignore it. Set this to no, crash some program from the unsigned package, this time ABRT should notice it. Rest this with signed Fedora package, it should report the crash in both cases.
Using GPG Keys:
# this is the place, where user can add other trusted gpg keys used to sign packages # from some repository (e.g. rpm fusion) # GPG keys OpenGPGPublicKeys = /etc/pki/rpm-gpg/RPM-GPG-KEY-fedora
How to test this: Set gpg check to yes and instal some package from fusion rpm (or any other repo). Crash an application from this package - abrt should ignore it this time. Leave gpg check on and import the gpg key from the repo(if you haven't already). Add the gpg key into abrt config, crash semething from the package - and this time it should be reported.
# blacklisted packages BlackList = bash, bind, apache2
How to test this: what's in blacklist is ignored, I think this is pretty obvious how to test it
# enabled plugins EnabledPlugins = SQLite3, CCpp, Logger
How to test this: only plugins in EnabledPlugins are loaded, so try to run
$ abrt -d and
you should see what is being loaded and try to fidle with enabled plugins -- if you remove SQLite3 plugin it should complain that it needs some DB plugin.
# selected DB plugin Database = SQLite3 # this option is to ensure, that crashdumps won't take the whole HDD space MaxCrashReportsSize = 100;
How to test this: set this to some lower value and try to generate some crashdumps with abrt and exceed this limit - the last dump shouldn't be saved note - the last saved dump can exceed this value, but the next one won't be saved
Actions and reporters:
# list of actions and reporters which are activated immediately after a crash # occurs ActionsAndReporters =
If you add here some repotrer or action plugin, then it shout be run at crash time. So for example:
ActionsAndReporters = RunApp("ls". "ls-output")
Save output from ls command into the file called ls-output. This file will be used in summary report. Try Reporter plugin Mailx(<subject>) or other...,
Now let's gou through second section. There is saved association among analyzers and actions and/or reporter plugins:
[ AnalyzerActionsAndReporters ] # all C/C++ crashers will be reporter via Logger CCpp = Logger # if bind crash. then an email will be send and Logger should be silent CCpp:bind = Mailx("[abrt] Bind crashed") # all kernel crashers will be reporter via Logger Kerneloops = KerneloopsReporter
How to test this: try to change the analyzer - reporter association to smth else and report some crash. it should reported somewhere else (Logger logs to /var/log/abrt-logger, mailx sends email to the configured email address)
Last section is:
[ Cron ] # hh:mm # * means every # every 5 minutes an action plugin Kerneloops will be activated *:5 = Kerneloops
How to test: Try to add activation of other action plugin in particular time. Cron should activate it.
ABRT Test Cases to be tested
Available tests include:
- QA:Testcase_abrt - default crash report
- QA:Testcase_abrt_Logger - Logger plugin
- QA:Testcase_abrt_Mailx - Mailx plugin
Some more cases might be in ABRT_Test_Cases Category. <<FIXME: move all tests from this page into this,, update existing ABRT (or CrachCather) Test Cases>>
Consult list of active tickets before reporting an issue. The most common issues are listed below:
- Report multiple crashes - if you want to report same crash twice, you have to remove CC's DB (default path /var/cache/crash-catcher/crash-catcher-db) and make a crash again
- dbus timeout - if reporting causes an installation of many debuginfos, then a dbus timeout may occur. In that case, try to report crash again after debuginfos are installed.
- crash-catcher daemon crash - if crash-catcher daemon unexpectedly crashs, then look for .lock files in /var/cache/crash-catcher/ and delete them. They may cause a deadlock.
- Nothing happened? - if it seems to do nothing, try to disable PGP checking and restart daemon
- Graphical warnings - gui writes some gtk warnings
- Report editing - report editing from gui doesn't work
- rpm %requires - it needs rpm >= 4.6.0-1 (rc3 segfaults)
- you cannot use abrt to catch crashes of OpenOffice, KDE and Java apps -- they are catching those crashes themselves.
- if you're updating from version <= 0.0.5-6 make sure you remove /var/abrt/cache/abrt-db (we've changed the db fomrat and not yet implemented automatic updating mechanism)
<<FIXME: Confirmation/cleanup needed>>
Issues that were identified
Things that work alright