LispWorks 6.0.1 Semaphore issue
Hello!
we've had a hard time making LispWorks semaphores work.
Please consider the following code:
(defvar *sem*)
(defun test ()
   (setf *sem* (mp:make-semaphore))
   (dotimes (x 3)
     (mp:process-run-function (format nil "process ~s" x)
                              '()
                              (lambda ()
                                (loop
                                 (mp:semaphore-acquire *sem*)
                                 (mp:semaphore-release *sem*))))))
The test function should create 3 processes and allow only one to enter 
the critical section and make the other two wait.
However, after few iterations all three processes stop at 
(mp:semaphore-acquire *sem*) and are waiting for the semaphore and none 
of them continues into the critical section.
We tried to inspect the semaphore stored in *sem* and there was -1 in 
slot MP::FREE-COUNT - we believe that this slot should contain 
non-negative integers only.
We are using LispWorks 6.0.1 Personal on Windows 7 and on MacOS X.
Have you encountered such behavior? Is it possibly a bug in LispWorks?
Thank you very much for your time.
Andrew