1

在使用 SBCL、CL-OPENGL 和 Lispbuilder-SDL 编写简单游戏时,我遇到了一个奇怪的错误。在我让游戏运行后不久,我决定清理我所有的调试垃圾(打印语句等)。我这样做了,但是当我之后运行游戏时,我收到了“已中止”的消息,我的整个 Lisp 进程都死了,没有其他错误消息,也没有调试器提示。使用打印语句,我设法将问题隔离到调用 gl:translate。奇怪的是,如果我在该行之前放置一个 break 语句并尝试单步执行,我不会收到任何错误并且代码运行良好。似乎几乎是一种竞争条件,但我没有使用线程。有任何想法吗?

编辑:看来调用 gl:translate 不是问题。如果我执行以下操作:

(print 'first)
(print 'second)
(gl:translate ...)

我得到输出

FIRST
Aborted

就像我说的,我没有使用线程。

编辑 2:它适用于 CLisp。

编辑3:没关系,它没有。

4

1 回答 1

0

我通过切换回纯 SDL 来修复它,这令人失望,但它确实有效。

于 2012-10-14T14:12:43.617 回答