unofficial mirror of notmuch@notmuchmail.org
 help / color / mirror / code / Atom feed
From: Justus Winter <justus@sequoia-pgp.org>
To: David Bremner <david@tethera.net>, "W. Trevor King" <wking@tremily.us>
Cc: notmuch@notmuchmail.org
Subject: Re: Crash with Python bindings
Date: Fri, 16 Mar 2018 13:12:26 +0100	[thread overview]
Message-ID: <87r2ok8bit.fsf@europa.jade-hamburg.de> (raw)
In-Reply-To: <87k1ucp6xb.fsf@tethera.net>

[-- Attachment #1: Type: text/plain, Size: 1177 bytes --]

David Bremner <david@tethera.net> writes:

> "W. Trevor King" <wking@tremily.us> writes:
>
>> 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()

So while this shouldn't crash of course, this code is wrong.  The
context manager closes the database, so doing db.close() at the end of
the block is superfluous.

> I'm reminded [1] that this problem still exists. If noone has any idea
> of a fix, should we document one of the workarounds?

I don't remember the details, but the different semantics of garbage
collection and talloc was problematic.  In essence, every wrapping
Python object must keep a reference to its parent (as in parent in the
talloc hierarchy).

The bug report [1] sounds like that the crash happens at interpreter
shutdown, where iirc the objects destructors are called in arbitrary
order.


Justus

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

  reply	other threads:[~2018-03-16 12:12 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
2018-03-16 11:59       ` David Bremner
2018-03-16 12:12         ` Justus Winter [this message]
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=87r2ok8bit.fsf@europa.jade-hamburg.de \
    --to=justus@sequoia-pgp.org \
    --cc=david@tethera.net \
    --cc=notmuch@notmuchmail.org \
    --cc=wking@tremily.us \
    /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).