I have an application which uses a combination of DEFINE-CONDITION, ERROR and HANDLER-CASE to handle certain exceptional situations. The call sequence basically looks like this:
(when loading the file:)
(define-condition model-error (error) ())
(defun foo1 (arg) (if arg (error 'model-error) 3))
(defun foo2 (arg) (handler-case (foo1 arg) (model-error () 0.0d0))
and then, from different threads:
(foo2 <some value or NIL>)
When I do this in a single-threaded application all goes well. When I do this in a multi threaded application with a single calculation (lisp) thread, all goes well as well. When I do this in a multi threaded application with multiple calculation threads (lisp), I get a NullPointerException somewhere deep in our CLOS code...
Has anybody experienced the same?
Bye,
Erik.