Opened 14 years ago
Closed 12 years ago
#505 closed defect (fixed)
Memory leak in Python bindings of MatchDecider
Reported by: | Joost Cassee | Owned by: | Richard Boulton |
---|---|---|---|
Priority: | normal | Milestone: | 1.2.11 |
Component: | Xapian-bindings (Python) | Version: | 1.2.3 |
Severity: | normal | Keywords: | |
Cc: | Blocked By: | ||
Blocking: | Operating System: | All |
Description
There seems to be a bug in the Python bindings of the MatchDecider
class. Instances are not garbage collected after they have been used in Enquire.get_mset
. The attached test case demonstrates the behaviour.
I have reason to believe that the MatchSpy
and PostingSource
classes have the same problem.
Attachments (2)
Change History (8)
by , 14 years ago
Attachment: | testcase-505.py added |
---|
comment:2 by , 14 years ago
Milestone: | → 1.2.x |
---|
It's possible this could be fixed by upgrading to using newer SWIG. I made a start on doing that, but the director changes broke the PHP bindings.
Marking as milestone:1.2.x for now, as this might get a bit involved.
by , 14 years ago
Attachment: | testcase-505-fixed.py added |
---|
Testcase which doesn't list all the refers to None
comment:3 by , 14 years ago
The test case passes for me on Python 2.5.2, but then lists all the objects referring to None, which isn't helpful. Fixed testcase attached.
Dan wonders if this is due to gc changes in Python 2.7. It looks like the bindings aren't inherently leaky at least.
comment:5 by , 13 years ago
Testcase passes with Python 2.7 on current trunk (r16253), but I'm unsure what the change is which fixed it - I tried and failed to usefully bisect it with git.
It would be good to address this in 1.2.x, even if it's just differences in garbage collection causing the testsuite to misreport as it currently seems, though that might be tricky if we can't work out what change fixed this.
comment:6 by , 12 years ago
Milestone: | 1.2.x → 1.2.11 |
---|---|
Resolution: | → fixed |
Status: | new → closed |
Works for me with python-xapian 1.2.12 as packaged for Debian (which doesn't have any extra patches) with python 2.6 or python 2.7 on current Debian testing. Also works with python 2.5.2 and current 1.2 branch on atreus. So it seems this has been fixed in 1.2 too now, though I'm not sure exactly what change fixed it (something between 1.2.9 and 1.2.11 inclusive, judging by the date of my previous comment - 1.2.12 had no code changes in the bindings).
I'm going to close this, but if you're still seeing this with 1.2.11 or newer, please reopen (or comment and I'll reopen if you don't get an option to reopen).
Testcase for ticket 505