[Xapian-tickets] [Xapian] #752: Segmentation fault in matcher/queryoptimiser
Xapian
nobody at xapian.org
Tue Aug 8 06:10:57 BST 2017
#752: Segmentation fault in matcher/queryoptimiser
---------------------+-------------------------------
Reporter: rsto | Owner: olly
Type: defect | Status: assigned
Priority: normal | Milestone: 1.4.5
Component: Matcher | Version: git master
Severity: normal | Resolution:
Keywords: | Blocked By:
Blocking: | Operating System: All
---------------------+-------------------------------
Comment (by olly):
> I am not deep enough into the query optimiser code to know which
approach is
> better in term of performance.
It's not obvious to me either.
The saving when the hint is close could be quite substantial, and the
bookkeeping overhead is probably small, so I'd guess it's better to not
clear
the hint, but I don't think I spotted it could just be NULL-ed out in
these
cases when I added the code to track ownership.
I'll try some tests.
> If taking ownership is preferred I could make
> the context resetter aware which postlist member to skip during the
free().
I'm thinking it would be good for reset() to either clear or hand over
ownership of the hint, as that avoids a whole slew of potential similar
issues. Your case is the second one, so empirically this seems a breeding
ground for bugs - if we always leave the hint valid by default then we
only
need to be careful when removing some entries from Context.pls (and
perhaps
we can provide a helper for that too).
Ideally we should have a regression test for this, but I've been trying to
create one based on existing testcase `subdbwithoutpos1` in
`tests/api_query.cc` and I haven't so far managed.
What does the query which causes the valgrind error look like? I'm
interested in the entire Query object tree, not just a query string, in
case the whole Query object isn't just built by parsing a query string in
an obvious way. The exact terms probably don't matter, so feel free to
genericise anything which might invade end user privacy.
--
Ticket URL: <https://trac.xapian.org/ticket/752#comment:2>
Xapian <https://xapian.org/>
Xapian
More information about the Xapian-tickets
mailing list