[#29911] [Bug #3231] Digest Does Not Build — Charlie Savage <redmine@...>

Bug #3231: Digest Does Not Build

19 messages 2010/05/01

[#29920] [Feature #3232] Loops (while/until) should return last statement value if any, like if/unless — Benoit Daloze <redmine@...>

Feature #3232: Loops (while/until) should return last statement value if any, like if/unless

9 messages 2010/05/01

[#29997] years in Time.utc — Xavier Noria <fxn@...>

Does anyone have a precise statement about the years supported by

13 messages 2010/05/04

[#30010] [Bug #3248] extension 'tk' is finding tclConfig.sh and tkConfig.sh incorrectly — Luis Lavena <redmine@...>

Bug #3248: extension 'tk' is finding tclConfig.sh and tkConfig.sh incorrectly

9 messages 2010/05/05

[#30226] [Bug #3288] Segmentation fault - activesupport-3.0.0.beta3/lib/active_support/callbacks.rb:88 — Szymon Jeż <redmine@...>

Bug #3288: Segmentation fault - activesupport-3.0.0.beta3/lib/active_support/callbacks.rb:88

10 messages 2010/05/13

[#30358] tk doesn't startup well in doze — Roger Pack <rogerdpack2@...>

Currently with 1.9.x and tk 8.5,the following occurs

12 messages 2010/05/22

[ruby-core:29967] Re: [Bug #3212] ConditionVariable may become inconsistent for interrupted threads

From: Yusuke ENDOH <mame@...>
Date: 2010-05-03 11:40:59 UTC
List: ruby-core #29967
Hi,

2010/5/3 Sylvain Joyeux <redmine@ruby-lang.org>:
> Yusuke's answer and mine apply to #3213, not to this bug.
>
> This bug is a different problem. In Yusuke's example, the following happens if 'a' gets a spurious wakeup:
>
> The CV's internal @waiters array still contains 'a'. Then, the next call to #wait() will add it again (@waiters contains 'a' two times). When a "real" wakeup happens, @waiters still has 'a' in it and the next call to #signal or #broadcast will wake 'a' up even if 'a' does not wait on the condition variable.


No, 'a' *does* wait on the CV as long as you are using CV#wait
correctly.


1) Thread 'a' gets a spurious wakeup
2) Thread 'a' evaluates your condition (predicate) and figures out
   it false (because the CV has not been signaled formally by 'b')
3) Thread 'a' waits the CV again

4) Thread 'b' call CV#signal which makes wake 'a' up


#4 cannot occur between #1 and #3 because the corresponding mutex
should be locked when calling CV#signal.


If you have any concrete problem, please elaborate it.

-- 
Yusuke Endoh <mame@tsg.ne.jp>

In This Thread