[Xapian-discuss] hypens in words + NEAR + 3 terms + AND_MAYBE => crash
Marinos Yannikos
mjy at pobox.com
Thu Oct 28 06:33:26 BST 2010
Probably an uncaught malformed query - the following form of search queries
causes a crash for me (core 1.2.3, Perl API, 64bit Debian Lenny, self-compiled):
x-y NEAR test NEAR test
The first term can be anything with a hyphen in it but word characters at the
beginning and end ("3--3" will do). The other 2 terms can be anything.
"test NEAR x-y NEAR test" will not cause a crash, but "test NEAR test NEAR x-y"
will.
Stemming language was "english", strategy STEM_SOME. Default op was OP_AND_MAYBE.
This is the offending Perl code:
[...]
my $qp = Search::Xapian::QueryParser->new();
my $stemmer = Search::Xapian::Stem->new("english");
$qp->set_stemmer($stemmer);
$qp->set_database($database);
$qp->set_stemming_strategy(STEM_SOME);
$qp->set_default_op(OP_AND_MAYBE);
$query_string = " x-y NEAR test NEAR test ";
my $query = $qp->parse_query($query_string, Search::Xapian::FLAG_DEFAULT);
[...]
Here's a gdb backtrace for a crash:
Program received signal SIGSEGV, Segmentation fault.
~TermGroup (yypParser=0x2b58170, yymajor=<value optimized out>,
yypminor=0x386a7f8) at queryparser/queryparser.lemony:1265
1265 delete *i;
Current language: auto; currently c++
(gdb) bt
#0 ~TermGroup (yypParser=0x2b58170, yymajor=<value optimized out>,
yypminor=0x386a7f8) at queryparser/queryparser.lemony:1265
#1 TermGroup::destroy (yypParser=0x2b58170, yymajor=<value optimized out>,
yypminor=0x386a7f8) at queryparser/queryparser.lemony:1256
#2 yy_destructor (yypParser=0x2b58170, yymajor=<value optimized out>,
yypminor=0x386a7f8) at queryparser/queryparser.lemony:1933
#3 0x00007faab7501f0c in yy_pop_parser_stack (pParser=0x2b58170)
at queryparser/queryparser_internal.cc:2039
#4 0x00007faab750cf58 in ParserHandler::~ParserHandler() ()
from /usr/local/lib/libxapian.so.22
#5 0x00007faab7508e0d in Xapian::QueryParser::Internal::parse_query (
this=0x38b7a90, qs=..., flags=0, default_prefix=<value optimized out>)
at queryparser/queryparser.lemony:1176
#6 0x00007faab750003a in Xapian::QueryParser::parse_query (this=0x37b1a10,
query_string=..., flags=135, default_prefix=...)
at queryparser/queryparser.cc:118
#7 0x00007faab77cffcc in XS_Search__Xapian__QueryParser_parse_query (
my_perl=<value optimized out>, cv=<value optimized out>)
at ./XS/QueryParser.xs:58
It does not seem to depend on the contents of the index, since it already
happens early while rebuilding it and it happens with
xapian-core-1.2.3/tests/testdata/flint-1.0.2/ as the index too. With xapian-core
1.0.18, the same code yields an error: "Exception: Exception: Xapian::Query:
AND_MAYBE requires a minimum of 2 and a maximum of 2 sub queries, had 4"
Please let me know if there's anything else I can test/provide.
Regards,
Marinos
More information about the Xapian-discuss
mailing list