asdf-tools: load broken when built with CCL
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
ASDF |
Won't Fix
|
Wishlist
|
Faré |
Bug Description
Building asdf-tools with SBCL leads to a usable binary (that handles the "load" command correctly).
$ LISP=sbcl SBCL=sbcl-1.3.9 ./make-asdf.sh build-asdf-tools
$ SBCL=sbcl-1.3.9 ./build/asdf-tools load sbcl
# works
$ CCL=ccl-1.11 ./build/asdf-tools load ccl
# works
Building asdf-tools with CCL (the default!) does not lead to a usable binary (the "load" command is handled incorrectly).
$ LISP=ccl CCL=ccl-1.11 ./make-asdf.sh build-asdf-tools
$ SBCL=sbcl-1.3.9 ./build/asdf-tools load sbcl
# does not work
$ CCL=ccl-1.11 ./build/asdf-tools load ccl
# does not work
By "does not work" I mean to say: It looks like you're given a REPL but as soon as you press a single key, you'll get
rlwrap: error: Unexpected error: Input/output error
whereafter the program doesn't react to ordinary keystrokes anymore.
summary: |
- asdf-tools: load broken? + asdf-tools: load broken when built with CCL |
description: | updated |
OK. I think I understand what happens. I used
#+clozure (trace uiop:run-program ccl:run-program inferior-shell:run)
to look at what was happening on our side, and everything looked fine. As it should, this it all works on SBCL. Now, I also used strace on the rlwrap process and found that it was doing a select() (as it should), was being told by the kernel that there was input, tried to read one character from its tty, and got an I/O error. Then, I remembered that CCL somehow has a thread that processes input in the background. Which means that asdf-tools should probably be using single- threaded- ccl. Sigh.