errors in threads corrupt terminal IO

Vibhu Mohindra vibhu.mohindra at gmail.com
Thu Aug 4 10:33:13 UTC 2016


Hi,

Is anyone aware of any reasons not to use threads in a production ABCL
program?

I'm preparing to deliver a program mostly written in Lisp, with a layer
of Java on top so Java programmers can interact with it. The Lisp code
runs a handful of daemon threads, some of which are lparallel worker
threads. I'm specifically wondering whether errors raised inside threads
will corrupt any of ABCL's internal state.

e.g. in an ABCL REPL, this corrupts the terminal:

(ql:quickload "bordeaux-threads")
(use-package "BORDEAUX-THREADS")
(make-thread #'(lambda () (error "testing")))
;now press "enter" a couple of times.

It's as though multiple threads are trying to read from the terminal,
not just write.

My program doesn't have a REPL, so if this is only a REPL problem,
that's okay. I'm wondering if it's something bigger. If anyone on this
list has used threads, and found any sort of instability because of
them, I'd love to know. I'll then rewrite my program to not use threads.

Thanks in advance,

Vibhu

----
abcl-1.3.2 on OSX
bordeaux-threads-0.8.3
----



More information about the armedbear-devel mailing list