[#40298] Re: [ruby-cvs:33760] Ruby:r26545 (trunk): Wed Feb 3 10:12:09 2010 Aaron Patterson <[email protected]> — "NARUSE, Yui" <naruse@...>

成瀬です。

29 messages 2010/02/03
[#40307] Re: [ruby-cvs:33760] Ruby:r26545 (trunk): Wed Feb 3 10:12:09 2010 Aaron Patterson <[email protected]> — KOSAKI Motohiro <kosaki.motohiro@...> 2010/02/03

小崎です

[#40339] Re: [ruby-cvs:33760] Ruby:r26545 (trunk): Wed Feb 3 10:12:09 2010 Aaron Patterson <[email protected]> — Tanaka Akira <akr@...> 2010/02/07

2010年2月3日21:07 KOSAKI Motohiro <[email protected]>:

[#40345] Re: [ruby-cvs:33760] Ruby:r26545 (trunk): Wed Feb 3 10:12:09 2010 Aaron Patterson <[email protected]> — "NARUSE, Yui" <naruse@...> 2010/02/07

成瀬です。

[#40490] Re: [ruby-cvs:33760] Ruby:r26545 (trunk): Wed Feb 3 10:12:09 2010 Aaron Patterson <[email protected]> — "NARUSE, Yui" <naruse@...> 2010/02/25

成瀬です。

[#40511] Re: [ruby-cvs:33760] Ruby:r26545 (trunk): Wed Feb 3 10:12:09 2010 Aaron Patterson <[email protected]> — Aaron Patterson <aaron.patterson@...> 2010/02/27

2010/2/25 NARUSE, Yui <[email protected]>:

[#40513] Re: [ruby-cvs:33760] Ruby:r26545 (trunk): Wed Feb 3 10:12:09 2010 Aaron Patterson <[email protected]> — "U.Nakamura" <usa@...> 2010/02/27

アーロン宛

[#40317] [Bug:trunk] TCPServer#gets gets stuck — Yusuke ENDOH <mame@...>

遠藤です。

19 messages 2010/02/04
[#40371] Re: [Bug:trunk] TCPServer#gets gets stuck — Yusuke ENDOH <mame@...> 2010/02/09

遠藤です。

[#40382] [Bug:trunk] rubyspec: ObjectSpace.define_finalizer doesn't call self-referencing finalizers FAILED — Yusuke ENDOH <mame@...>

なかださんかまつもとさん

9 messages 2010/02/10

[#40418] [Feature #2746] ビルドする拡張ライブラリを configure 時に指定するための --with-exts オプション — Kenta Murata <redmine@...>

Feature #2746: ビルドする拡張ライブラリを configure 時に指定するための --with-exts オプション

11 messages 2010/02/15

[#40461] respond_to?(<protected method name>) returns true — "Akinori MUSHA" <knu@...>

 今さらかもしれませんが、 respond_to? で protected メソッドを

14 messages 2010/02/22
[#40462] Re: respond_to?(<protected method name>) returns true — Yukihiro Matsumoto <matz@...> 2010/02/23

まつもと ゆきひろです

[#40463] Re: respond_to?(<protected method name>) returns true — "Akinori MUSHA" <knu@...> 2010/02/23

At Tue, 23 Feb 2010 14:09:52 +0900,

[#40464] Re: respond_to?(<protected method name>) returns true — Yukihiro Matsumoto <matz@...> 2010/02/23

まつもと ゆきひろです

[#40467] Re: [ruby-cvs:33954] Ruby:r26739 (trunk): * ext/openssl/ossl_digest.c (GetDigestPtr): Allow to pass the — "NARUSE, Yui" <naruse@...>

成瀬です。

27 messages 2010/02/23
[#40468] Re: [ruby-cvs:33954] Ruby:r26739 (trunk): * ext/openssl/ossl_digest.c (GetDigestPtr): Allow to pass the — "Akinori MUSHA" <knu@...> 2010/02/23

At Wed, 24 Feb 2010 01:28:24 +0900,

[#40469] Re: [ruby-cvs:33954] Ruby:r26739 (trunk): * ext/openssl/ossl_digest.c (GetDigestPtr): Allow to pass the — "NARUSE, Yui" <naruse@...> 2010/02/23

(2010/02/24 1:57), Akinori MUSHA wrote:

[#40470] Re: [ruby-cvs:33954] Ruby:r26739 (trunk): * ext/openssl/ossl_digest.c (GetDigestPtr): Allow to pass the — "Akinori MUSHA" <knu@...> 2010/02/23

At Wed, 24 Feb 2010 02:07:00 +0900,

[#40472] Re: [ruby-cvs:33954] Ruby:r26739 (trunk): * ext/openssl/ossl_digest.c (GetDigestPtr): Allow to pass the — "NAKAMURA, Hiroshi" <nakahiro@...> 2010/02/23

2010/2/24 Akinori MUSHA <[email protected]>:

[#40473] Re: [ruby-cvs:33954] Ruby:r26739 (trunk): * ext/openssl/ossl_digest.c (GetDigestPtr): Allow to pass the — "Akinori MUSHA" <knu@...> 2010/02/23

At Wed, 24 Feb 2010 06:06:13 +0900,

[#40486] Re: [ruby-cvs:33954] Ruby:r26739 (trunk): * ext/openssl/ossl_digest.c (GetDigestPtr): Allow to pass the — "NAKAMURA, Hiroshi" <nakahiro@...> 2010/02/25

MjAxMC8yLzI0IEFraW5vcmkgTVVTSEEgPGtudUBpZGFlbW9ucy5vcmc+Ogo+PiAbJEIwRTlmPWhN

[#41367] Re: [ruby-cvs:33954] Ruby:r26739 (trunk): * ext/openssl/ossl_digest.c (GetDigestPtr): Allow to pass the — "NAKAMURA, Hiroshi" <nakahiro@...> 2010/05/20

2010/2/25 NAKAMURA, Hiroshi <[email protected]>:

[#41373] Re: [ruby-cvs:33954] Ruby:r26739 (trunk): * ext/openssl/ossl_digest.c (GetDigestPtr): Allow to pass the — "Akinori MUSHA" <knu@...> 2010/05/20

 長いことほとんど Ruby に時間が割けておらずすみません。

[#41518] Re: [ruby-cvs:33954] Ruby:r26739 (trunk): * ext/openssl/ossl_digest.c (GetDigestPtr): Allow to pass the — "NAKAMURA, Hiroshi" <nakahiro@...> 2010/06/03

2010/5/20 Akinori MUSHA <[email protected]>:

[#41520] Re: [ruby-cvs:33954] Ruby:r26739 (trunk): * ext/openssl/ossl_digest.c (GetDigestPtr): Allow to pass the — "NARUSE, Yui" <naruse@...> 2010/06/03

成瀬です。

[#40492] [Bug #2794] Aborted (core dumped) BUG on Ruby/DL — Takao NISHI <redmine@...>

Bug #2794: Aborted (core dumped) BUG on Ruby/DL

10 messages 2010/02/26

[ruby-dev:40390] Re: [Bug:trunk] TCPServer#gets gets stuck

From: Yusuke ENDOH <mame@...>
Date: 2010-02-11 08:14:31 UTC
List: ruby-dev #40390
遠藤です。

2010年2月11日16:46 Tanaka Akira <[email protected]>:
> 2010年2月9日22:23 Yusuke ENDOH <[email protected]>:
>>
>> といってもこのパッチで正しいかどうかはかなり自信ないので、IO
>> 周りで変とか固まるとかになったら、この件を疑ってください。
>
> test-all で失敗が増えていますね。
>
> % ./ruby -v test/ruby/test_io.rb
> ruby 1.9.2dev (2010-02-11 trunk 26640) [i686-linux]
> Loaded suite test/ruby/test_io
> Started
> ........................................................F.......F....................
> Finished in 1.087307 seconds.
>
>  1) Failure:
> test_read_error(TestIO) [test/ruby/test_io.rb:869]:
> RuntimeError expected but nothing was raised.
>
>  2) Failure:
> test_readpartial_error(TestIO) [test/ruby/test_io.rb:834]:
> RuntimeError expected but nothing was raised.
>
> 85 tests, 336 assertions, 2 failures, 0 errors, 0 skips


ああそうだ、忘れてました。それが「瑣末な問題」といったやつです。
もともとは

  $ ruby-1.9.1-p378 -e '
  r, w = IO.pipe
  s = ""
  t = Thread.new { r.read(5, s) }
  0 until s.size == 5
  s.clear
  w.write "foobarbaz"
  w.close
  t.join
  '
  -e:4:in `read': buffer string modified (RuntimeError)
          from -e:4:in `block in <main>'

のように、

- read にバッファを明示して待ち状態にし、
- バッファを modify した後で
- write したら例外が上がる、

という挙動だったのですが、以下のようにすると、このチェックは
抜けられることがあります (タイミングに依存しますが) 。

  $ ruby-1.9.1-p378 -e '
  r, w = IO.pipe
  s = ""
  w.write "foo"
  t = Thread.new { r.read(5, s) }
  0 until s.size >= 5
  p s
  s.clear
  w.write "barbaz"
  w.close
  t.join
  p s
  '
  "\x00ooba"

つまり、

- read にバッファを明示して待ち状態にし、
- read 分に満たないだけ write して (これでチェックをかわせる)
- バッファを modify した後で
- write しても例外が上がらず変なことになる (ことがある)

というわけで、このチェックには今のところ意味がないと思います。

やるとしたら、io_read の中の READ_CHECK の直後だけでチェックしても
だめで、buffer string に書こうとする直前で毎回チェックする必要が
あると思いますが、IO のパフォーマンスが下がりそうなのでそこまでする
必要があるかどうかはわかりません。


と言うわけで、反対がなければこのチェックとテストは外してしまおうと
思っています。


> まぁ、これは落ちなければいいという類の話で、いまのところ落ちていないので
> いいといえばいいのですが、危険に近づいている気はします。

なんとかできるといいんですけどねえ。

何度も言っていますが、「安全側に倒して TCPServer#gets が固まることが
あるのは仕様とする」と言ってくれるのでも私は構いません。

確かに、rubyspec の人たちも 1.8 とかで rubinius とかで固まってないの
か不思議ですよね。今度聞いときます。

-- 
Yusuke ENDOH <[email protected]>

In This Thread