On Tue, Nov 24, 2015 at 8:41 PM, Zachary Ware <zachary.ware+pyl...@gmail.com> wrote: > On Tue, Nov 24, 2015 at 12:37 PM, Marc Aymerich <glicer...@gmail.com> wrote: >> still it appears to work only if the main thread is in the foreground >> (as of calling Thread() with deamon=True), I don't get why it behaves >> differently :( maybe it is waiting for other stuff, but no idea how to >> confirm this with strace of other means.. i always see the same >> 'futex(0x7f9a70000c10, FUTEX_WAIT_PRIVATE, 0, NULL' > > What's your exact version of Python? asyncio is still evolving > rapidly, and may behave differently between patch releases (say, > between 3.4.1 and 3.4.3). > > I have tried out your reproducer with my fix, and I can't provoke a > hang using Python 3.4.3 on either OSX or Ubuntu Trusty. Can you give > some more specific directions to reproduce? > > -- > Zach > -- > https://mail.python.org/mailman/listinfo/python-list
Yep, I'm a bit lost about how fuse implements going into background... so the only way I have to reproduce this so far is by using fuse :( # pip3 install fusepy import asyncio import threading import time import os import sys from fuse import FUSE, Operations def run_loop(loop_container): loop = asyncio.new_event_loop() asyncio.set_event_loop(loop) coro = asyncio.start_server(lambda: 1, '0.0.0.0', 8888, loop=loop) server = loop.run_until_complete(coro) loop_container['loop'] = loop loop.run_forever() if __name__ == '__main__': mountpoint = sys.argv[1] loop_container = {} handler = threading.Thread(target=run_loop, args=(loop_container,)) handler.start() try: # with foreground=True works FUSE(Operations(), mountpoint, foreground=False) finally: loop_container['loop'].call_soon_threadsafe(loop_container['loop'].stop) $ mkdir /tmp/7777 $ python3.5 /tmp/eventtest.py /tmp/7777 # Another terminal $ ps aux | grep python3.5 glic3 19983 0.5 0.1 215540 10772 ? Ssl 21:05 0:00 python3.5 me.py /tmp/7777 $ sudo strace -p 19983 Process 19983 attached - interrupt to quit futex(0x7fff42affca0, FUTEX_WAIT_PRIVATE, 0, NULL) = 0 # Here i fire $ fusermount -u /tmp/7777 tgkill(19983, 19985, SIGRTMIN) = 0 futex(0x7fff42affc30, FUTEX_WAKE_PRIVATE, 1) = 0 futex(0x7f9840afc9d0, FUTEX_WAIT, 19984, NULL I've just tried with python3.5 and the same behavior. The thing is that with foreground=True it just works. thank you for your time! -- Marc -- https://mail.python.org/mailman/listinfo/python-list