MagicStack / MagicStack/uvloop

Repeating calls to connect_write_pipe with sys.stdout as a stream lead to FileExistsError exception

オープン
#262 コメント 8 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

help wanted need more info
主要言語
Cython
スター
11.9k
フォーク
616
PR マージ指標
30日以内にマージされた PR はありません

説明

* **uvloop version**: 0.11.3, 0.12.2, 0.13.0rc1
* **Python version**: 3.6, 3.7
* **Platform**: linux, macos
* **Can you reproduce the bug with `PYTHONASYNCIODEBUG` in env?**: yes

Hello, this example doesn't work with uvloop.
```python
import asyncio
import sys
import uvloop

uvloop.install()
loop = asyncio.get_event_loop()

async def main():
transport, protocol = await loop.connect_write_pipe(
asyncio.Protocol, sys.stdout
)
print("okay")

transport2, protocol2 = await loop.connect_write_pipe(
asyncio.Protocol, sys.stdout
)
print("okay")

loop.run_until_complete(main())
```

```
okay
Traceback (most recent call last):
File "uvl.py", line 20, in
loop.run_until_complete(main())
File "uvloop/loop.pyx", line 1451, in uvloop.loop.Loop.run_until_complete
File "uvl.py", line 16, in main
asyncio.Protocol, sys.stdout
File "uvloop/loop.pyx", line 2703, in connect_write_pipe
File "uvloop/loop.pyx", line 2698, in uvloop.loop.Loop.connect_write_pipe
File "uvloop/handles/pipe.pyx", line 170, in uvloop.loop.WriteUnixTransport._open
File "uvloop/handles/pipe.pyx", line 29, in uvloop.loop.__pipe_open
FileExistsError: [Errno 17] File exists
```

please, see discussion here https://github.com/B2W-BIT/aiologger/issues/42#issuecomment-457283504

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

調査の方向性

sys.stdout を使用して loop.connect_write_pipe を繰り返し呼び出すことで例を再現し、その後 uvloop/loop.pyx と uvloop/handles/pipe.pyx の stack-trace のエントリポイントを調査します。1 回目と 2 回目の pipe のオープン経路を比較し、回帰テストのカバレッジを追加します。完了の条件は、報告されたプラットフォーム上で繰り返し呼び出しが FileExistsError なしに完了することです。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
python
領域
networking
issue の種類
バグ
難易度
4/5
見積もり時間
3〜5日
活発さ
停滞
明瞭さ
明確に書かれている
初心者へのやさしさ
35/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。