Skip to content

loop.run_forever can remove running loop if already running #130145

Description

@kumaraditya303

Reproducer:

import asyncio

async def main():
    loop = asyncio.new_event_loop()
    try:
        loop.run_forever()

    except RuntimeError:
        pass

    print(asyncio.get_running_loop())



asyncio.run(main())

Output:

cpython on  main [$?] via C v13.3.0-gcc via 🐍 v3.12.3 
❯ ./python main.py 
Traceback (most recent call last):
  File "/home/realkumaraditya/cpython/main.py", line 15, in <module>
    asyncio.run(main())
    ~~~~~~~~~~~^^^^^^^^
  File "/home/realkumaraditya/cpython/Lib/asyncio/runners.py", line 204, in run
    return runner.run(main)
           ~~~~~~~~~~^^^^^^
  File "/home/realkumaraditya/cpython/Lib/asyncio/runners.py", line 127, in run
    return self._loop.run_until_complete(task)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^
  File "/home/realkumaraditya/cpython/Lib/asyncio/base_events.py", line 719, in run_until_complete
    return future.result()
           ~~~~~~~~~~~~~^^
  File "/home/realkumaraditya/cpython/main.py", line 11, in main
    print(asyncio.get_running_loop())
          ~~~~~~~~~~~~~~~~~~~~~~~~^^
RuntimeError: no running event loop
/home/realkumaraditya/cpython/Lib/asyncio/base_events.py:758: ResourceWarning: unclosed event loop <_UnixSelectorEventLoop running=False closed=False debug=False>

Linked PRs

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    3.12only security fixes3.13bugs and security fixes3.14bugs and security fixestopic-asynciotype-bugAn unexpected behavior, bug, or error

    Projects

    • Status
      Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions