[New-bugs-announce] [issue32115] Ignored SIGCHLD causes asyncio.Process.wait to hang forever

rogpeppe report at bugs.python.org
Wed Nov 22 13:32:12 EST 2017


New submission from rogpeppe <rogpeppe at gmail.com>:

If some parent process has disabled SIGCHLD, that signal is inherited and stops that signal being delivered, which means that asyncio.Process.wait will never complete.

As an example, the plan9port terminal window, 9term, (https://9fans.github.io/plan9port/man/man1/9term.html) does this, and hence causes async Python processes to hang forever.

Python should probably code defensively against this and ensure that SIGCHLD is enabled regardless. Attached is some C code that demonstrates the issue when the following python code is saved to "tst.py".

    #!/usr/bin/env python3
    import asyncio
    
    async def do_exec():
        cmd = ['echo', 'hello, world']
        process = await asyncio.create_subprocess_exec(*cmd, env={})
        await process.wait()
    
    loop=asyncio.get_event_loop()
    try:
        loop.run_until_complete(do_exec())
    finally:
        loop.close()



demonstration of the issue.

----------
components: asyncio
files: tst.c
messages: 306745
nosy: rogpeppe, yselivanov
priority: normal
severity: normal
status: open
title: Ignored SIGCHLD causes asyncio.Process.wait to hang forever
type: behavior
versions: Python 3.5
Added file: https://bugs.python.org/file47283/tst.c

_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue32115>
_______________________________________


More information about the New-bugs-announce mailing list