From: Tom Tromey <tom@tromey.com>
To: Pedro Alves <palves@redhat.com>
Cc: Tom Tromey <tom@tromey.com>, gdb-patches@sourceware.org
Subject: Re: [PATCH v2] Release the GIL while running a gdb command or expression
Date: Sun, 04 Nov 2018 15:54:00 -0000 [thread overview]
Message-ID: <8736sg4z50.fsf@tromey.com> (raw)
In-Reply-To: <8b981b27-1e15-31d8-0342-492700468ecf@redhat.com> (Pedro Alves's message of "Wed, 24 Oct 2018 19:08:17 +0100")
>>>>> "Pedro" == Pedro Alves <palves@redhat.com> writes:
Tom> If you ignore this then I have a version that works. Racy in theory but
Tom> maybe not in practice.
Pedro> We have plenty of tests that shouldn't be racy in theory but are
Pedro> in practice. So I'd instead assume that in practice someone will
Pedro> definitely run into the race.
Pedro> Do we really need to rely on printing to check this? If the
Pedro> the gdb.execute command can run some more python code, then
Pedro> we could try using a couple python mutexes for proving the
Pedro> non-main thread runs.
Pedro> So the non-main thread would wait on mutex1 which starts owned
Pedro> by the main thread. The main thread unlocks mutex1 and blocks
Pedro> on mutex2, waiting for the non-main thread to release it.
Pedro> The non-main thread should now run, and is now the mutex1 owner.
Pedro> It now releases mutex2. The main thread now unblocks, and the
Pedro> test succeeds. If we don't release the GIL properly, then
Pedro> the non-main thread won't run, and the testcase times out.
It took me a little experimenting to understand why this can't work.
The main thread can't run any Python code at all. If it does run Python
code, then Python might release the GIL. And, when dealing with thread
primitives like mutexes or whatnot, it certainly will. However, if the
main thread does release the GIL, then that invalidates the test --
since we are trying to test that the GIL is released under ordinary
circumstances.
I'm back to not seeing a way to test this.
Tom
next prev parent reply other threads:[~2018-11-04 15:54 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-10-10 20:23 Tom Tromey
2018-10-12 14:52 ` Phil Muldoon
2018-10-12 16:49 ` Pedro Alves
2018-10-12 16:51 ` Pedro Alves
2018-10-16 12:48 ` Tom Tromey
2018-10-16 14:50 ` Pedro Alves
2018-10-12 16:56 ` Pedro Alves
2018-10-16 13:05 ` Tom Tromey
2018-10-16 14:51 ` Pedro Alves
2018-10-16 21:39 ` Tom Tromey
2018-10-16 21:45 ` Tom Tromey
2018-10-24 18:08 ` Pedro Alves
2018-10-25 12:46 ` Phil Muldoon
2018-11-04 15:54 ` Tom Tromey [this message]
2019-01-29 13:02 ` Tom Tromey
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=8736sg4z50.fsf@tromey.com \
--to=tom@tromey.com \
--cc=gdb-patches@sourceware.org \
--cc=palves@redhat.com \
/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.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox