From: "W. Trevor King" <wking@tremily.us>
To: Konrad Hinsen <konrad.hinsen@fastmail.net>
Cc: notmuch@notmuchmail.org
Subject: Re: Crash with Python bindings
Date: Tue, 12 Jan 2016 10:51:07 -0800 [thread overview]
Message-ID: <20160112185107.GA21580@odin.tremily.us> (raw)
In-Reply-To: <m1y4budggd.fsf@fastmail.net>
[-- Attachment #1: Type: text/plain, Size: 1676 bytes --]
On Tue, Jan 12, 2016 at 03:23:46PM +0100, Konrad Hinsen wrote:
> Hi Justus,
>
> > So I guess what happens is that Python3 changed how the
> > interpreter environment is torn down and they actually destroy the
> > 'q' object. If that is so, then your data is indeed safe.
>
> That reminds me of a recent change in object finalization in Python
> 3:
>
> https://www.python.org/dev/peps/pep-0442/
I'm pretty sure that is what's going on. The PEP landed in Python
3.4, explaining why I don't see this issue in 3.3 [1]. And it has
[2]:
In particular, this PEP obsoletes the current guideline that
"objects with a __del__ method should not be part of a reference
cycle".
I'm not sure what the best way is to fix __del__ in our Python
bindings, but if you manage them explicitly:
db = Database()
q = Query(db, "*")
del q
db.close()
del db
you can avoid the abort (which happens when q.__del__ is called after
db.__del__). We could make that sort of cleanup easier with context
managers for Query objects (we have them for databases since [3]), and
they look like the only object that keep an internal database
reference:
with Database() as db:
with Query(db, "*") as q:
# do something with q
db.close()
Cheers,
Trevor
[1]: id:20160112180813.GA20499@odin.tremily.us
[2]: https://www.python.org/dev/peps/pep-0442/#impact
[3]: 36ce7e3c (python: implement the context manager protocol for
database objects, 2012-02-15, v0.12)
--
This email may be signed or encrypted with GnuPG (http://www.gnupg.org).
For more information, see http://en.wikipedia.org/wiki/Pretty_Good_Privacy
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
next prev parent reply other threads:[~2016-01-12 18:53 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-12 9:41 Crash with Python bindings Konrad Hinsen
2016-01-12 13:11 ` David Bremner
2016-01-12 14:21 ` Konrad Hinsen
2016-01-12 15:26 ` David Bremner
2016-01-12 19:03 ` David Bremner
2016-01-12 19:13 ` Binding access to ~/.notmuch-config (was: Crash with Python bindings) W. Trevor King
2016-01-13 11:25 ` Binding access to ~/.notmuch-config Konrad Hinsen
2016-01-13 12:25 ` David Bremner
2016-01-13 17:23 ` W. Trevor King
[not found] ` <20160112102329.4269.20741@thinkbox.jade-hamburg.de>
2016-01-12 14:23 ` Crash with Python bindings Konrad Hinsen
2016-01-12 18:51 ` W. Trevor King [this message]
2018-03-16 11:59 ` David Bremner
2018-03-16 12:12 ` Justus Winter
2018-03-16 18:30 ` Floris Bruynooghe
2018-03-16 22:40 ` Daniel Kahn Gillmor
2018-03-18 8:01 ` Floris Bruynooghe
2018-03-21 10:16 ` New Python bindings (was: Crash with Python bindings) Justus Winter
2018-03-25 17:40 ` pytest integration for the notmuch test suite David Bremner
2018-03-25 17:40 ` [PATCH 1/3] configure: check for pytest binary David Bremner
2018-03-26 20:55 ` Floris Bruynooghe
2018-03-25 17:40 ` [PATCH 2/3] test: add new test_expect_pytest_success David Bremner
2018-03-25 17:40 ` [PATCH 3/3] test: add example test using pytest David Bremner
2018-03-25 19:14 ` pytest integration for the notmuch test suite Tomi Ollila
2018-03-26 11:31 ` David Bremner
2018-03-26 21:01 ` Floris Bruynooghe
2018-03-26 21:25 ` David Bremner
2018-03-26 20:47 ` New Python bindings (was: Crash with Python bindings) Floris Bruynooghe
2018-03-27 22:29 ` New Python bindings Justus Winter
2018-03-28 22:07 ` Floris Bruynooghe
2018-03-28 7:20 ` New Python bindings (was: Crash with Python bindings) Brian May
2018-03-28 13:42 ` David Bremner
2018-03-28 22:15 ` Floris Bruynooghe
2018-03-28 22:37 ` Brian May
2018-03-28 23:13 ` David Bremner
2018-04-04 22:37 ` Brian May
2018-04-05 1:09 ` Pypi David Bremner
2018-03-28 22:10 ` New Python bindings (was: Crash with Python bindings) Floris Bruynooghe
2016-01-12 18:08 ` Crash with Python bindings W. Trevor King
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://notmuchmail.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160112185107.GA21580@odin.tremily.us \
--to=wking@tremily.us \
--cc=konrad.hinsen@fastmail.net \
--cc=notmuch@notmuchmail.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://yhetil.org/notmuch.git/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).