如何解决CL-CFFI-GTK浮点无效操作及CL-GTK4的SLIME卡顿问题?
Common Lisp GTK库浮点错误及SLIME兼容性问题
问题背景
三年前跟随《Common Lisp的GTK3教程》学习时,多数示例可正常运行。近期探索CL-GTK4时发现,fibonacci、simple-counter等示例会触发除零浮点错误;为测试旧库稳定性转用CL-CFFI-GTK,却发现教程首个示例直接失效。
测试环境与复现结果
在多种环境测试后结果一致:
- 连接SBCL子进程的SLIME REPL
- 通过SWANK连接SLIME的独立SBCL REPL
- 直接运行的SBCL REPL
- 独立ECL REPL
- SLIME+Emacs中用
C-e或C-c执行代码
触发错误的核心调用代码:
GTK> (gtk-widget-show-all (make-instance 'gtk-window :type :toplevel :title "hello"))
对应的错误信息:
; Evaluation aborted on #<FLOATING-POINT-INVALID-OPERATION {10021F69B3}>.
尝试解决的过程及问题
已确认该问题有记录,但找不到明确解决方案。盲目尝试用sb-int:with-float-traps-masked包裹代码时,触发以下错误:
; unknown float trap kind: GTK:GTK-WIDGET-SHOW-ALL
推测问题与底层C函数、Common Lisp的CFFI桥接中的浮点标志设置有关,但缺乏明确排查方向。本人仅为学习目的探索Common Lisp的非专业开发者,寻求可行的学习或解决切入点。
补充测试情况
在独立SBCL REPL中重新测试CL-GTK4的(gtk4.example:fibonacci),程序可正常运行;但通过M-x slime-connect连接Emacs后,窗口虽能显示,但点击计算斐波那契数的按钮时程序卡顿,该问题似乎与SLIME相关。
系统环境
- Debian 13 Trixie
- SBCL 2.5.2.debian
- ECL 24.5.10
内容的提问来源于stack exchange,提问作者Demihm Seinname
相关产品推荐
相关产品推荐

