Common lisp 在OSX上,使用SLIME,在加载外部库时,次lisp停止

Common lisp 在OSX上,使用SLIME,在加载外部库时,次lisp停止,common-lisp,ffi,slime,quicklisp,clsql,Common Lisp,Ffi,Slime,Quicklisp,Clsql,我使用Quicklisp加载系统,并使用Slime调试代码。Quicklisp成功加载了除cl postgresql之外的许多系统 在slime中计算(ql:quickload“clsql-postgresql”)时,将退出低级lisp 粘液印 Lisp connection closed unexpectedly: connection broken by remote peer 在微型缓冲区和 Process inferior-lisp trace/BPT trap: 5 在*次lisp

我使用Quicklisp加载系统,并使用Slime调试代码。Quicklisp成功加载了除cl postgresql之外的许多系统

在slime中计算
(ql:quickload“clsql-postgresql”)
时,将退出低级lisp

粘液印

Lisp connection closed unexpectedly: connection broken by remote peer
在微型缓冲区和

Process inferior-lisp trace/BPT trap: 5
在*次lisp*缓冲区中

但是在没有Slime的SBCL中评估(ql:quickload“clsqlpostgresql”)不会导致任何错误

我用谷歌搜索了“跟踪/BPT陷阱:5”。该消息似乎表明加载动态库时出现问题。我想这个错误是由Slime设置的错误搜索路径造成的。根据,我在裸SBCL和Slime环境中检查了
CLSQL:*FOREIGN-LIBRARY-SEARCH-path*
,但它们都是
nil

为什么使用Slime时无法加载clsql postgresql

环境:

  • SBCL 1.1.8
  • OS X 10.8.4
  • 最新quicklisp
  • 最新粘液
  • emacs 24.3

(对不起,我的英语不是母语)

我查看了用户诊断报告。我发现了以下几行:

Thread 7 Crashed:
0   com.apple.CoreFoundation        0x00007fff8fab52d5 __CFInitialize + 69
1   dyld                            0x00007fff6f56d256 
所以我在谷歌上搜索了“CoreFoundation”。它说CoreFoundation必须由主线程加载,否则会发出SIGTRAP信号。这是OSX的规则

见:

在裸SBCL中,
ql:quickload
直接在主线程中计算。但在SLIME中,表单是由SWANK启动的独立线程进行评估的

解决方案是在libpg是根据要加载的CoreFoundation的第一个外部库时,在
*低级lisp*
中评估
(ql:quickload“clsql postgresql”)
,而不是
*slime repl*