0

私は現在 sbcl 1.0.57.0 を使用しており、プログラムはシェルで一定の出力を生成しますが、ある時点でプログラムが何の手がかりもなくフリーズします。

Cc と down は、最後の呼び出しが次のようであることを明らかにします。

(SB-SYS:WAIT-UNTIL-FD-USABLE 6 :INPUT NIL NIL)

プログラムを再起動してもう一度試してみましたが、プログラムがフリーズし、Cc を押すと、この呼び出しが最後の呼び出しであることがわかります。しばらくして、正確な時間を測定しませんでしたが、おおよそ 5 分ほどかかるはずです。プログラムは短時間継続し、その後再びフリーズします。

呼び出しをコンテキストに入れるには: トレース内の最初のおなじみの呼び出しは ですdrakma:http-request。ただし、それ自体で使用される完全な呼び出しはフリーズにはなりません。

今、私はこの呼び出しが実際に何をしているのか、そしてこれがプログラムがフリーズする理由なのだろうか?

この質問の 2 番目の部分は、通話が私の問題とは何の関係もない場合、千里眼になるように要求することになるので、私の最後の質問は次のとおりです。この通話は何をしますか?

4

2 に答える 2

1

(describe 'sb-sys:wait-until-fd-usable) を与える:

WAIT-UNTIL-FD-USABLE names a compiled function:
Lambda-list: (FD DIRECTION &OPTIONAL TIMEOUT)
[...]
Documentation:
Wait until FD is usable for DIRECTION. DIRECTION should be either :INPUT
or :OUTPUT
TIMEOUT, if supplied, is the number of seconds to wait before giving up.

呼び出しの意図は、ファイル記述子 6 が使用可能になるまで (タイムアウトなしで) 待機することのようですが、問題は、関数が 2 つまたは 3 つを期待しているときに 4 つの引数で呼び出されることでしょうか?

于 2012-10-20T19:45:40.730 に答える
0

技術的には私はこれを尋ねませんでしたが、他の誰かが同様のコンテキストでこの問題を探している場合に備えて、このトピックに関する最新の情報を追加したいと思いました.

を使用して問題が発生しましたdrakma:http-request。特定のリクエストの概念実証を作成できるようになり、これを drakma github ページに問題として投稿しました。ドラクマは sbcl でタイムアウトを提供していないように見えるため、(SB-SYS:WAIT-UNTIL-FD-USABLE 6 :INPUT NIL NIL)この場合、タイムアウトなしで情報が到着するのを待ちます: https://github.com/edicl/drakma/issues/67

于 2015-08-01T16:03:38.250 に答える