Closed ma8ma closed 9 months ago
読み込みを中止しても通信がキャンセルされない
バグの説明
板やスレの読み込みを中止しても通信がキャンセルされないことがあります。
再現の方法
やりたかったこと・期待する結果
読み込み中止を選択したら通信をキャンセルする
スクリーンショット
なし
動作環境
[バージョン] JDim 0.10.1-20231028(git:f9e04c4ce6) [ディストリ ] Ubuntu 23.04 (x86_64) [パッケージ] バイナリ/ソース( <配布元> ) [ DE/WM ] KDE [ gtkmm ] 3.24.7 [ glibmm ] 2.66.6 [ TLS lib ] GnuTLS 3.7.8 [オプション ] '--with-alsa''--with-pangolayout' [ そ の 他 ]
追加の情報
select(2)やpoll(2)にあるバグの影響と思われます。 https://linuxjm.osdn.jp/html/LDP_man-pages/man2/select.2.html
linuxではselect(2)やpoll(2)を使ってsocketのファイルディスクリプタを待つと読み込みの準備完了ができたと通知がきた場合でも読み込みがブロックされることがあるとマニュアルに書かれています。 間違った準備完了でIO待機を抜ける状況では読み込みブロックとIO待機でループして読み込み中止の確認が不能になっている疑いがあります。
今回の件に直接関係ありませんがネットワークに関してコメントします。
通信部分はHTTPに加えて下のレイヤーにあるソケット通信を自前で実装して処理していますがメンテナンスが難しくHTTPライブラリへの置き換えを構想しています。 ライブラリはlibsoup3、libcurlを候補として見ています。規模や影響が大きいため修正変更の案をRFCにまとめて折を見て提案したいと考えてます。
読み込みを中止しても通信がキャンセルされない
バグの説明
板やスレの読み込みを中止しても通信がキャンセルされないことがあります。
再現の方法
やりたかったこと・期待する結果
読み込み中止を選択したら通信をキャンセルする
スクリーンショット
なし
動作環境
追加の情報
select(2)やpoll(2)にあるバグの影響と思われます。 https://linuxjm.osdn.jp/html/LDP_man-pages/man2/select.2.html
linuxではselect(2)やpoll(2)を使ってsocketのファイルディスクリプタを待つと読み込みの準備完了ができたと通知がきた場合でも読み込みがブロックされることがあるとマニュアルに書かれています。 間違った準備完了でIO待機を抜ける状況では読み込みブロックとIO待機でループして読み込み中止の確認が不能になっている疑いがあります。