From fb9fedeb08bddeb0208051659ce1556d9c07ac18 Mon Sep 17 00:00:00 2001 From: "Tobias C. Rittweiler" Date: Wed, 7 Apr 2010 07:06:48 +0000 Subject: [PATCH] 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#. --- NEWS | 2 +- tests/threads.impure.lisp | 25 ------------------------- version.lisp-expr | 2 +- 3 files changed, 2 insertions(+), 27 deletions(-) diff --git a/NEWS b/NEWS index 0b9501a..0ec6cd6 100644 --- a/NEWS +++ b/NEWS @@ -1,7 +1,7 @@ ;;;; -*- coding: utf-8; fill-column: 78 -*- changes relative to sbcl-1.0.37: * INCOMPATIBLE CHANGE: Thread names are now restricted to SIMPLE-STRINGs - like for any other thread-related datastructure (MUTEX, etc.) + like for any other thread-related datastructure, MUTEX, etc. (lp#547095) * DEPRECATION: the SB-QUEUE contrib was merged into the SB-CONCURRENCY contrib module. New code should depend on SB-CONCURRENCY, not SB-QUEUE. * DEPRECATION: SB-THEAD:GET-MUTEX was deprecated in favor of diff --git a/tests/threads.impure.lisp b/tests/threads.impure.lisp index 21422d7..a56f01f 100644 --- a/tests/threads.impure.lisp +++ b/tests/threads.impure.lisp @@ -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")) diff --git a/version.lisp-expr b/version.lisp-expr index 636b3eb..459e38c 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -17,4 +17,4 @@ ;;; checkins which aren't released. (And occasionally for internal ;;; versions, especially for internal versions off the main CVS ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".) -"1.0.37.44" +"1.0.37.45" -- 1.7.10.4