From: Tobias R. <tri...@us...> - 2010-04-07 07:06:57
|
Update of /cvsroot/sbcl/sbcl/tests In directory sfp-cvsdas-3.v30.ch3.sourceforge.com:/tmp/cvs-serv23806/tests Modified Files: threads.impure.lisp Log Message: 1.0.37.45: Remove bogus test (:CONDITION-VARIABLE :WAIT-MULTIPLE). * The test was introduced in 1.0.26.4 to test against closely running waiters to cause spurious wakeups to each other. However, as has been shown in the thread "lost wakeup in condition-wait / condition-notify", feb 2010 on sbcl-devel, that optimization resulted in a possible lost wakeup case. 1.0.37.34 contained a fix against that lost wakeup case but introduced back the pessimal behaviour of waiters interfering with each other. So the test was rendered bogus. * While I'm at it, also update NEWS to tag an entry with its LP#. Index: threads.impure.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/tests/threads.impure.lisp,v retrieving revision 1.77 retrieving revision 1.78 diff -u -d -r1.77 -r1.78 --- threads.impure.lisp 3 Apr 2010 16:46:09 -0000 1.77 +++ threads.impure.lisp 7 Apr 2010 07:06:48 -0000 1.78 @@ -1019,31 +1019,6 @@ | (mp:make-process #'roomy))) |# -;;; KLUDGE: No deadlines while waiting on lutex-based condition variables. This test -;;; would just hang. -#-sb-lutex -(with-test (:name (:condition-variable :wait-multiple)) - (loop repeat 40 do - (let ((waitqueue (sb-thread:make-waitqueue :name "Q")) - (mutex (sb-thread:make-mutex :name "M")) - (failedp nil)) - (format t ".") - (finish-output t) - (let ((threads (loop repeat 200 - collect - (sb-thread:make-thread - (lambda () - (handler-case - (sb-sys:with-deadline (:seconds 0.01) - (sb-thread:with-mutex (mutex) - (sb-thread:condition-wait waitqueue - mutex) - (setq failedp t))) - (sb-sys:deadline-timeout (c) - (declare (ignore c))))))))) - (mapc #'sb-thread:join-thread threads) - (assert (not failedp)))))) - (with-test (:name (:condition-variable :notify-multiple)) (flet ((tester (notify-fun) (let ((queue (make-waitqueue :name "queue")) |