2013-06-30 7 views
2

Quicklisp을 사용하여 시스템을로드하고 Slime으로 코드를 디버깅합니다. Quicklisp은 cl-postgresql을 제외하고 많은 시스템을 성공적으로로드합니다.OS X에서 SLIME을 사용하면 외부 라이브러리를로드 할 때 하위 lisp이 중지되었습니다.

슬라임에서 (ql:quickload "clsql-postgresql")을 평가할 때 열등한 혀짤임이 종료됩니다.

슬라임은 열등한 * - * LISP 버퍼

Lisp connection closed unexpectedly: connection broken by remote peer 
미니 버퍼에

Process inferior-lisp trace/BPT trap: 5 

를 출력한다.

하지만 Slime없이 SBCL에서 (ql : quickload "clsql-postgresql")을 평가해도 오류가 발생하지 않습니다.

Google과 함께 "trace/BPT trap : 5"를 검색했습니다. 동적 라이브러리를로드 할 때 문제가 있음을 나타내는 메시지가 표시됩니다. 나는 오류가 Slime에 의해 설정된 잘못된 검색 경로로 인해 발생했다고 생각합니다. http://clsql.b9.com/manual/appendix.html에 따르면 벌거 벗은 SBCL과 슬라임 환경에서 CLSQL:*FOREIGN-LIBRARY-SEARCH-PATHS*을 확인했지만 모두 nil입니다.

Slime을 사용할 때 clsql-postgresql이로드되지 않는 이유는 무엇입니까?

환경 : 내 영어

  • SBCL 1.1.8
  • OS X 10.8.4
  • 최신 quicklisp
  • 최신 점액
  • 이맥스

24.3 (죄송합니다 , 난 원어민이 아니야)

답변

0

사용자 진단 보고서를 선택했습니다. 그리고 다음 줄을 찾았습니다 :

Thread 7 Crashed: 
0 com.apple.CoreFoundation  0x00007fff8fab52d5 __CFInitialize + 69 
1 dyld       0x00007fff6f56d256 

그래서 "CoreFoundation"을 봤습니다. 그것은 CoreFoundation이 메인 쓰레드에 의해로드되어야한다고 말했고 그렇지 않으면 SIGTRAP 신호를 보냈습니다. 그것은 OS X의 규칙이다

참조 : Debugging a crash when a library is opened via dlopen on OSX 베어 SBCL에서

, ql:quickload 직접 메인 스레드에서 평가된다. 그러나 SLIME에서는 양식이 SWANK에 의해 시작된 분리 된 스레드로 평가됩니다.

해결 방법은 *slime-repl* 대신 *inferior-lisp*에서 (ql:quickload "clsql-postgresql")을 평가하는 것입니다. libpg는로드 할 CoreFoundation에 따라 첫 번째 외부 라이브러리입니다.