Hi,
I just pushed the branch 'canonical_backtrace' to both abrt and
libreport git repos. This is part of the effort to implement quick,
local check for duplicate bugs for ccpp-generated crashes without the
need for debuginfos. More info below if you're curious.
The idea is that the binary abrt-action-generate-canonical-backtrace
will be run in post-create hook and will extract 'canonical' backtrace
from the core dump. This canonical backtrace is a text file, which
contains one line for each function frame from the core dump stack. We
should be able to decide whether two lines represent the same function
and thus, using a string comparison algorithm (to be done), to decide
whether two such backtraces are a manifestation of the same bug.
Currently, each line contains:
- symbol name, if it is present in the binary (which is the case of
public functions in shared libraries)
- build id and instruction pointer offset relative to the start of
executable segment of the binary -- this should allow us to decide
stack frame equality for two crashes of the same build of a binary,
for more info see [1]
- file name (i.e. library or "[exe]") the code was loaded from
However, we would also like this approach to work on two different
builds of the same (or slightly different) binaries. We'd like to
achieve this by computing a 'fingerprint' of assembly of each function
in the file. This is somewhat tricky and we're still figuring out how to
do it effectively.
Question: is it ok to change history/rebase such development branch,
even though it's published?
Cheers,
Martin Milata
[1]
http://fedoraproject.org/wiki/Summer_Coding_2010_ideas_-_Universal_Build-...