首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >木星与普通Lisp

木星与普通Lisp
EN

Stack Overflow用户
提问于 2015-12-04 17:04:02
回答 1查看 2.4K关注 0票数 9

我正在尝试安装克鲁比特 (用于木星的通用lisp内核),但无法工作:当我打开一个新的lisp笔记本(或更改现有笔记本的内核)时,它会在显示以下消息后崩溃:

代码语言:javascript
复制
[I 18:26:50.855 NotebookApp] Kernel started: ccba815a-9065-4fad-9d95-06f6291136d2
To load "cl-jupyter":
  Load 1 ASDF system:
    cl-jupyter
; Loading "cl-jupyter"
...............

cl-jupyter: an enhanced interactive Common Lisp REPL
(Version 0.7 - Jupyter protocol v.5.0)
--> (C) 2014-2015 Frederic Peschanski (cf. LICENSE)

kernel configuration = ((hb_port . 58864) (shell_port . 37462)
                        (transport . tcp) (iopub_port . 43232)
                        (signature_scheme . hmac-sha256)     (control_port . 52184)
                        (stdin_port . 45879)
                        (key . 2ae7d65f-65f9-40d8-bfd4-21760eaec0ca)
                        (ip . 127.0.0.1))
[Hearbeat] starting...
[Heartbeat] thread started
[Heartbeat] thread started
[Kernel] Entering mainloop ...
[Shell] loop started
Argh! corrupted error depth, halting
fatal error encountered in SBCL pid 24605(tid 140737353922304):
%PRIMITIVE HALT called; the party is over.

一些细节:

  • Jupyter可以很好地处理python ( 2x和3x)。
  • sbcl似乎也运行得很好(我刚刚开始使用公共lisp,所以我可能遗漏了一些东西--但我可以运行代码,并使用asdf和quicklisp)。
  • 我通过运行"python3 ./install-cl-jupyter.py".来安装它
  • 我的.sbclrc文件现在只包含"(load "~/quicklisp/setup.lisp")“。

系统信息:

  • 操作系统:Linux4.1.13-1-Manjaro x86_64 GNU/Linux
  • Python 3.5.0
  • SBCL 1.3.0
  • 木星4.0.6版

有些事我试过了:

文件~/.ipython/kernels/lisp/kernel.json包含:

代码语言:javascript
复制
{"argv": ["sbcl", "--non-interactive", "--load", "/home/myusername/lisp/systems/cl-jupyter/cl-jupyter.lisp", "/homemyusername/lisp/systems/cl-jupyter/src", "/home/myusername/lisp/systems/cl-jupyter", "{connection_file}"], "display_name": "SBCL Lisp", "language": "lisp"}

所有的道路都是正确的。当我手动运行相同的代码时:

代码语言:javascript
复制
sbcl --non-interactive --load "/home/myusername/lisp/systems/cl-jupyter/cl-jupyter.lisp" "/homemyusername/lisp/systems/cl-jupyter/src" "/home/myusername/lisp/systems/cl-jupyter" kernel-07e04903-c562-4c67-bcc1-b68f4047d8d2.json

(其中"kernel-07e04903-c562-4c67-bcc1-b68f4047d8d2.json“是我保存的lisp内核的自动生成文件),它看起来”正常“(例如,它运行,等待时没有错误)。

我试着做一些快速的调试-打印,我最好的猜测是它在src/shell.lisp中崩溃,在行中。

代码语言:javascript
复制
 (vbinds (identities sig msg buffers)  (message-recv (shell-socket shell))

但我可能又错了。因为它看起来有点像与通信有关,所以我确保了zeromq的更新。

除了学习更多的lisp之外,我不知道下一步是什么,然后再回来正确地调试代码--但是我希望通过木星来学习它:)

如有任何建议,我将不胜感激,谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-09 02:55:35

此问题是由于0MQ版本4.1.x中的消息结构zmq_msg_t的大小从4.0.x版本中的32字节更改为64字节造成的。

cl-jupyter使用的0MQ接口库是pzmq,并且声明该库支持最高版本为4.0的0MQ。在撰写本文时,pzmq使用了32字节的0MQ消息大小。如果安装了0MQ版本4.1.x,这将导致内部错误。

这里有两个解决方案:

  1. 将0MQ安装降级为4.0.x版本
  2. 通过将pzmqc-api.lisp中的定义从32字节更新到64字节来修复c-api.lisp库。

更新-2016年5月9日

pzmq库进行了更新,以支持0MQ版本4.1.x (保持与旧版本的兼容性)。新版pzmq计划作为2016年5月Quicklisp发行版的一部分发布。

更新-2016年6月1日

2016年5月的Quicklisp版本包括对解决此问题的pzmq库的更新。降级的0MQ或修改pzmq库不再是必要的。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34093656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档