8

我想在 Emacs 和 SLIME 下的 Common Lisp 中做一些 OpenGL 编程。我还没准备好,但我目前正在尝试使用 SBCL。如果我从一开始就打开 emacs,只用这一行创建一个新文件:

(ql:quickload :cl-opengl)

然后我这样做M-x slime(并等待它加载),然后C-c C-c编译并运行该行,SBCL 立即崩溃,每次都会提示一个对话框,上面写着sbcl quit unexpectedly

错误对话框:sbcl 意外退出

我已经保存了可以通过单击“报告...”按钮访问的输出;如果这有用,我可以在此处添加(或将其放在 pastebin 或其他东西上)...简短的版本是它正在获取SIGTRAP.

每次我尝试在 SLIME 下运行它时都会发生这种情况......但有趣的是,如果我从命令行运行 SBCL,它就不会发生。

所以,问题是:这是 SBCL 中的错误吗?在 cl-opengl 中?我配置错误的东西?其他?任何见解将不胜感激。


注意

我做了一些谷歌搜索,我找到了一个页面,该页面提供了将以下内容放入的解决方法~/.swank.lisp

(setf swank:*communication-style* :fd-handler)

事实上,这让我摆脱了直接的崩溃,让我能够做一些工作。如果这只是答案,请有人将其作为答案发布,并解释为什么要这样做,以便其他人可以找到它。否则,我认为这是一个错误,可以修复,而不是解决...和/或至少可以帮助我更好地理解的东西;我的当前代码(基本上在brian 的大脑,作为测试用例)运行(通过)时仍然没有响应式 REPL run,这可能是也可能不是一个单独的问题?更改 swank 配置是否为我改变了这种情况?


平台详情:

操作系统:MacOS 10.6.8

SBCL:来自 MacPorts 的sbcl@1.1.10_0+fancy ;启动头这是 SBCL 1.1.10,ANSI Common Lisp 的实现。

Emacs:macports 安装的 Emacs版本 24.3 (9.0)(根据关于窗口的 GUI,或GNU Emacs 24.3.1 (x86_64-apple-darwin10.8.0, NS apple-appkit-1038.36) of 2013-04-07 per M-x version,或emacs-app@24.3_1端口)

史莱姆:来自 MacPorts 的slime@20130630

4

2 回答 2

0

听起来像是 SWANK 的线程支持问题

:fd-handler 选项将 SWANK 的通信方式从默认(使用单独的线程进行通信)更改为使用循环方法(http://www.common-lisp.net/projects/slime/doc/html/通信风格.html )。

过去有很多关于在 Mac OS 上使用带有线程的 SBCL 的抱怨,这些在很大程度上从外观上得到了解决;也许 SWANK 也有类似的问题?

我不是 100% 确定这是您问题的唯一原因,但这是我能找到的最佳解释。

于 2013-11-21T22:04:48.867 回答
0

我一直在查看我的设置,看看有什么不同

OS X 10.9
SBCL 1.1.8.0-19cda10
slime-20131003

但最有可能的罪犯仍然是史莱姆/斯旺克。我真的建议使用 quicklisp 来管理你的 slime 设置而不是 macports,这将使 slime 和 swank 保持同步和最新。我已经以这种方式使用粘液一两年了,到目前为止没有任何问题。

quicklisp 页面

要安装和配置 SLIME,请使用:

(ql:quickload "quicklisp-slime-helper")

然后按照它显示的说明进行操作。quicklisp-slime-helper 将创建一个可以在 Emacs 中加载的文件,该文件配置正确的加载路径以加载 Quicklisp 的 SLIME 安装

我还制作了一个小视频,展示了如何在 windows 下安装 emacs+sbcl+quicklisp+slime。粘液部分仍然适用于所有平台。

希望能帮助到你。

于 2013-12-19T09:26:33.707 回答