]> granicus.if.org Git - python/commit
bpo-32604: Swap threads only if the interpreter is different. (gh-5778)
authorEric Snow <ericsnowcurrently@gmail.com>
Tue, 20 Feb 2018 23:30:17 +0000 (16:30 -0700)
committerGitHub <noreply@github.com>
Tue, 20 Feb 2018 23:30:17 +0000 (16:30 -0700)
commitf53d9f2778a87bdd48eb9030f782a4ebf9e7622f
tree42d0046cdda94825c800ed17db78f85c79d50bbf
parent80d20b918bd8a882043c493a7f958333ecb41727
bpo-32604: Swap threads only if the interpreter is different. (gh-5778)

The CPython runtime assumes that there is a one-to-one relationship (for a given interpreter) between PyThreadState and OS threads. Sending and receiving on a channel in the same interpreter was causing crashes because of this (specifically due to a check in PyThreadState_Swap()). The solution is to not switch threads if the interpreter is the same.
Lib/test/test__xxsubinterpreters.py
Modules/_xxsubinterpretersmodule.c
Python/pystate.c