From Fedora Project Wiki

Retrace Server

Summary

Server that simplifies coredump analysis.

Owner

  • Email: mtoman@redhat.com

Co-workers

Current Status

  • Targeted release: Fedora 15
  • Last updated: 2010-11-09
  • Percentage of completion: 50%

Detailed description

At the moment of backtrace creation user needs to have all relevant debuginfos installed locally. Downloading and installing them may require a lot of time and storage space depending on the package and its dependencies. The idea of Retrace Server is to liberate users from this: User sends the coredump packed along with some other required information (e.g. packages list) to the Retrace Server, the Retrace Server installs required debuginfo files, creates backtrace using standard debugging tools and provides it to the user for further processing.

Benefit to Fedora

No need to download debuginfo packages while creating backtrace from various binary crashes.

Scope

The project itself consists of 3 parts:

  • Interface: Receives the archive from user, unpacks all files, puts new task into the queue.
  • Analyzer: Takes the task from queue, for each creates a virtual root with all required packages and debuginfos installed and creates the backtrace within.
  • Repo Synchronizer: Downloads packages to a local repository containing all versions of all packages, to be able to handle crashes from older versions.

ABRT plugin that packs required files and sends the archive to the Retrace Server must be implemented.

How To Test

The communication between client and server will be handled by future ABRT plugin. As soon as it is implemented, the testing script will be removed.


At the moment, testing is possible using "test-uploader" from "retrace" branch of ABRT Git repository. The script is only designed for test purposes and does not handle all errors possible.

Usage:

The script upload.py takes two arguments:

First (mandatory) - ABRT crash directory, by default found in the /var/spool/abrt/ directory.

Second (optional) - Retrace server address (not important at the moment, there is only one testing machine running retrace server - simona.expresmu.sk - will be migrated).

Running upload.py with different number of arguments will display short help message.


Script's output includes raw HTTP response containig X-Task-Id and X-Task-Password headers. You may ask the retrace server about three things using these headers:

  • Status - HTTP response contains X-Task-Status header with one of three values 'PENDING', 'FINISHED_SUCCESS', 'FINISHED_FAILURE'. wget may be used to show the output (the HTTP response has no body):

wget -S --no-check-certificate -O /dev/null --header="X-Task-Password: <Task-Password>" "https://simona.expresmu.sk/<Task-Id>/"

  • Log - Afrer retrace is finished (FINISHED_SUCCESS or FINISHED_FAILURE) the log is available. wget may be used to download the log:

wget -S --no-check-certificate --header="X-Task-Password: <Task-Password>" "https://simona.expresmu.sk/<Task-Id>/log"

  • Backtrace - Afrer successful retrace (FINISHED_SUCCESS) the backtrace is available. wget may be used to download the backtrace:

wget -S --no-check-certificate --header="X-Task-Password: <Task-Password>" "https://simona.expresmu.sk/<Task-Id>/backtrace"


Each Task-Password is for single use. After every status / log / backtrace request, the response contains X-Task-Password header with new Task-Password.

This section needs to be completed for FESCo submission poelcat 16:45, 4 November 2010 (UTC)

User Experience

If ABRT catches a crash that needs backtrace generation, user will be able to choose whether to generate backtrace locally or remotely.

Dependencies

  • abrt-addon-ccpp
  • gdb
  • xz
  • mod_wsgi
  • python-webob

Contingency Plan

Not required, feature can easily be disabled.

Documentation

Release Notes

  • FIXME

Comments and Discussion