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-ID#...