1.0.37.45: Remove bogus test (:CONDITION-VARIABLE :WAIT-MULTIPLE).
authorTobias C. Rittweiler <trittweiler@users.sourceforge.net>
Wed, 7 Apr 2010 07:06:48 +0000 (07:06 +0000)
committerTobias C. Rittweiler <trittweiler@users.sourceforge.net>
Wed, 7 Apr 2010 07:06:48 +0000 (07:06 +0000)
  * 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
tests/threads.impure.lisp
version.lisp-expr

diff --git a/NEWS b/NEWS
index 0b9501a..0ec6cd6 100644 (file)
--- 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
index 21422d7..a56f01f 100644 (file)
 |     (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"))
index 636b3eb..459e38c 100644 (file)
@@ -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"