[#44586] [Ruby 1.9 - Bug #5423][Open] readlineの入力待機中に端末のウィンドウサイズ変更すると入力内容が乱れる — Takuto Matsuu <matsuu@...>

8 messages 2011/10/08

[#44589] [Ruby 1.9 - Bug #5429][Open] 64ビットなFreeBSDのioctlでビット31が1なリクエストの時の不具合 — Makoto Kishimoto <redmine@...>

21 messages 2011/10/09

[#44604] Ruby 2.0 release plan — "NARUSE, Yui" <naruse@...>

ささださんが既にいくつか 2.0 関連のメールを投げていらっしゃいますが、

75 messages 2011/10/18
[#44612] Re: Ruby 2.0 release plan — Yusuke Endoh <mame@...> 2011/10/18

遠藤です。

[#44607] Re: Ruby 2.0 release plan — Yukihiro Matsumoto <matz@...> 2011/10/18

まつもと ゆきひろです

[#44618] Re: Ruby 2.0 release plan — "NARUSE, Yui" <naruse@...> 2011/10/18

(2011/10/18 16:15), Yukihiro Matsumoto wrote:

[#44619] Re: Ruby 2.0 release plan — Yukihiro Matsumoto <matz@...> 2011/10/18

まつもと ゆきひろです

[#44627] Re: Ruby 2.0 release plan — Urabe Shyouhei <shyouhei@...> 2011/10/19

On 10/18/2011 10:16 PM, Yukihiro Matsumoto wrote:

[#44629] Re: Ruby 2.0 release plan — Yukihiro Matsumoto <matz@...> 2011/10/19

まつもと ゆきひろです

[#44631] Re: Ruby 2.0 release plan — Urabe Shyouhei <shyouhei@...> 2011/10/19

たとえば2.0の次のバージョン番号はどうしますか?

[#44633] Re: Ruby 2.0 release plan — "NARUSE, Yui" <naruse@...> 2011/10/20

2011年10月20日3:31 Urabe Shyouhei <shyouhei@ruby-lang.org>:

[#44707] [ruby-trunk - Feature #5512][Open] Integer#/ の改訂 — tadayoshi funaba <redmine@...>

13 messages 2011/10/30

[#44719] [ruby-trunk - Feature #5520][Open] Numeric#exact?、Numeric#inexact? の追加 — tadayoshi funaba <redmine@...>

13 messages 2011/10/31

[ruby-dev:44599] [Ruby 1.9 - Bug #5439] r33361以降sample/test.rb:systemがFになる

From: Naohisa Goto <ngotogenome@...>
Date: 2011-10-13 06:41:28 UTC
List: ruby-dev #44599
Issue #5439 has been updated by Naohisa Goto.


> 3.いまatomicに対応してるのはgccとVCだけなので、#if defined(__SUNPRO_CC) だったら http://www.unix.com/man-page/OpenSolaris/9f/atomic_ops/  の命令つかって、atomicに動くように実装する

Solaris10ではヘッダの場所が #include <atomic.h> となっているのがOpenSolarisと違いますが、関数の仕様は同じのようです。(もっとも、Solaris10 の atomic.h を覗いたら、単に #include <sys/atomic.h> しているだけでしたが)

https://sites.google.com/a/diviware.com/unix/unix-page/solaris-page/solaris-man-pages/3c/atomic_ops

NetBSDなど他のOSにも同等/類似の関数があるようですので、configureで判別するほうが幸せかもしれません。
http://www.daemon-systems.org/man/atomic_ops.3.html

----------------------------------------
Bug #5439: r33361以降sample/test.rb:systemがFになる
http://redmine.ruby-lang.org/issues/5439

Author: Naohisa Goto
Status: Open
Priority: Normal
Assignee: 
Category: 
Target version: 
ruby -v: 1.9.x


r33361の変更により、ccでコンパイルすると、プログラム終了時にfinalizerが呼ばれなくなり、sample/test.rb:system にFが出ます。
(Solaris 10, sparc, Sun Studio 11 にて確認)

 % make test
 (中略)
 sample/test.rb:eval .............................
 sample/test.rb:system .FFFF.F.
 sample/test.rb:const .....
 (中略)
 sample/test.rb:path .......................
 sample/test.rb:gc ....make: *** [yes-test-sample] Error 1

Fが出ているテストの1つは以下です。
 test_ok(`./miniruby -e 'print "foobar"'` == 'foobar')

r33361の変更で、以下の文が2か所に追加されています。
 if (ATOMIC_SET(finalizing, 1)) return;
マクロ ATOMIC_SET() は、gccの場合(ただしWindows以外)、
 # define ATOMIC_SET(var, val)  __sync_lock_test_and_set(&(var), (val))
に展開され、http://gcc.gnu.org/onlinedocs/gcc/Atomic-Builtins.html によるとこの関数は
> returns the previous contents of *ptr. 
つまり、その変数に以前セットされていた値を返しますが、
gccおよびWIN32以外(Solarisのccなど)では、
 # define ATOMIC_SET(var, val) ((var) = (val))
に展開される、つまり、新しく代入した値を返すため、
 if (ATOMIC_SET(finalizing, 1)) return;
は、ATOMIC_SET(finalizing, 1)が必ず1を返すため、常にreturnしてしまいます。
このため、多くのfinalizerが呼ばれないままプログラムが終了し、rb_io_fptr_finalizeなどで行われているバッファのフラッシュも行われないためFになったと推測します。



-- 
http://redmine.ruby-lang.org

In This Thread

Prev Next