[#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:30008] Re: [Bug #3212] ConditionVariable may become inconsistent for interrupted threads

From: Yusuke ENDOH <mame@...>
Date: 2010-05-05 00:03:43 UTC
List: ruby-core #30008
Hi,

2010/5/5 Sylvain Joyeux <redmine@ruby-lang.org>:
> Doing that is not enough. CV should definitely maintain @waiter so that no thread that is *not* in #wait is not included in it.
>
> Another example: using Thread#raise. Your fix will *not* work, since we don't loop.


Ruby's ConditionVariable API obviously copies C's.
So an exception is not considered.

If you use an exception, you have to care it yourself, such as,
by adding rescue clause:

  a = Thread.start do
    mutex.synchronize do
      ...
      exc = nil
      until enc || (... "your condition" ...)
        begin
          cv.wait(mutex)
        rescue Exception
          exc = $!
        end
      end
      raise exc if exc
      ...
    end
  end

ConditionVariable API design is not Ruby-way at all.
It can be more elegant, though it is very difficult to design.
Anyway, it is a feature request.

At heart, I agree with you.  But the fix you suggested in
[ruby-core:29961] adds new critical section.  It looks benign,
but I'm not sure it is truly benign.  I'm afraid whether it has
unexpected harmful effects, such as deadlock or big performance
degradation.
Now is under release management, so I don't want to accept such
a fix without assurance.

Could anyone who is familiar with multi-thread programming check
the fix in [ruby-core:29961] and assure it has no problem?

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

In This Thread