[#27919] 1.8.4 Preview2 検証 — "URABE Shyouhei aka. mput" <root@...>

卜部です。

33 messages 2005/12/01

[#27997] 1.8.4 documents? — "URABE Shyouhei aka. mput" <root@...>

卜部です。

22 messages 2005/12/12
[#28017] Re: 1.8.4 documents? — Koji Arai <jca02266@...> 2005/12/13

新井です。

[#28082] ruby_1_8 Segmentation fault on Cygwin — yanagi@...

柳田です。

13 messages 2005/12/21
[#28083] Re: ruby_1_8 Segmentation fault on Cygwin — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/12/21

山本です。

[#28140] ia64-hpux11.23/socket.sl: this executable file can't load extension libraries (LoadError) — Tanaka Akira <akr@...17n.org>

HP-UX で HP aC++/ANSI C を使って作った ruby で、openssl や drb のテストをすると、

34 messages 2005/12/27
[#28141] Re: ia64-hpux11.23/socket.sl: this executable file can't load extension libraries (LoadError) — WATANABE Tetsuya <Tetsuya.WATANABE@...> 2005/12/28

渡辺哲也です。

[#28142] Re: ia64-hpux11.23/socket.sl: this executable file can't load extension libraries (LoadError) — Tanaka Akira <akr@...17n.org> 2005/12/28

In article <200512280307.jBS37nnj005909@pbsg500.nifty.com>,

[#28147] Re: ia64-hpux11.23/socket.sl: this executable file can't load extension libraries (LoadError) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/12/28

山本です。

[#28149] Re: ia64-hpux11.23/socket.sl: this executable file can't load extension libraries (LoadError) — Tanaka Akira <akr@...17n.org> 2005/12/28

In article <20051228210640.13C71A10.ocean@m2.ccsnet.ne.jp>,

[#28151] Re: ia64-hpux11.23/socket.sl: this executable file can't load extension libraries (LoadError) — WATANABE Tetsuya <Tetsuya.WATANABE@...> 2005/12/29

渡辺哲也です。

[#28152] Re: ia64-hpux11.23/socket.sl: this executable file can't load extensionlibraries (LoadError) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/12/29

山本です。

[#28153] Re: ia64-hpux11.23/socket.sl: this executable file can't load extensionlibraries (LoadError) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/12/29

山本です。

[#28154] thread based generator.rb — Tanaka Akira <akr@...17n.org> 2005/12/29

In article <20051229114438.44D19F00.ocean@m2.ccsnet.ne.jp>,

[ruby-dev:28196] Re: test_each(TC_SyncEnumerator) fails.

From: "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
Date: 2005-12-31 02:36:44 UTC
List: ruby-dev #28196
山本です。

>>> とあったので試しに Mutex で実装してみたのですが、これで直ったりしますか?
>>
>>症状は消えました。
>>
>>コードは読んでないんで正しいかどうかはわかりませんが。
>
>私も正しいかどうか自信がありません(汗)とりあえずコミットしますが、
>おかしいところがありましたら直してください。

すみません、こんなスクリプトを書いたらすぐに再現しました。

require "generator"

def assert_equal(x, y)
  raise "error" unless x == y
end

loop do

  r = ['a'..'f', 1..10, 10..20]
  ra = r.map { |x| x.to_a }
  a = (0...(ra.map {|x| x.size}.max)).map { |i| ra.map { |x| x[i] } }

  s = SyncEnumerator.new(*r)

  i = 0
  s.each { |x|
    assert_equal(a[i], x)
    i += 1
    break if i == 3
  }

  assert_equal(3, i)

  i = 0
  s.each { |x|
    assert_equal(a[i], x)
    i += 1
  }

  assert_equal(a.size, i)

end

それでスタックトレースを見て、rewind が呼ばれているのを見てわかりました。

Index: lib/generator.rb
===================================================================
RCS file: /src/ruby/lib/generator.rb,v
retrieving revision 1.11
diff -u -p -r1.11 generator.rb
--- lib/generator.rb	30 Dec 2005 10:17:39 -0000	1.11
+++ lib/generator.rb	31 Dec 2005 02:35:47 -0000
@@ -152,7 +152,10 @@ class Generator
 
   # Rewinds the generator.
   def rewind
-    initialize(nil, &@block) if @index.nonzero?
+    if @index.nonzero? # needed?
+      @loop_thread.kill
+      initialize(nil, &@block)
+    end
     self
   end
 
---
 
GC とか、前のほうのメソッドばかり見ていて、rewind は盲点でした。
修正しておきます。


In This Thread

Prev Next