【问题标题】:slimv segfaulting on OS X LionOS X Lion 上的 slimv 段错误
【发布时间】:2011-09-23 07:15:22
【问题描述】:

我一直在尝试让 slimv (http://www.vim.org/scripts/script.php?script_id=2531) 工作一段时间,但我真的不确定我还能做什么。

我正在运行使用 python 支持编译的 vim 7.3,在 os x lion 上使用 clisp(虽然 sbcl 显示相同的问题)。我从 vim.org 下载了最新版本的 slimv。

当我加载一个 lisp 文件时,echo g:slimv_loaded 返回 1,但我没有得到带有 repl 的第二个窗口。当我点击任何键绑定时,会打开一个新的终端窗口,启动 clisp,并返回以下内容

; Loading file /Users/pdk/.vim/slime/start-swank.lisp ...
;;  Loading file /Users/pdk/.vim/slime/swank-loader.lisp ...
WARNING: No architecture feature found in
     (POWERPC PPC X86 X86-64 X86_64 AMD64 I686 I586 I486 PC386 IAPX386
     SPARC64 SPARC
     HPPA64 HPPA ARM PENTIUM3 PENTIUM4 JAVA-1.4 JAVA-1.5 JAVA-1.6
     JAVA-1.7).
;;  Loaded file /Users/pdk/.vim/slime/swank-loader.lisp
;;  Loading file /Users/pdk/.slime/fasl/2011-03-13/clisp-2.49-unix-unknown/swank-backend.fas ...
;;  Loaded file /Users/pdk/.slime/fasl/2011-03-13/clisp-2.49-unix-unknown/swank-backend.fas
;;  Loading file /Users/pdk/.slime/fasl/2011-03-13/clisp-2.49-unix-unknown/xref.fas ...
;;  Loaded file /Users/pdk/.slime/fasl/2011-03-13/clisp-2.49-unix-unknown/xref.fas
;;  Loading file /Users/pdk/.slime/fasl/2011-03-13/clisp-2.49-unix-unknown/metering.fas ...
;;  Loaded file /Users/pdk/.slime/fasl/2011-03-13/clisp-2.49-unix-unknown/metering.fas
;;  Loading file /Users/pdk/.slime/fasl/2011-03-13/clisp-2.49-unix-unknown/swank-clisp.fas ...
WARNING: DEFUN/DEFMACRO: redefining function BREAK in
         /Users/pdk/.slime/fasl/2011-03-13/clisp-2.49-unix-unknown/swank-clisp.fas,
         was defined in
         /private/tmp/homebrew-clisp-2.49-LWCF/clisp-2.49/src/condition.fas
WARNING: Replacing method #<STANDARD-METHOD (#<BUILT-IN-CLASS T>)> in
         #<STANDARD-GENERIC-FUNCTION EMACS-INSPECT>
;;  Loaded file /Users/pdk/.slime/fasl/2011-03-13/clisp-2.49-unix-unknown/swank-clisp.fas
;;  Loading file /Users/pdk/.slime/fasl/2011-03-13/clisp-2.49-unix-unknown/swank-gray.fas ...
WARNING: The generic function #<STANDARD-GENERIC-FUNCTION STREAM-WRITE-CHAR>
         is being modified, but has already been called.
WARNING: The generic function #<STANDARD-GENERIC-FUNCTION STREAM-LINE-COLUMN>
         is being modified, but has already been called.
WARNING: The generic function #<STANDARD-GENERIC-FUNCTION STREAM-FORCE-OUTPUT>
         is being modified, but has already been called.
WARNING: The generic function #<STANDARD-GENERIC-FUNCTION STREAM-LINE-COLUMN>
         is being modified, but has already been called.
;;  Loaded file /Users/pdk/.slime/fasl/2011-03-13/clisp-2.49-unix-unknown/swank-gray.fas
;;  Loading file /Users/pdk/.slime/fasl/2011-03-13/clisp-2.49-unix-unknown/swank-match.fas ...
;;  Loaded file /Users/pdk/.slime/fasl/2011-03-13/clisp-2.49-unix-unknown/swank-match.fas
;;  Loading file /Users/pdk/.slime/fasl/2011-03-13/clisp-2.49-unix-unknown/swank-rpc.fas ...
;;  Loaded file /Users/pdk/.slime/fasl/2011-03-13/clisp-2.49-unix-unknown/swank-rpc.fas
;;  Loading file /Users/pdk/.slime/fasl/2011-03-13/clisp-2.49-unix-unknown/swank.fas ...
;;  Loaded file /Users/pdk/.slime/fasl/2011-03-13/clisp-2.49-unix-unknown/swank.fas
WARNING: These Swank interfaces are unimplemented:
         (ACTIVATE-STEPPING ADD-FD-HANDLER ADD-SIGIO-HANDLER
         BACKGROUND-SAVE-IMAGE
         DISASSEMBLE-FRAME DUP EXEC-IMAGE FRAME-CALL INTERRUPT-THREAD
         MAKE-FD-STREAM
         RECEIVE-IF REMOVE-FD-HANDLERS REMOVE-SIGIO-HANDLERS SEND
         SLDB-BREAK-AT-START
         SLDB-BREAK-ON-RETURN SLDB-STEP-INTO SLDB-STEP-NEXT SLDB-STEP-OUT
         SOCKET-FD
         SPAWN TOGGLE-TRACE)
;;  Loading file /Users/pdk/.slime/fasl/2011-03-13/clisp-2.49-unix-unknown/contrib/swank-c-p-c.fas ...
;;  Loaded file /Users/pdk/.slime/fasl/2011-03-13/clisp-2.49-unix-unknown/contrib/swank-c-p-c.fas
;;  Loading file /Users/pdk/.slime/fasl/2011-03-13/clisp-2.49-unix-unknown/contrib/swank-arglists.fas ...
;;  Loaded file /Users/pdk/.slime/fasl/2011-03-13/clisp-2.49-unix-unknown/contrib/swank-arglists.fas
;;  Loading file /Users/pdk/.slime/fasl/2011-03-13/clisp-2.49-unix-unknown/contrib/swank-fuzzy.fas ...
;;  Loaded file /Users/pdk/.slime/fasl/2011-03-13/clisp-2.49-unix-unknown/contrib/swank-fuzzy.fas
;;  Loading file /Users/pdk/.slime/fasl/2011-03-13/clisp-2.49-unix-unknown/contrib/swank-fancy-inspector.fas ...
;;  Loaded file /Users/pdk/.slime/fasl/2011-03-13/clisp-2.49-unix-unknown/contrib/swank-fancy-inspector.fas
;;  Loading file /Users/pdk/.slime/fasl/2011-03-13/clisp-2.49-unix-unknown/contrib/swank-presentations.fas ...
;;  Loaded file /Users/pdk/.slime/fasl/2011-03-13/clisp-2.49-unix-unknown/contrib/swank-presentations.fas
;;  Loading file /Users/pdk/.slime/fasl/2011-03-13/clisp-2.49-unix-unknown/contrib/swank-presentation-streams.fas ...
;;  Loaded file /Users/pdk/.slime/fasl/2011-03-13/clisp-2.49-unix-unknown/contrib/swank-presentation-streams.fas
;;  Loading file /Users/pdk/.slime/fasl/2011-03-13/clisp-2.49-unix-unknown/contrib/swank-package-fu.fas ...
;;  Loaded file /Users/pdk/.slime/fasl/2011-03-13/clisp-2.49-unix-unknown/contrib/swank-package-fu.fas
;;  Loading file /Users/pdk/.slime/fasl/2011-03-13/clisp-2.49-unix-unknown/contrib/swank-hyperdoc.fas ...
;;  Loaded file /Users/pdk/.slime/fasl/2011-03-13/clisp-2.49-unix-unknown/contrib/swank-hyperdoc.fas
;; Swank started at port: 4005.
CL-USER> 
;; swank:close-connection: 
READ: input stream #<IO UNBUFFERED SOCKET-STREAM CHARACTER 0.0.0.0:4005> has reached its end

;; swank:close-connection: NIL

同时,原来的终端窗口关闭vim,并显示这个

tab 1 of window id 57924
Vim: Caught deadly signal SEGV

Vim: Finished.
[1]    83648 segmentation fault  vim foo.lisp

任何想法我能做什么?

【问题讨论】:

    标签: vim lisp slimv


    【解决方案1】:

    我刚刚收到了来自 macvim 开发者的以下信息:

    这似乎是一个 64 位问题——编译 MacVim 32 位似乎可以解决它。请编译一个 32 位的 版本。构建指令是here,为了构建 32 位,“配置”行必须包含标志“--with-macarchs=i386”。

    【讨论】:

    • 太棒了,塔马斯。我终于能够让它工作了。我一直在使用 vanilla vim,但仍然无法让它在那里工作,但 macvim 已经足够接近了。
    • 在 64 位编译的 MacVim 上进行这项工作有什么进展吗?编译 32 位会带来对其他语言的语言支持问题。
    • 我没有听说过,但我和 MacVim 没有任何关系,所以你应该问问 MacVim 的维护者。
    【解决方案2】:
    • 如果您在swank.py 的第32 行更改log = True,则Slimv 会写入一个名为swank.log 的日志文件,其中包含swank 客户端和服务器之间的通信数据。这可用于检查任何 swank 协议问题。您可以将日志文件发送给 Slimv 的作者(就是我:)进行分析。
    • 您可以尝试手动运行从Slime 获取的您自己的 swank 服务器,然后让 Slimv 连接它。如果与 Slimv 捆绑的 swank 服务器不完全兼容 Lion,这会有所帮助。
    • 您可能想尝试从Slimv repository 获取的最新版本。

    【讨论】:

    • Tamas 你是 SO 的 kibo。我在 swank.py 中启用了日志记录,但我找不到日志文件。 swank.log 默认写入哪里?我尝试了 repo 中的最新版本,但得到了相同的结果
    • 好吧,在 Windows 或 Linux 上,它被写入“当前”目录,即 Vim 启动的那个目录。但是您也可以通过指定完整路径来更改 swank.py 中的日志文件名称:logfile = '\mypath\swank.log'。然后你就会知道在哪里可以找到它。也有可能是因为 Vim 在写入任何日志消息之前就崩溃了,所以根本没有创建日志文件。在这种情况下,您应该在尝试打开 repl 缓冲区之前打开详细模式(例如 set verbosefile=\path\slimv.log | set verbose=20)。
    • 似乎在崩溃之前没有创建文件。给你 - patrickkettner.com/slimv_crash.txt 非常感谢
    • 好像你也安装了 fugitive.vim 并且 Vim 在执行逃犯的 BufWinLeave 自动命令时崩溃了。 Slimv 做了一些繁重的缓冲区/窗口切换,这可能会干扰那些自动命令,所以我建议在禁用逃犯的情况下执行测试。存储库中还有一个新的 slimv090 分支,它减少了缓冲区切换,您可能也想尝试一下。
    • 您似乎尝试了 eval form (+ 2 2) 两次,第二次出现在第一次完成之前。这里可能有一个需要寻找的错误,但首先请这样做:尝试以详细模式通过 ,c (连接服务器)打开 repl 缓冲区,并且不要使用 ,d (eval defun)。请通过电子邮件与我联系(您可以在文档中找到),看来这个问题需要更多讨论。[我已经删除了我之前的评论,因为这是一个完全错误,对此感到抱歉。]
    猜你喜欢
    • 2011-10-19
    • 1970-01-01
    • 2012-06-27
    • 1970-01-01
    • 1970-01-01
    • 2012-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多