MagicStack / MagicStack/uvloop

Transport sockets do not support shutdown() method

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

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

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

説明

  • uvloop version: 0.12.2
  • Python version: 3.5.3
  • Platform: Debian 9
  • Can you reproduce the bug with PYTHONASYNCIODEBUG in env?: yes

An attempt to use shutdown method of transport socket causes following exception:

source_traceback: Object created at (most recent call last):
  File "/usr/local/bin/ssh-tarpit", line 11, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.5/dist-packages/ssh_tarpit/__main__.py", line 109, in main
    loop.run_until_complete(amain(args, loop))
  File "/usr/lib/python3.5/asyncio/streams.py", line 238, in connection_made
    self._stream_writer)
  File "/usr/local/lib/python3.5/dist-packages/ssh_tarpit/server.py", line 52, in _spawn
    self._loop.create_task(self.handler(reader, writer)))
Traceback (most recent call last):
  File "/usr/lib/python3.5/asyncio/tasks.py", line 239, in _step
    result = coro.send(None)
  File "/usr/lib/python3.5/asyncio/coroutines.py", line 125, in send
    return self.gen.send(value)
  File "/usr/local/lib/python3.5/dist-packages/ssh_tarpit/server.py", line 38, in handler
    sock.shutdown(socket.SHUT_RD)
  File "uvloop/pseudosock.pyx", line 155, in uvloop.loop.PseudoSocket.shutdown
  File "uvloop/pseudosock.pyx", line 19, in uvloop.loop.PseudoSocket._na
TypeError: transport sockets do not support shutdown() method

Such behavior is not observed with default event loop.

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

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

はじめの一歩

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

調査の方向性

uvloop/pseudosock.pyx の PseudoSocket.shutdown と、traceback に示されている _na パスを読み、まず報告された Python と uvloop のバージョンでソケットの shutdown 呼び出しを再現します。トランスポートソケットが報告された TypeError なしで shutdown を処理し、デフォルトのイベントループと同じ動作をすれば完了です。

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

評価

技術スタック
python
領域
networking
issue の種類
バグ
難易度
3/5
見積もり時間
1〜2日
活発さ
停滞
明瞭さ
おおむね明確
初心者へのやさしさ
45/100

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

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