[#39548] [Bug #2291] Net::FTPでソケットをオープンする前にbinary=を呼び出すと落ちる — Akira Matsuda <redmine@...>

Bug #2291: Net::FTPでソケットをオープンする前にbinary=を呼び出すと落ちる

10 messages 2009/10/27

[#39592] infinite recursive call to C function — Yusuke ENDOH <mame@...>

遠藤です。

17 messages 2009/10/30
[#39596] Re: infinite recursive call to C function — Yukihiro Matsumoto <matz@...> 2009/10/30

まつもと ゆきひろです

[#39599] Re: infinite recursive call to C function — Nobuyoshi Nakada <nobu@...> 2009/11/02

なかだです。

[#39601] Re: infinite recursive call to C function — Yukihiro Matsumoto <matz@...> 2009/11/02

まつもと ゆきひろです

[ruby-dev:39466] Re: [bug:trunk] prime and timeout

From: Tanaka Akira <akr@...>
Date: 2009-10-11 19:22:50 UTC
List: ruby-dev #39466
In article <87r5t9ak8m.fsf@fsij.org>,
  Tanaka Akira <akr@fsij.org> writes:

> てきとうに調べてみると、どうも prime が timeout で中断される
> と、それ以降に変な (素数でない) 値が生成されることがあるよう
> です。

> タイミングが関係するようなので、何も表示されなかったら中断し
> て繰り返し試してみてください。

Timeout::Error はどこでおこってもおかしくないわけですが、以
下のように prime.rb の特定の場所で Timeout::Error を発生させ
るようにすると、確実に再現します。

% svn diff lib/prime.rb 
Index: lib/prime.rb
===================================================================
--- lib/prime.rb        (revision 25297)
+++ lib/prime.rb        (working copy)
@@ -436,6 +436,7 @@
       lbound = orig_len*32
       ubound = new_len*32
       @table.fill(0xFFFF, orig_len...new_len)
+      raise Timeout::Error
       (3..Integer(Math.sqrt(ubound))).step(2) do |p|
        i, j = p.divmod(32)
        next if @table[i][j.div(2)].zero?
% ./ruby -Ilib -rtimeout -rprime -ve '
e = Prime.instance
begin
  e.each {|v| }
rescue Timeout::Error
end
p e.each {|v| break v if (2..Math.sqrt(v)).any?{|n| v%n == 0 } }
'     
ruby 1.9.2dev (2009-10-11 trunk 25297) [i686-linux]
259

ここで 259 は 7*37 なので、素数ではありません。
-- 
[田中 哲][たなか あきら][Tanaka Akira]

In This Thread

Prev Next