diff --git a/news/908.bugfix.rst b/news/908.bugfix.rst new file mode 100644 index 0000000000..01401da9ff --- /dev/null +++ b/news/908.bugfix.rst @@ -0,0 +1,2 @@ +Fix integration with the ``greenlet`` package when greenlet 3.4.0 is installed +and when tracing is started before the greenlet module is imported. diff --git a/news/908.removal.rst b/news/908.removal.rst new file mode 100644 index 0000000000..49c6f41fa8 --- /dev/null +++ b/news/908.removal.rst @@ -0,0 +1 @@ +Drop integration with 0.x versions of the ``greenlet`` module (which are from 2020 or earlier). diff --git a/src/memray/_memray/hooks.cpp b/src/memray/_memray/hooks.cpp index 170f029ab6..f5368ee735 100644 --- a/src/memray/_memray/hooks.cpp +++ b/src/memray/_memray/hooks.cpp @@ -380,9 +380,7 @@ dlopen(const char* filename, int flag) noexcept } if (ret) { tracking_api::Tracker::invalidate_module_cache(); - if (filename - && (nullptr != strstr(filename, "/_greenlet.") || nullptr != strstr(filename, "/greenlet."))) - { + if (filename && nullptr != strstr(filename, "/_greenlet.")) { tracking_api::Tracker::beginTrackingGreenlets(); } } diff --git a/src/memray/_memray/tracking_api.cpp b/src/memray/_memray/tracking_api.cpp index 54e221334a..23bc17c827 100644 --- a/src/memray/_memray/tracking_api.cpp +++ b/src/memray/_memray/tracking_api.cpp @@ -537,11 +537,7 @@ PythonStackTracker::installGreenletTraceFunctionIfNeeded() // `greenlet._greenlet` has already been imported. PyObject* _greenlet = PyDict_GetItemString(modules, "greenlet._greenlet"); if (!_greenlet) { - // Before greenlet 1.0, the extension module was just named "greenlet" - _greenlet = PyDict_GetItemString(modules, "greenlet"); - if (!_greenlet) { - return; - } + return; } // Borrowed reference