summaryrefslogtreecommitdiffstats
path: root/src/Backtrace
diff options
context:
space:
mode:
authorKarel Klic <kklic@redhat.com>2010-02-04 11:28:18 +0100
committerKarel Klic <kklic@redhat.com>2010-02-04 11:28:18 +0100
commit7832c5a66672c63ebda91554bd463b85669755bb (patch)
treea0164bbd558399128a8329f13f0f32121ab7f4e0 /src/Backtrace
parente45356512a661c4dd1d4d18bc40c37a3ffb3b989 (diff)
parenta50985f228686b8eecd7025a0851001f216c71d6 (diff)
downloadabrt-7832c5a66672c63ebda91554bd463b85669755bb.tar.gz
abrt-7832c5a66672c63ebda91554bd463b85669755bb.tar.xz
abrt-7832c5a66672c63ebda91554bd463b85669755bb.zip
Merge branch 'master' of ssh://git.fedorahosted.org/git/abrt
Diffstat (limited to 'src/Backtrace')
-rwxr-xr-xsrc/Backtrace/abrt-bz-dupchecker18
-rwxr-xr-xsrc/Backtrace/check-bt-parsability3
-rw-r--r--src/Backtrace/main.c4
-rw-r--r--src/Backtrace/parser.y25
4 files changed, 41 insertions, 9 deletions
diff --git a/src/Backtrace/abrt-bz-dupchecker b/src/Backtrace/abrt-bz-dupchecker
index 01cafa0..4484d39 100755
--- a/src/Backtrace/abrt-bz-dupchecker
+++ b/src/Backtrace/abrt-bz-dupchecker
@@ -10,6 +10,14 @@
#
# Please do not run this script unless it's neccessary to do so.
# It forces Bugzilla to send data related to thousands of bug reports.
+#
+#
+# Useful text to be pasted to Bugzilla:
+"""
+This bug appears to have been filled using a buggy version of ABRT, because
+it contains unusable backtrace. Sorry for the inconvenience.
+Closing as INSUFFICIENT_DATA.
+"""
from bugzilla import RHBugzilla
from optparse import OptionParser
@@ -62,16 +70,24 @@ for buginfo in buginfos:
else:
# Get backtrace from bug and store it as a file.
bug = bz.getbug(buginfo.bug_id)
+ downloaded = False
for attachment in bug.attachments:
if attachment['filename'] == 'backtrace':
data = bz.openattachment(attachment['id'])
f = open(filename, 'w')
f.write(data.read())
f.close()
+ downloaded = True
if options.verbose:
print "Attachment {0} downloaded.".format(filename)
+
+ # Silently skip bugs without backtrace.
+ # Those are usually duplicates of bugs; the duplication copies
+ # abrt_hash, but it does not copy the attachment.
+ if not downloaded:
+ continue
- command = ["/usr/bin/abrt-backtrace"]
+ command = ["./abrt-backtrace"]
command.append(filename)
command.append("--single-thread")
command.append("--frame-depth=5")
diff --git a/src/Backtrace/check-bt-parsability b/src/Backtrace/check-bt-parsability
index 39913fe..a5018bf 100755
--- a/src/Backtrace/check-bt-parsability
+++ b/src/Backtrace/check-bt-parsability
@@ -6,7 +6,7 @@ FAIL=0
for file in *.bt
do
#echo "$file"
- ./abrt-backtrace $file &> /dev/null
+ ./abrt-backtrace $file 1> /dev/null
if [ "$?" -eq "0" ]
then
echo -n "."
@@ -17,3 +17,4 @@ do
fi
done
echo ""
+echo "Passed $PASS and failed $FAIL."
diff --git a/src/Backtrace/main.c b/src/Backtrace/main.c
index 5e69338..f2fe1ba 100644
--- a/src/Backtrace/main.c
+++ b/src/Backtrace/main.c
@@ -249,7 +249,9 @@ int main(int argc, char **argv)
* #2 0x0000000000423e6b in refresh_folder (stub=0x1b77f10 [MailStubExchange],
* ...
*/
- char *empty_line = btnoheader;
+ char *empty_line = btnoheader;
+/* TODO SPACES ON LINES AS WELL, rhbz#555251 !!!!!!!!
+/* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */
while ((empty_line = strstr(empty_line, "\n\n")) != NULL)
{
if (0 != strncmp(empty_line, "\n\nThread", strlen("\n\nThread")))
diff --git a/src/Backtrace/parser.y b/src/Backtrace/parser.y
index 76dd7de..1903282 100644
--- a/src/Backtrace/parser.y
+++ b/src/Backtrace/parser.y
@@ -267,12 +267,12 @@ variables_line : variables_char_no_framestart
variables_char : '#' | variables_char_no_framestart
;
-/* Manually synchronized with function_args_char, except the first line. */
-variables_char_no_framestart : digit | nondigit | '"' | '(' | ')'
+/* Manually synchronized with function_args_char_base, except the first line. */
+variables_char_no_framestart : digit | nondigit | '"' | '(' | ')' | '\\'
| '+' | '-' | '<' | '>' | '/' | '.'
| '[' | ']' | '?' | '\'' | '`' | ','
| '=' | '{' | '}' | '^' | '&' | '$'
- | ':' | ';' | '\\' | '!' | '@' | '*'
+ | ':' | ';' | '!' | '@' | '*'
| '%' | '|' | '~'
;
@@ -300,6 +300,7 @@ function_args : '(' wsa ')'
function_args_sequence : function_args_char
| function_args_sequence wsa '(' wsa ')'
+ | function_args_sequence wsa '(' wsa function_args_string wsa ')'
| function_args_sequence wsa '(' wsa function_args_sequence wsa ')'
| function_args_sequence wsa function_args_char
| function_args_sequence wsa function_args_string
@@ -312,13 +313,21 @@ function_args_string : '"' wsa function_args_string_sequence wsa '"'
/* Manually synchronized with variables_char_no_framestart,
* except the first line.
*/
-function_args_char : digit | nondigit | '#'
+function_args_char_base : digit | nondigit | '#'
| '+' | '-' | '<' | '>' | '/' | '.'
| '[' | ']' | '?' | '\'' | '`' | ','
| '=' | '{' | '}' | '^' | '&' | '$'
- | ':' | ';' | '\\' | '!' | '@' | '*'
+ | ':' | ';' | '!' | '@' | '*'
| '%' | '|' | '~'
;
+function_args_escaped_char : '\\' function_args_char_base
+ | '\\' '\\'
+ | '\\' '"'
+;
+function_args_char : function_args_char_base
+ | function_args_escaped_char
+;
+
function_args_string_sequence : function_args_string_char
| function_args_string_sequence function_args_string_char
@@ -328,7 +337,6 @@ function_args_string_sequence : function_args_string_char
function_args_string_char : function_args_char | '(' | ')'
;
-
file_name : file_name_char { $$ = strbuf_new(); strbuf_append_char($$, $1); }
| file_name file_name_char { $$ = strbuf_append_char($1, $2); }
;
@@ -407,6 +415,11 @@ identifier_braces_inside : identifier_braces_inside_char %dprec 1
strbuf_free($3);
$$ = strbuf_append_char($1, $4);
}
+ | identifier_braces_inside '(' ')' %dprec 1
+ {
+ $$ = strbuf_append_char($1, $2);
+ $$ = strbuf_append_char($1, $3);
+ }
| identifier_braces_inside identifier_template %dprec 2
{
$$ = strbuf_append_str($1, $2->buf);