Flask/Werkzeug with Python 3.7 on Cygwin: BlockingIOError: [Errno 11] Resource temporarily unavailable

Flask/Werkzeug with Python 3.7 on Cygwin: BlockingIOError: [Errno 11] Resource temporarily unavailable

Cygwin 上的 Python 3.7 似乎与 Werkzeug 存在一些问题。我有一个复杂的 Flask 应用程序,决定将我的 virtualenv 升级到 3.7,突然我要么看到这个警告

0 [main] python3.7 1642 child_info_fork::abort: address space needed by 'bit_generator.cpython-37m-x86_64-cygwin.dll' (0x600000) is already occupied

或者它只是因为 BlockingIOError 而崩溃。

Traceback (most recent call last):
  File "run.py", line 5, in <module>
    app.run(debug=True)
  File "/cygdrive/c/py/venvs/cyg/lib/python3.7/site-packages/flask/app.py", line 990, in run
    run_simple(host, port, self, **options)
  File "/cygdrive/c/maga/personale/py/venvs/cyg/lib/python3.7/site-packages/werkzeug/serving.py", line 1050, in run_simple
    run_with_reloader(inner, extra_files, reloader_interval, reloader_type)
  File "/cygdrive/c/py/venvs/cyg/lib/python3.7/site-packages/werkzeug/_reloader.py", line 339, in run_with_reloader
    sys.exit(reloader.restart_with_reloader())
  File "/cygdrive/c/py/venvs/cyg/lib/python3.7/site-packages/werkzeug/_reloader.py", line 183, in restart_with_reloader
    exit_code = subprocess.call(args, env=new_environ, close_fds=False)
  File "/usr/lib/python3.7/subprocess.py", line 339, in call
    with Popen(*popenargs, **kwargs) as p:
  File "/usr/lib/python3.7/subprocess.py", line 800, in __init__
    restore_signals, start_new_session)
  File "/usr/lib/python3.7/subprocess.py", line 1482, in _execute_child
    restore_signals, start_new_session, preexec_fn)
BlockingIOError: [Errno 11] Resource temporarily unavailable

目前还不清楚是哪一部分是罪魁祸首。如果我尝试清空我的 init.py,它似乎有一些导入链的问题(导入一个导入另一个文件的文件)。我认为罪魁祸首之一是子流程的导入,但事实并非如此。

我可以做些什么来获得更多输出,以便提供更多信息来解决这个问题?我真的不能在这里复制整个代码,似乎一个简单的项目没有这个问题。

在正确的 Cygwin 安装中,共享库总是 运行 位于比您的 fork 失败案例更高的地址。

要查看预期范围,您可以查看基址数据库。
在我当前的系统上:

$ rebase -si | awk '{ print , }' |sort  |head -n 5
0x0003ce2c0000 /usr/libexec/coreutils/libstdbuf.so
0x0003ce2d0000 /usr/lib/texinfo/XSParagraph.dll
0x0003ce2e0000 /usr/lib/texinfo/Parsetexi.dll
0x0003ce310000 /usr/lib/texinfo/MiscXS.dll
0x0003ce320000 /usr/lib/sasl2_3/cygscram-3.dll

$ rebase -si | awk '{ print , }' |sort -r |head -n 5
0x0003fffd0000 /usr/bin/cygEGL-1.dll
0x0003fffa0000 /usr/bin/cygEMF-1.dll
0x0003fff20000 /usr/bin/cygFLAC-8.dll
0x0003ffea0000 /usr/bin/cygGL-1.dll
0x0003ffe30000 /usr/bin/cygGLU-1.dll

所以或者您的数据库已损坏并且未正确执行变基,或者 BLODA 干扰正确加载您的 dll。