[PATCH 0/3] Avoid false positives when deduplicating very short core backtraces

Martin Milata mmilata at redhat.com
Fri May 10 14:07:27 UTC 2013


According to [1], whenever a crash happens on a machine and an unrelated crash
happened previously and both of them had core backtrace with only one frame,
they would get classified as duplicates, regardless whether the frames are
different or not.

The deduplication routine measures levenshtein distance between the two
backtraces and whenever the result is less or equal than two, the backtraces
are marked as duplicates. Levenshtein distance denotes the number of operations
required to get one sequence from another, so it is always <= 1 for backtraces
of length 1 and <= 2 for backtraces of length 2.

One solution is to divide the distance by the length of the backtrace and then
decide based on this relative number of frames. AFAIK we use this method for
server-side clustering, and it is also the default deduplication method in
satyr (backtraces with less than 30% different frames are marked duplicates).

I decided to implement another fix - check whether at least one of the
backtraces is shorter than three frames, and if it is, perform a full
comparison of the backtraces. If the backtraces are longer, use the usual
method. The reason is not breaking the ABRT in RHEL6 too much (no big
adjustment to the algorithm), while the first solution will be used with the
switch to satyr anyway (I expect that some debugging and adjustments will be
necessary).

Let me know what you think and I'll redo the patch. Sorry for so much text.

[1] https://github.com/abrt/btparser/issues/6

Martin Milata (3):
  Only problems of same type can be duplicates
  satyr-compat: treat bt distance as a float
  Short BT deduplication false positives workaround

 src/daemon/abrt-handle-event.c | 39 ++++++++++++++++++++++++++++++++++-----
 src/include/satyr-compat.h     | 10 ++++++++--
 2 files changed, 42 insertions(+), 7 deletions(-)

-- 
1.7.11.7



More information about the Crash-catcher mailing list