什么(SB-SYS:WAIT-UNTIL-FD-USABLE 6:INPUT NIL NIL)呢?

时间:2012-10-20 17:29:03

标签: common-lisp sbcl

我正在使用sbcl 1.0.57.0并且我的程序在shell中生成常量输出,直到某个时刻我的程序冻结而没有任何线索。

C-c和down,显示最后一次调用:

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

我重新启动了我的程序并再次尝试了这个程序,程序再次冻结,C-c显示该调用是最后一个。过了一会儿,我没有测量确切的时间,但大概应该在5分钟左右,程序会持续一段时间,然后再次冻结。

将通话置于上下文中: 跟踪中第一个熟悉的调用是drakma:http-request。但是,使用的完整调用不会导致冻结。

现在我想知道这个电话实际上做了什么,以及这可能是程序冻结的原因吗?

如果这个问题与我的问题无关,那么这个问题的第二部分会要求你透露:这个电话是做什么的?

2 个答案:

答案 0 :(得分:1)

(描述'sb-sys:wait-until-fd-useful)给出:

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可用,但问题可能就是这样 该函数使用4个参数调用,而它需要2或3?

答案 1 :(得分:0)

虽然从技术上来说我并没有问过这个问题,但我想在这个主题上添加我的最新信息,以防其他人在类似的环境中寻找这个问题。

问题出现在使用drakma:http-request。我现在能够为特定请求编写概念证明,并将其作为问题发布在drakma github页面上。似乎drakma没有在sbcl中提供超时,因此(SB-SYS:WAIT-UNTIL-FD-USABLE 6 :INPUT NIL NIL)等待信息在没有超时的情况下到达,在这种情况下: https://github.com/edicl/drakma/issues/67