Bug #372

Rinda has a race condition

Added by Anonymous almost 7 years ago. Updated almost 4 years ago.

[ruby-dev:35659]
Status:Closed
Priority:Low
Assignee:Masatoshi Seki
ruby -v:- Backport:

Description

=begin
咳といいます。

1.8系のtuplespace.rbを修正した覚えがあるのですが、
1.8系でもやっぱりだめでしょうか?

どちらにせよ、1.8のtuplespace.rbを1.9へ
ciしようと思いますので、
よかったらあとでもう一度ためしてもらえますか?
#いまビルド中なのでしばらく待ってください

On 2008/07/24, at 22:22, Yusuke ENDOH wrote:

調べていて気づいたのですが、以下のように Rinda に遅延
を発生させると

Index: lib/rinda/tuplespace.rb

--- lib/rinda/tuplespace.rb (revision 18194)
+++ lib/rinda/tuplespace.rb (working copy)
@@ -570,6 +570,7 @@
keep_clean
sleep(@period)
end
+ sleep 3
end
end

以下で deadlock detected になります。1.8 でも同
様です。

似たようなところで遅延させたんですが、こんな感じです。

Index: lib/rinda/tuplespace.rb
===================================================================
--- lib/rinda/tuplespace.rb (revision 18222)
+++ lib/rinda/tuplespace.rb (working copy)
@@ -622,6 +622,7 @@
break unless need_keeper?
keep_clean
end
+sleep(3)
end
end
end

$ ./ruby -rrinda/tuplespace -e '
ts = Rinda::TupleSpace.new(1)
ts.take([:foo, :bar], 1) rescue nil
sleep 2
ts.take([:foo, :bar], 1)
'
/usr/local/lib/ruby/1.8/rinda/tuplespace.rb:503:in move':
Rinda::RequestExpiredError (Rinda::RequestExpiredError)
from /usr/local/lib/ruby/1.8/monitor.rb:242:in
synchronize'
from /usr/local/lib/ruby/1.8/rinda/tuplespace.rb:488:in move'
from /usr/local/lib/ruby/1.8/rinda/tuplespace.rb:479:in
take'
from -e:5
=end


Related issues

Related to Ruby trunk - Bug #377: Rinda has a race condition Rejected
Related to Ruby trunk - Bug #4160: test_core_03_notify(Rinda::TupleSpaceProxyTest) が失敗する Closed 12/15/2010
Duplicates Ruby trunk - Bug #376: Rinda has a race condition Rejected

Associated revisions

Revision 32717
Added by Masatoshi Seki almost 4 years ago

the code that depends on timing. [Bug #372] [Bug #4160]

Revision 32717
Added by Masatoshi Seki almost 4 years ago

the code that depends on timing. [Bug #372] [Bug #4160]

Revision 33196
Added by Masatoshi Seki over 3 years ago

  • test/rinda/test_rinda.rb (test_core_03_notify): Fixed test failures [Ruby 1.9 - Bug #372]

Revision 33196
Added by Masatoshi Seki over 3 years ago

  • test/rinda/test_rinda.rb (test_core_03_notify): Fixed test failures [Ruby 1.9 - Bug #372]

History

#1 Updated by Yusuke Endoh almost 7 years ago

=begin
遠藤です。

2008/07/26 4:15 Masatoshi SEKI :

1.8系のtuplespace.rbを修正した覚えがあるのですが、
1.8系でもやっぱりだめでしょうか?

すみません、1.8.5 とかすごく古い 1.8 を見ていました。

どちらにせよ、1.8のtuplespace.rbを1.9へciしようと思いますので、
よかったらあとでもう一度ためしてもらえますか?
#いまビルド中なのでしばらく待ってください

確認しました。
make test-all TESTS=rinda では 0F0E でしたが、make test-all だと
2 つ Failure が出ました。

1) Failure:
test_core_03_notify(Rinda::TupleSpaceProxyTest)
[/home/mame/work/ruby19/ruby/test/rinda/test_rinda.rb:397]:
<[0, 3]> expected but was
<[1, 2]>.

2) Failure:
test_has_expires_eh(TestTupleBag)
[/home/mame/work/ruby19/ruby/test/rinda/test_tuplebag.rb:137]:
expected but was
.

また、この start_keeper だと keeper が死なないと思うのですが、
それはちょっとまずくないでしょうか。

$ ./ruby -e '
at_exit { sleep 5; p Thread.list }
require "test/rinda/test_rinda.rb"
'

Loaded suite -e
Started
.........................
Finished in 1.050015839 seconds.

25 tests, 292 assertions, 0 failures, 0 errors
[#, #,
#, #,
#, #,
#, #,
#, #,
#, #,
#, #,
#, #,
#, #,
#, #]

--
Yusuke ENDOH mame@tsg.ne.jp

=end

#2 Updated by Yusuke Endoh almost 7 years ago

=begin

遠藤です。

2008/07/26 4:15 Masatoshi SEKI :

1.8系のtuplespace.rbを修正した覚えがあるのですが、
1.8系でもやっぱりだめでしょうか?

すみません、1.8.5 とかすごく古い 1.8 を見ていました。

どちらにせよ、1.8のtuplespace.rbを1.9へciしようと思いますので、
よかったらあとでもう一度ためしてもらえますか?
#いまビルド中なのでしばらく待ってください

確認しました。
make test-all TESTS=rinda では 0F0E でしたが、make test-all だと
2 つ Failure が出ました。

1) Failure:
test_core_03_notify(Rinda::TupleSpaceProxyTest)
[/home/mame/work/ruby19/ruby/test/rinda/test_rinda.rb:397]:
<[0, 3]> expected but was
<[1, 2]>.

2) Failure:
test_has_expires_eh(TestTupleBag)
[/home/mame/work/ruby19/ruby/test/rinda/test_tuplebag.rb:137]:
expected but was
.

また、この start_keeper だと keeper が死なないと思うのですが、
それはちょっとまずくないでしょうか。

$ ./ruby -e '
at_exit { sleep 5; p Thread.list }
require "test/rinda/test_rinda.rb"
'

Loaded suite -e
Started
.........................
Finished in 1.050015839 seconds.

25 tests, 292 assertions, 0 failures, 0 errors
[#, #,
#, #,
#, #,
#, #,
#, #,
#, #,
#, #,
#, #,
#, #,
#, #]

--
Yusuke ENDOH mame@tsg.ne.jp

=end

#3 Updated by Yusuke Endoh almost 7 years ago

=begin

遠藤です。

2008/07/26 4:15 Masatoshi SEKI :

1.8系のtuplespace.rbを修正した覚えがあるのですが、
1.8系でもやっぱりだめでしょうか?

すみません、1.8.5 とかすごく古い 1.8 を見ていました。

どちらにせよ、1.8のtuplespace.rbを1.9へciしようと思いますので、
よかったらあとでもう一度ためしてもらえますか?
#いまビルド中なのでしばらく待ってください

確認しました。
make test-all TESTS=rinda では 0F0E でしたが、make test-all だと
2 つ Failure が出ました。

1) Failure:
test_core_03_notify(Rinda::TupleSpaceProxyTest)
[/home/mame/work/ruby19/ruby/test/rinda/test_rinda.rb:397]:
<[0, 3]> expected but was
<[1, 2]>.

2) Failure:
test_has_expires_eh(TestTupleBag)
[/home/mame/work/ruby19/ruby/test/rinda/test_tuplebag.rb:137]:
expected but was
.

また、この start_keeper だと keeper が死なないと思うのですが、
それはちょっとまずくないでしょうか。

$ ./ruby -e '
at_exit { sleep 5; p Thread.list }
require "test/rinda/test_rinda.rb"
'

Loaded suite -e
Started
.........................
Finished in 1.050015839 seconds.

25 tests, 292 assertions, 0 failures, 0 errors
[#, #,
#, #,
#, #,
#, #,
#, #,
#, #,
#, #,
#, #,
#, #,
#, #]

--
Yusuke ENDOH mame@tsg.ne.jp

=end

#4 Updated by Koichi Sasada almost 7 years ago

  • Status changed from Open to Rejected

=begin

=end

#5 Updated by Makoto Kishimoto almost 4 years ago

1) Failure:
test_core_03_notify(Rinda::TupleSpaceProxyTest)
[/home/mame/work/ruby19/ruby/test/rinda/test_rinda.rb:397]:
<[0, 3]> expected but was
<[1, 2]>.

非常にごくまれに(1回も再現できていません)trunk でもこれが起きることがあるようです。

1) Failure:
test_core_03_notify(Rinda::TupleSpaceTest) [/export/home/ksmakoto/ruby-working/ruby194/ruby-git/test/rinda/test_rinda.rb:398]:
<[0, 3]> expected but was
<[1, 2]>.

という 1F を確認しました。
FreeBSD 8.2-STABLE で r32672 です。

#6 Updated by Motohiro KOSAKI almost 4 years ago

  • Assignee set to Masatoshi Seki
  • Category set to ext
  • Status changed from Rejected to Assigned
  • Target version set to 2.0.0
  • ruby -v set to -

redmineにうまく転写されてないようですが、テストの問題とのことなので、
reopenのうえ咳さんにアサインします。

#7 Updated by Masatoshi Seki almost 4 years ago

  • Status changed from Assigned to Closed
  • % Done changed from 0 to 100

This issue was solved with changeset r32717.
, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.


the code that depends on timing. [Bug #372] [Bug #4160]

#8 Updated by Makoto Kishimoto almost 4 years ago

きしもとです

Rinda::TupleSpaceProxyTest#test_core_03_notifyが、まだ、たまにfailに
なります。

1) Failure:
test_core_03_notify(Rinda::TupleSpaceProxyTest) [/export/home/ksmakoto/ruby-working/rub
y194/ruby-git/test/rinda/test_rinda.rb:372]:
<["delete", {"message"=>"second", "name"=>"1"}]> expected but was
<["close"]>.

手元の trunk(r33066)で、
make test-all TESTS='-vn test_core_03_notify rinda/test_rinda.rb'
を10万回実行してみたところ、1384回failになり、
Rinda::TupleSpaceProxyTest#test_core_03_notify で 8回、
Rinda::TupleSpaceTest#test_core_03_notify で 11回、
刺さって(?)止まったので kill しました。

#9 Updated by Anonymous almost 4 years ago

咳といいます。

On 2011/08/27, at 13:41, KISHIMOTO, Makoto wrote:

きしもとです

Rinda::TupleSpaceProxyTest#test_core_03_notifyが、まだ、たまにfailに
なります。

1) Failure:
test_core_03_notify(Rinda::TupleSpaceProxyTest) [/export/home/ksmakoto/ruby-working/rub
y194/ruby-git/test/rinda/test_rinda.rb:372]:
<["delete", {"message"

#10 Updated by Anonymous almost 4 years ago

(2011/08/27 14:58), Masatoshi SEKI wrote:

咳といいます。

On 2011/08/27, at 13:41, KISHIMOTO, Makoto wrote:

きしもとです

Rinda::TupleSpaceProxyTest#test_core_03_notifyが、まだ、たまにfailに
なります。

1) Failure:
test_core_03_notify(Rinda::TupleSpaceProxyTest) [/export/home/ksmakoto/ruby-working/rub
y194/ruby-git/test/rinda/test_rinda.rb:372]:
<["delete", {"message"=>"second", "name"=>"1"}]> expected but was
<["close"]>.

手元の trunk(r33066)で、
make test-all TESTS='-vn test_core_03_notify rinda/test_rinda.rb'
を10万回実行してみたところ、1384回failになり、
Rinda::TupleSpaceProxyTest#test_core_03_notify で 8回、
Rinda::TupleSpaceTest#test_core_03_notify で 11回、
刺さって(?)止まったので kill しました。

そうですか...。
このテスト、もう削除したいけど、がんばんないとだめ?

咳さんがメンテされているので、咳さんの意思優先でいいと思うのですが、
参考までに理由を教えて貰えませんか。自分は無罪っぽいけど追い切れない、
とかなら、手伝うとかいう選択肢もあるのかもしれませんし。。。

刺さってるのは放置してていいのかな。というのが若干気になります

#11 Updated by Anonymous almost 4 years ago

On 2011/08/27, at 15:16, KOSAKI Motohiro wrote:

(2011/08/27 14:58), Masatoshi SEKI wrote:

咳といいます。

On 2011/08/27, at 13:41, KISHIMOTO, Makoto wrote:

きしもとです

Rinda::TupleSpaceProxyTest#test_core_03_notifyが、まだ、たまにfailに
なります。

1) Failure:
test_core_03_notify(Rinda::TupleSpaceProxyTest) [/export/home/ksmakoto/ruby-working/rub
y194/ruby-git/test/rinda/test_rinda.rb:372]:
<["delete", {"message"

Also available in: Atom PDF