Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

creating new greenlets appears to leak memory rapidly in python 3.11 / linux #328

Closed
zzzeek opened this issue Nov 6, 2022 · 17 comments · Fixed by #329
Closed

creating new greenlets appears to leak memory rapidly in python 3.11 / linux #328

zzzeek opened this issue Nov 6, 2022 · 17 comments · Fixed by #329

Comments

@zzzeek
Copy link

zzzeek commented Nov 6, 2022

hi there -

This is indirect from SQLAlchemy where we use greenlet for our asyncio implementation, reported in sqlalchemy/sqlalchemy#8763.

The below script creates a greenlet and calls one switch. Running on linux under any Python 3.11 version with greenlet installed from pypi (greenlet-2.0.0.post0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl), the script below grows by about 10M per second. Under Python 3.10, memory is flat at about 10 megs resident.

import greenlet
import time


def greenlet_spawn(fn, *args, **kwargs):
    context = greenlet.greenlet(fn, greenlet.getcurrent())
    result = context.switch(*args, **kwargs)
    return result



def hi():
    time.sleep(.001)
    return "hello"

def go():
    while True:
        print(greenlet_spawn(hi))
go()
@salty-horse
Copy link

Previously reported here: gevent/gevent#1924

jamadden added a commit that referenced this issue Nov 6, 2022
This leak was present in the original implementation of Python 3.11 support (#306)

Fixes #328 and fixes gevent/gevent#1924 ; I have run gevent's test suite locally on 3.11 with this fix without seeing any regressions.
jamadden added a commit that referenced this issue Nov 6, 2022
This leak was present in the original implementation of Python 3.11 support (#306)

Fixes #328 and fixes gevent/gevent#1924 ; I have run gevent's test suite locally on 3.11 with this fix without seeing any regressions.
@jamadden
Copy link
Contributor

jamadden commented Nov 7, 2022

This issue should be solved by using the just-released greenlet 2.0.1.

@zzzeek
Copy link
Author

zzzeek commented Nov 7, 2022

thanks!!!

@zzzeek
Copy link
Author

zzzeek commented Nov 7, 2022

The test program above works now however in our integration case we are still seeing rapid memory increases, unfortunately. I will attempt to devise a new test case.

github-actions bot referenced this issue in MaRDI4NFDI/open-interfaces Nov 7, 2022
Bumps [greenlet](https://github.com/python-greenlet/greenlet) from
1.1.3.post0 to 2.0.1.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/python-greenlet/greenlet/blob/master/CHANGES.rst">greenlet's
changelog</a>.</em></p>
<blockquote>
<h1>2.0.1 (2022-11-07)</h1>
<ul>
<li>Python 3.11: Fix a memory leak. See <code>issue 328
&lt;https://github.com/python-greenlet/greenlet/issues/328&gt;</code>_
and
<code>gevent issue 1924
&lt;https://github.com/gevent/gevent/issues/1924&gt;</code>_.</li>
</ul>
<h1>2.0.0.post0 (2022-11-03)</h1>
<ul>
<li>Add <code>Programming Language :: Python :: 3.11</code> to the PyPI
classifier metadata.</li>
</ul>
<h1>2.0.0 (2022-10-31)</h1>
<ul>
<li>Nothing changed yet.</li>
</ul>
<h1>2.0.0rc5 (2022-10-31)</h1>
<ul>
<li>Linux: Fix another group of rare crashes that could occur when
shutting down an
interpeter running multiple threads. See <code>issue 325
&lt;https://github.com/python-greenlet/greenlet/issues/325&gt;</code>_.</li>
</ul>
<h1>2.0.0rc4 (2022-10-30)</h1>
<ul>
<li>Linux: Fix a rare crash that could occur when shutting down an
interpreter running multiple threads, when some of those threads are
in greenlets making calls to functions that release the GIL.</li>
</ul>
<h1>2.0.0rc3 (2022-10-29)</h1>
<ul>
<li>Python 2: Fix a crash that could occur when raising an old-style
instance object.</li>
</ul>
<h1>2.0.0rc2 (2022-10-28)</h1>
<ul>
<li>Workaround <code>a CPython 3.8 bug
&lt;https://github.com/python/cpython/issues/81308&gt;</code>_ that
could cause
the interpreter to crash during an early phase of shutdown with the
message &quot;Fatal Python error: Python memory allocator called
without</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/69f6483c41776fb9095c3fd7b02d3e4ede289c78"><code>69f6483</code></a>
Preparing release 2.0.1</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/df2154d45b8cfa751de1fc9e6a95e0b09a53becf"><code>df2154d</code></a>
Merge pull request <a
href="https://github-redirect.dependabot.com/python-greenlet/greenlet/issues/329">#329</a>
from python-greenlet/issue328</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/aa6f2515b2fefced69be933952bd1f3319d0de58"><code>aa6f251</code></a>
Python 3.11: Fix a memory leak switching to greenlets.</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/7389976dc748677dd4fce535b91ef07e4387c1d6"><code>7389976</code></a>
Back to development: 2.0.1</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/0216c2ae008cb185292b136e34ba92ae3f40da6b"><code>0216c2a</code></a>
Preparing release 2.0.0.post0</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/7e1704ccbf2ade357416b63d95d645120df1f4dc"><code>7e1704c</code></a>
.github/workflows/tests.yml: Move to final release of 3.11</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/f18bff43df80c5190760dc2aedfa436a1fae7bed"><code>f18bff4</code></a>
setup.py: Add Python 3.11 to the PyPI classifier metadata.</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/fc50ac173d0011492c19c87eb619017fdab47fd9"><code>fc50ac1</code></a>
Back to development: 2.0.1</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/f9c29d90b1fd33e3ade1272f46e17dfe17d651e6"><code>f9c29d9</code></a>
Preparing release 2.0.0</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/4ba1df63dcd40c8056f21117a91bf56d0be8a6eb"><code>4ba1df6</code></a>
Back to development: 2.0.0rc6</li>
<li>Additional commits viewable in <a
href="https://github.com/python-greenlet/greenlet/compare/1.1.3.post0...2.0.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=greenlet&package-manager=pip&previous-version=1.1.3.post0&new-version=2.0.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>
@zzzeek
Copy link
Author

zzzeek commented Nov 7, 2022

hMmmmmm OK I think you are good actually, there now seems to be an entirely different memory leak, again python 3.11 only , either in the sqlite3 module or the aiosqlite module. how strange huh? I'll keep you posted but in our original original case with asyncpg (which is the important driver), memory seems to be stable.

@zzzeek
Copy link
Author

zzzeek commented Nov 7, 2022

OK we're good here, aiosqlite has some problem, strange, but i can reproduce without greenlet involved. thanks for the quick fix!

@zzzeek
Copy link
Author

zzzeek commented Nov 7, 2022

@jamadden I'm still in the disbelief stage, but it appears python 3.11 itself has a similar problem as the one here, with threading.Thread(). That is, the program below which is the threading equivalent also leaks memory at a similar rate:

from threading import Thread

while True:
    t1 = Thread()
    t1.start()

I'm going to quadruple check this before reporting to them but do you think the issue you found here might be similarly involved for Python's own Thread object?

@jamadden
Copy link
Contributor

jamadden commented Nov 7, 2022

I'm going to quadruple check this before reporting to them but do you think the issue you found here might be similarly involved for Python's own Thread object?

I don't think so, for a couple reasons.

First, the thread never executes much in the way of Python bytecode, so it shouldn't be needing to allocate many of the "chunks" that were the problem.

Second, the reason they were an issue in greenlet is that we're switching chunks within the same thread, something that CPython should never be doing (the chunks should be thread local).

Lastly, comparing the greenlet allocations that showed the chunks as the source of the memory with the thread-based allocations gives a very different pattern:

High water mark of allocated heap + VM memory: 357.7 MB  at malloc stack log record index 114,933,363
     Current total allocated heap + VM memory: 357.7 MB  at malloc stack log record index 114,933,389
  Cumulative total allocated heap + VM memory: 18.52 GB
            Total heap + VM memory operations: 114,933,389  allocations:  58,369,435  deallocations:  56,563,954

Call graph:
    912525 (779M) << TOTAL >>
      892961 (307M) new_threadstate  (in Python) + 43  [0x1023f62eb]
      282 (282M) deque_new  (in Python) + 50  [0x10244a5d2]
      + 282 (282M) mach_vm_map  (in libsystem_kernel.dylib) + 0  [0x7ff8029047a5]
      74 (74.0M) new_threadstate  (in Python) + 43  [0x1023f62eb]
      + 74 (74.0M) mach_vm_map  (in libsystem_kernel.dylib) + 0  [0x7ff8029047a5]
      3 (48.0M) PyThread_start_new_thread  (in Python) + 197  [0x10240b4b5]
      + 3 (48.0M) _pthread_create  (in libsystem_pthread.dylib) + 0  [0x7ff802941f98]

@zzzeek
Copy link
Author

zzzeek commented Nov 7, 2022

OK! I hope they find this useful when they come in to look at this issue (also surprised noone has triaged it yet, they are usually pretty quick)

netbsd-srcmastr referenced this issue in NetBSD/pkgsrc Nov 22, 2022
2.0.1 (2022-11-07)
==================

- Python 3.11: Fix a memory leak. See `issue 328
  <https://github.com/python-greenlet/greenlet/issues/328>`_ and
  `gevent issue 1924 <https://github.com/gevent/gevent/issues/1924>`_.


2.0.0.post0 (2022-11-03)
========================

- Add ``Programming Language :: Python :: 3.11`` to the PyPI
  classifier metadata.


2.0.0 (2022-10-31)
==================

- Nothing changed yet.


2.0.0rc5 (2022-10-31)
=====================

- Linux: Fix another group of rare crashes that could occur when shutting down an
  interpeter running multiple threads. See `issue 325 <https://github.com/python-greenlet/greenlet/issues/325>`_.


2.0.0rc4 (2022-10-30)
=====================

- Linux: Fix a rare crash that could occur when shutting down an
  interpreter running multiple threads, when some of those threads are
  in greenlets making calls to functions that release the GIL.


2.0.0rc3 (2022-10-29)
=====================

- Python 2: Fix a crash that could occur when raising an old-style
  instance object.


2.0.0rc2 (2022-10-28)
=====================

- Workaround `a CPython 3.8 bug
  <https://github.com/python/cpython/issues/81308>`_ that could cause
  the interpreter to crash during an early phase of shutdown with the
  message "Fatal Python error: Python memory allocator called without
  holding the GI." This only impacted CPython 3.8a3 through CPython
  3.9a5; the fix is only applied to CPython 3.8 releases (please don't
  use an early alpha release of CPython 3.9).


2.0.0rc1 (2022-10-27)
=====================

- Deal gracefully with greenlet switches that occur while deferred
  deallocation of objects is happening using CPython's "trash can"
  mechanism. Previously, if a large nested container held items that
  switched greenlets during delayed deallocation, and that second
  greenlet also invoked the trash can, CPython's internal state could
  become corrupt. This was visible as an assertion error in debug
  builds. Now, the relevant internal state is saved and restored
  during greenlet switches. See also `gevent issue 1909
  <https://github.com/gevent/gevent/issues/1909>`_.
- Rename the C API function ``PyGreenlet_GET_PARENT`` to
  ``PyGreenlet_GetParent`` for consistency. The old name remains
  available as a deprecated alias.



2.0.0a2 (2022-03-24)
====================

- Fix a crash on older versions of the Windows C runtime when an
  unhandled C++ exception was thrown inside a greenlet by another
  native extension. This is a bug in that extension, and the
  interpreter will still abort, but at least it does so deliberately.
  Thanks to Kirill Smelkov. See `PR 286
  <https://github.com/python-greenlet/greenlet/pull/286>`_.
- Musllinux wheels for aarch64 are now built, tested, and uploaded to
  PyPI. Thanks to Alexander Piskun.
- This version of greenlet is known to compile and pass tests on
  CPython 3.11.0a6. Earlier 3.11 releases will not work; later
  releases may or may not work. See `PR 294
  <https://github.com/python-greenlet/greenlet/pull/294>`_. Special
  thanks to Victor Stinner, Brandt Bucher and the CPython developers.
emilymclean referenced this issue in TechlauncherFireApp/backend Aug 13, 2023
Bumps [greenlet](https://github.com/python-greenlet/greenlet) from 1.0.0
to 2.0.2.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/python-greenlet/greenlet/blob/master/CHANGES.rst">greenlet's
changelog</a>.</em></p>
<blockquote>
<h1>2.0.2 (2023-01-28)</h1>
<ul>
<li>Fix calling <code>greenlet.settrace()</code> with the same tracer
object that
was currently active. See <code>issue 332
&lt;https://github.com/python-greenlet/greenlet/issues/332&gt;</code>_.</li>
<li>Various compilation and standards conformance fixes. See <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/335">#335</a>,
<a
href="https://redirect.github.com/python-greenlet/greenlet/issues/336">#336</a>,
<a
href="https://redirect.github.com/python-greenlet/greenlet/issues/300">#300</a>,
<a
href="https://redirect.github.com/python-greenlet/greenlet/issues/302">#302</a>,
<a
href="https://redirect.github.com/python-greenlet/greenlet/issues/334">#334</a>.</li>
</ul>
<h1>2.0.1 (2022-11-07)</h1>
<ul>
<li>Python 3.11: Fix a memory leak. See <code>issue 328
&lt;https://github.com/python-greenlet/greenlet/issues/328&gt;</code>_
and
<code>gevent issue 1924
&lt;https://github.com/gevent/gevent/issues/1924&gt;</code>_.</li>
</ul>
<h1>2.0.0.post0 (2022-11-03)</h1>
<ul>
<li>Add <code>Programming Language :: Python :: 3.11</code> to the PyPI
classifier metadata.</li>
</ul>
<h1>2.0.0 (2022-10-31)</h1>
<ul>
<li>Nothing changed yet.</li>
</ul>
<h1>2.0.0rc5 (2022-10-31)</h1>
<ul>
<li>Linux: Fix another group of rare crashes that could occur when
shutting down an
interpeter running multiple threads. See <code>issue 325
&lt;https://github.com/python-greenlet/greenlet/issues/325&gt;</code>_.</li>
</ul>
<h1>2.0.0rc4 (2022-10-30)</h1>
<ul>
<li>Linux: Fix a rare crash that could occur when shutting down an
interpreter running multiple threads, when some of those threads are
in greenlets making calls to functions that release the GIL.</li>
</ul>
<h1>2.0.0rc3 (2022-10-29)</h1>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/45e78ee5dbefe91c201b8d2b492b2701248e4c4c"><code>45e78ee</code></a>
Preparing release 2.0.2</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/b55ea9e05172e5cfd91ca00dda38895024104ce1"><code>b55ea9e</code></a>
Improve type error messages. Refs <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/330">#330</a></li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/1784361e97545c520384cfe50796136c337d1763"><code>1784361</code></a>
Merge pull request <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/342">#342</a>
from python-greenlet/issue334</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/f891cc2d340e2f7983719d6f625ade517785933f"><code>f891cc2</code></a>
Attempt a fix for <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/334">#334</a></li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/ae570c56dbee9070b02eb2124f0b991cce52f4db"><code>ae570c5</code></a>
Merge pull request <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/341">#341</a>
from python-greenlet/issue302</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/616df6049cca1d94f783447ad164e331b3044ead"><code>616df60</code></a>
Stop using 'const PyObject*, per <a
href="https://github.com/vstinner"><code>@​vstinner</code></a></li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/880825b7f02c4e22d64eef2e16a015c6a629fdcd"><code>880825b</code></a>
Merge pull request <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/340">#340</a>
from python-greenlet/new-actions</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/da25c7f3b07e55c2239f3e618cf29dea3c0864e0"><code>da25c7f</code></a>
Moving to currently supported action versions.</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/424733f52b9d2ad1c0bf8abd58119bc27aec30c8"><code>424733f</code></a>
Merge pull request <a
href="https://redirect.github.com/python-greenlet/greenlet/issues/339">#339</a>
from python-greenlet/issue300</li>
<li><a
href="https://github.com/python-greenlet/greenlet/commit/99cad0de1ee0af3c62d16415d1632d781fa3af60"><code>99cad0d</code></a>
Fix setup.py encoding; bump github codeql from v2 to v2</li>
<li>Additional commits viewable in <a
href="https://github.com/python-greenlet/greenlet/compare/1.0.0...2.0.2">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=greenlet&package-manager=pip&previous-version=1.0.0&new-version=2.0.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
@pratik0907
Copy link

I'm using greenlet version 3.0.3 and still facing this issue

@salty-horse
Copy link

I'm using greenlet version 3.0.3 and still facing this issue

Have you tested with the script at the top? It runs fine for me (no memory leaks) with greenlet 3.0.3 on Python 3.12.3.

@pratik0907
Copy link

Yes,
Python version: 3.11.6
Greenlet version: 3.0.3

@salty-horse
Copy link

Python 3.11.6 is also working fine for me.

@pratik0907
Copy link

pratik0907 commented Feb 12, 2024

Not working for me, memory utilization keeps on increasing with every request. (Replicated in local env)

@pratik0907
Copy link

python = "^3.11"
uvicorn = {extras = ["standard"], version = "^0.25.0"}
fastapi = "^0.108.0"
pydantic = "^2.5.3"
celery = "^5.3.6"
aiohttp = "^3.9.1"
python-dotenv = "^1.0.0"
asyncpg = "^0.29.0"
python-json-logger = "^2.0.7"
tenacity = "^8.2.3"
sqlalchemy = "^2.0.24"
alembic = "^1.13.1"
ldclient-py = "^6.9.1"
sentry-sdk = "^1.39.1"
newrelic = "^9.3.0"
greenlet = "^3.0.3"

@zzzeek
Copy link
Author

zzzeek commented Feb 12, 2024

can't reproduce here with Python 3.11.6 and greenlet 3.0.3, memory stays fixed

 11447 classic   20   0  233292  10112   7296 S   2.0   0.0   0:00.73 python                                                                                                               
]$ ~/.venv311/bin/python -V
Python 3.11.6
$ ~/.venv311/bin/pip freeze | grep greenlet
greenlet==3.0.3

@greatitman
Copy link

I also have the same problem as pratik0907 。 I haved tried python3.10 3.11,the mem leak still exists。 How about you now @pratik0907

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants