's Avatar

@naruse

147
Followers
20
Following
5
Posts
04.07.2023
Joined
Posts Following

Latest posts by @naruse

たぶんそれはconnectが終わった上で、スレッドが終了し、GCが走ってcloseされてませんかね。接続を無視するホストに対してconnectしてみればconnectに時間がかかるので、Thread#killしてもなかなか死なないのが観測できますし、GC.disableすればfdが開きっぱなしなんじゃないかな…どちらも試してないのでたぶんですが…

11.08.2023 13:35 👍 1 🔁 0 💬 1 📌 0

connect(2)の最中にRuby threadを中断する方法がないと仰っているんだと思います。
実際には、例えばLinuxならthread単位でsignalを送ることでEINTRで中断させることは出来ます。もっともRubyにはthread単位にsignalを扱う機能はないので別の方法を考える必要があます。
他にはconnect_nonblockがあり、connect_nonblockで開きまくってからIO.selectで繋がったやつをゲットできるんじゃないかと思います

10.08.2023 15:58 👍 1 🔁 0 💬 1 📌 0

端的にはRubyのリポジトリを git grep WaitWritable して頂くといいと思うんですが、EGAINやEWOULDBLOCKつまり実行中にシグナルで割り込みがかかったとかですかね。あとはOpenSSLでラップされてるパターンがあります

10.08.2023 11:25 👍 1 🔁 0 💬 1 📌 0

EINPROGRESS以外にも例外返ってきませんっけ

10.08.2023 01:10 👍 0 🔁 0 💬 1 📌 0

ハングというか受信待ちだったりしませんか

15.07.2023 12:59 👍 1 🔁 0 💬 1 📌 0