Gauche > Archives > 2015/02/11

2015/02/11 03:40:07 UTCenami
#
前の方のテストが通ってるということは、その時点では子プロセスが
#
そのポートに bind できてたということですよね。
#
で、ちゃんとそのプロセスの終了を待ってから次に進んでると。
#
ちなみに、getsockname のテスト以外なら、0 で bind して後でどのポートに bind されたか調べるという手も。
2015/02/11 03:55:55 UTCshiro
#
あ、その手があった。もう長い間使ってないから忘れてた>0でbind 複数候補渡して試すのも、結局どこにbindされたかは後で調べないとならないから同じだなあ。
#
だがmake-server-socketsの場合、システムによってv4とv6それぞれ別のソケットにbindする場合があるから、単純に0渡すわけにはいかなさそうだ。
2015/02/11 06:46:08 UTCshiro
#
わはは、バレたか。公開してないのはReadContextの扱いをまだ完全に決めてないからですが、機能としては便利なのでいずれ公開すると思います。http://saito.hatenablog.jp/entry/2015/02/11/114453
2015/02/11 07:32:42 UTCKei
#
It's reproducible. I've run the test twice and got the same error twice. It seems one of the gosh process isn't killed properly.
#
~/projects/Gauche ps                [master] git:Gauche
  PID TTY          TIME CMD
 8867 pts/4    00:00:00 zsh
18480 pts/4    00:00:00 gosh
19618 pts/4    00:00:00 ps
#
Above is the process list after running tests.
2015/02/11 07:44:29 UTCenami
#
v6 テスト用の server は動いたけど, (get-ipv6-sock) が #f 返しているとかですかね。
2015/02/11 07:50:18 UTCKei
#
The port is still open.
#
~/projects/Gauche netstat -lntu | grep 6726
tcp6       0      0 :::6726                 :::*                    LISTEN
2015/02/11 08:43:18 UTCenami
#
最後の ::1 くらいは connect できてもよさそうなのに、不思議ですね。run-simple-server は子プロセスが socket を作ってから返ってきているはずだし、filtering でもされているのでしょうか。