Skip to content

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

Closed
@kumaraditya303

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

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