diff options
author | Karel Klic <kklic@redhat.com> | 2011-05-02 20:17:55 +0200 |
---|---|---|
committer | Karel Klic <kklic@redhat.com> | 2011-05-02 20:17:55 +0200 |
commit | f2b0b2242d1d1a1a171c8bbae82acba1d45cf84e (patch) | |
tree | 17d3430106bd6e0f9331a12f1c3d70ff3e167627 | |
parent | cdec5d0d390d8f77230a5cb6b8872e7bf7e92ea1 (diff) | |
download | abrt-f2b0b2242d1d1a1a171c8bbae82acba1d45cf84e.tar.gz abrt-f2b0b2242d1d1a1a171c8bbae82acba1d45cf84e.tar.xz abrt-f2b0b2242d1d1a1a171c8bbae82acba1d45cf84e.zip |
btparser: Remove top frame with
address 0x0000 (jump to NULL) during normalization to avoid incorrect backtrace ratings (rhbz#639049)
-rw-r--r-- | src/btparser/normalize.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/btparser/normalize.c b/src/btparser/normalize.c index 4bbee99c..64ccada7 100644 --- a/src/btparser/normalize.c +++ b/src/btparser/normalize.c @@ -34,6 +34,26 @@ btp_normalize_thread(struct btp_thread *thread) btp_normalize_linux_thread(thread); btp_normalize_xorg_thread(thread); + /* If the first frame has address 0x0000 and its name is '??', it + * is a dereferenced null, and we remove it. This frame is not + * really invalid, and it affects backtrace quality rating. See + * Red Hat Bugzilla bug #639038. + * @code + * #0 0x0000000000000000 in ?? () + * No symbol table info available. + * #1 0x0000000000422648 in main (argc=1, argv=0x7fffa57cf0d8) at totem.c:242 + * error = 0x0 + * totem = 0xdee070 [TotemObject] + * @endcode + */ + if (thread->frames && + thread->frames->address == 0x0000 && + thread->frames->function_name && + 0 == strcmp(thread->frames->function_name, "??")) + { + btp_thread_remove_frame(thread, thread->frames); + } + /* If the last frame has address 0x0000 and its name is '??', * remove it. This frame is not really invalid, and it affects * backtrace quality rating. See Red Hat Bugzilla bug #592523. |