In reply to James Bielman: > I've seen this happen in the glX libraries before. As I understand > what's happening, SBCL enables floating point traps that are not > normally enabled in C programs, and this can mess things up when > calling foreign code. What I used to get around this was: > > ;;; Execute BODY with floating-point traps disabled. This seems to be > ;;; necessary on (at least) Linux/x86-64 where SIGFPEs are signalled > ;;; when creating making a GLX context active. > #+sbcl > (defmacro without-fp-traps (&body body) > `(sb-int:with-float-traps-masked (:invalid :divide-by-zero) > ,@body)) > > ;;; Do nothing on Lisps that don't need traps disabled. > #-sbcl > (defmacro without-fp-traps (&body body) > `(progn > ,@body))
Which does work perfectly well form me! Thanks a lot. > and a WITHOUT-FP-TRAPS form around the offending foreign function > calls. I'm not enough of a floating-point wizard to know why you'd be > getting that particular trap though... Neither am I (unfortunately). Thanks again, Nikolai -- Ich verwalte sie. Ich zähle sie und zähle sie wieder. Das ist nicht leicht. Aber ich bin ein ernsthafter Mann. \\ ---> Antoine de Saint-Exupery, "Der kleine Prinz"
pgpEtovi3o1Qv.pgp
Description: PGP signature
_______________________________________________ cffi-devel mailing list cffi-devel@common-lisp.net http://common-lisp.net/cgi-bin/mailman/listinfo/cffi-devel