Category Archives: Uncategorized
SBCL: Testsuites Cannot Prevent All Possible Bugs
On OS X, SBCL as of 1.3.14 can’t sleep after fork. The following simple program exits with an error.
(require 'sb-posix) (let ((pid (sb-posix:fork))) (if (= 0 pid) (progn (format t "Child: Sleeping for 10 seconds.~%") (sleep 10) (format t "Child: I woke up.~%")) (format t "Parent, exiting.~%")))
When the above script is run on OS X, it fails with the weird error we see below. Note that it works perfectly on Linux.
% sbcl --script sleep.cl Parent, exiting. Child: Sleeping for 10 seconds. fatal error encountered in SBCL pid 16145: (ipc/send) invalid destination port
The point of this, is that there is no reasonable way a testsuite will catch this kind of a bug. Testsuites, no matter how comprehensive, will never prevent bugs 100%. At most, they prevent the same bug from reappearing.
Hopefully the SBCL team will fix this bug soon.