[#45085] [ruby-trunk - Feature #5839][Open] Proposal: Bitmap Marking GC — Narihiro Nakamura <authorNari@...>
11 messages
2012/01/04
[#45086] Re: [ruby-trunk - Feature #5839][Open] Proposal: Bitmap Marking GC
— SASADA Koichi <ko1@...>
2012/01/04
ささだです.
[#45087] Re: [ruby-trunk - Feature #5839][Open] Proposal: Bitmap Marking GC
— Yukihiro Matsumoto <matz@...>
2012/01/04
まつもと ゆきひろです
[#45088] Re: [ruby-trunk - Feature #5839][Open] Proposal: Bitmap Marking GC
— SASADA Koichi <ko1@...>
2012/01/04
ささだです.
[#45089] Re: [ruby-trunk - Feature #5839][Open] Proposal: Bitmap Marking GC
— Narihiro Nakamura <authornari@...>
2012/01/05
nariです。
[#45090] Re: [ruby-trunk - Feature #5839][Open] Proposal: Bitmap Marking GC
— SASADA Koichi <ko1@...>
2012/01/05
ささだです.
[#45110] [ruby-trunk - Feature #5861][Assigned] String#version_compare — Yui NARUSE <naruse@...>
5 messages
2012/01/07
[#45135] [ruby-trunk - Bug #5896][Open] object representaion in rb_enc_vsprintf() — Nobuyoshi Nakada <nobu@...>
6 messages
2012/01/15
[ruby-dev:45091] [ruby-trunk - Bug #5768] TestRequire#test_race_exceptionで競合するケースがまだある
From:
Yui NARUSE <naruse@...>
Date:
2012-01-05 01:58:54 UTC
List:
ruby-dev #45091
Issue #5768 has been updated by Yui NARUSE.
とりあえず r34163 で mutex->cond_waiting を用いるのをやめ、RBASIC()->flags に待っているスレッドの数を保存するように変更しました。
これで、問題自体は直ったはずですし、現在まで再現していません。
他の方法で実装し直したいと仰っていたので、小崎さんにアサインされたままにはしておきます。
----------------------------------------
Bug #5768: TestRequire#test_race_exceptionで競合するケースがまだある
https://bugs.ruby-lang.org/issues/5768
Author: Yui NARUSE
Status: Assigned
Priority: Normal
Assignee: Motohiro KOSAKI
Category: core
Target version: 2.0.0
ruby -v: -
まだrequireで競合するケースが残っています。
現在のテストだと確率的にしか起きませんが、以下の通り変更すると確実に起きるようになります。
diff --git a/test/ruby/test_require.rb b/test/ruby/test_require.rb
index 9186a6f..262a5ef 100644
--- a/test/ruby/test_require.rb
+++ b/test/ruby/test_require.rb
@@ -352,7 +352,7 @@ class TestRequire < Test::Unit::TestCase
TestRequire.scratch << :pre
Thread.pass until t2 = TestRequire.scratch[1]
Thread.pass until t2.stop?
-open(__FILE__, "w") {|f| f.puts "TestRequire.scratch << :post"}
+open(__FILE__, "w") {|f| f.puts "TestRequire.scratch << :post"; f.puts "t1,t2=TestRequire.scratch[1, 2];if Thread.current == t2; Thread.pass until t1.stopped?; end"}
raise "con1"
EOS
tmp.close
@@ -364,6 +364,7 @@ raise "con1"
t2_res = nil
t1 = Thread.new do
+ scratch << t1
begin
require(path)
rescue RuntimeError
@@ -389,8 +390,8 @@ raise "con1"
assert_nothing_raised(ThreadError, bug5754) {t1.join}
assert_nothing_raised(ThreadError, bug5754) {t2.join}
- assert_equal(true, (t1_res ^ t2_res), bug5754)
- assert_equal([:pre, t2, :post, :t2, :t1], scratch, bug5754)
+ assert_equal(true, (t1_res ^ t2_res), bug5754 + " t1:#{t1_res} t2:#{t2_res}")
+ assert_equal([:pre, t1, t2, :post, :t2, :t1], scratch, bug5754)
ensure
tmp.close(true) if tmp
end
--
http://redmine.ruby-lang.org