Interfacing with ABRT¶
Socket API¶
Socket API allows creation of new problems. It is used by Python and Java hooks
to pass required data to abrtd
.
Socket path:
/var/run/abrt/abrt.socket
First line has to contain HTTP header:
POST / HTTP/1.1\r\n\r\n
followed by key=value
pairs delimited with \0
.
The server expects another \0
at the end of the message.
Mandatory keys:
type
— (string) problem type, see Supported problem types.pid
— (integer) process ID of the crashed procss, ranges from 0 to PID_MAX (/proc/sys/kernel/pid_max
)executable
— (string) path of the affected executablebacktrace
— (string)reason
— (string) reason of the crash
To ensure the problem can be reported to Bugzilla via report-gtk or report-cli you have to add the following keys with the following contents:
duphash
— (string) duplicate hash. The hash is placed in Bugzilla’sWhiteboard
field in the formatabrt_hash:$duphash
. For C/C++, the content ofduphash
is the SHA-1 digest of the concatenation of the names of top six functions on the stacktrace. For Python exceptions, it is the SHA-1 digest of the stacktrace.uuid
— (string) local identifier of the problem. The content can be the same as forduphash
.
Optionally, the server accepts other elements listed in Elements collected by ABRT.
If there’s no error, the server responds with:
HTTP/1.1 201 Created\r\n\r\n
or 400
status code in case of error.
Python hook may serve as an example of the socket API usage.
DBus API¶
Documentation for the DBus API at org.freedesktop.problems
is available as part
of the abrt-dbus
package or online at
http://jfilak.fedorapeople.org/ProblemsAPI/re01.html.
Python API¶
Documentation for the Python API is available in the python3-abrt(5)
man page
(part of the python3-abrt
package).