summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Madden <jamadden@gmail.com>2021-10-12 07:50:53 -0500
committerJason Madden <jamadden@gmail.com>2021-10-12 08:53:59 -0500
commit7d85029b961398726a3ba94800eccad68cb83028 (patch)
treef28152496fa6763d144e4b213d1edb46e3804055
parentcf3637df5101697a4df0ff387f5811fd478f25a1 (diff)
downloadgreenlet-issue252.tar.gz
Add change note.issue252
-rw-r--r--CHANGES.rst5
-rw-r--r--src/greenlet/greenlet_thread_state.hpp2
2 files changed, 7 insertions, 0 deletions
diff --git a/CHANGES.rst b/CHANGES.rst
index fdccb1d..ced3b2f 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -12,6 +12,11 @@
older GCC, clang and SunStudio we use ``__thread``, while for older
MSVC we use ``__declspec(thread)``.
+- Fix several leaks that could occur when using greenlets from
+ multiple threads. For example, it is no longer necessary to call
+ ``getcurrent()`` before exiting a thread to allow its main greenlet
+ to be cleaned up. See `issue 252 <https://github.com/python-greenlet/greenlet/issues/251>`_.
+
1.1.2 (2021-09-29)
==================
diff --git a/src/greenlet/greenlet_thread_state.hpp b/src/greenlet/greenlet_thread_state.hpp
index 98a771a..b353f13 100644
--- a/src/greenlet/greenlet_thread_state.hpp
+++ b/src/greenlet/greenlet_thread_state.hpp
@@ -412,6 +412,8 @@ public:
// Highly likely that the reference is somewhere on
// the stack, not reachable by GC. Verify.
// XXX: This is O(n) in the total number of objects.
+ // TODO: Add a way to disable this at runtime, and
+ // another way to report on it.
PyObject* gc = PyImport_ImportModule("gc");
PyObject* get_referrers = NULL;
PyObject* refs = NULL;