[#33948] Schedule for the 1.8.7 release — "Akinori MUSHA" <knu@...>
Hi, developers,
[#33955] --encoding affects script encoding — sheepman <sheepman@...>
こんばんは sheepman です。
なかだです。
[#33962] Ruby1.9.0でのインタプリタ組み込みについての質問 — Masayuki Yamaguchi <Yamaguchi.Masayuki@...>
山口と申します。
[#33966] Re: [ruby-cvs:22881] Ruby:r15644 (trunk): * test/ruby/test_m17n_comb.rb (TestM17NComb::test_str_chomp): test — Tanaka Akira <akr@...>
In article <200802291457.m1TEv6nh008515@ci.ruby-lang.org>,
まつもと ゆきひろです
[#33974] Test::Unit::Collector::Dirがtest_*.rb以外集めてくれない — "Ken Date" <itacchi@...>
こんにちは、伊達です。
[#33983] Re: [ruby-cvs:22913] Re: Ruby:r15674 (trunk): * gc.c (add_heap): sort heaps array in ascending order to use — Yukihiro Matsumoto <matz@...>
まつもと ゆきひろです
In article <E1JWAV5-0001MG-9W@x61.netlab.jp>,
[#34011] Should --verbose be equal to -v ? — Yugui <yugui@...>
Yuguiです。
まつもと ゆきひろです
西山和広です。
Yuguiです。
[#34020] MurmurHash problem — Nobuyoshi Nakada <nobu@...>
なかだです。
[#34030] uint32_t — KIMURA Koichi <kimura.koichi@...>
木村です。
[#34037] Ruby performance gains on SPARC — Yukihiro Matsumoto <matz@...>
まつもと ゆきひろです
[#34067] Array#take,take_while,drop,drop_whlie — "Yusuke ENDOH" <mame@...>
遠藤と申します。
[#34068] lgamma_r requires _REENTRANT on Solaris — "Yusuke ENDOH" <mame@...>
遠藤と申します。
[#34077] 異なるエンコーディングだと同じバイト列でも==にならない件 — rubikitch@...
るびきちです。
[#34086] extend spawn to change attributes of child process. — Tanaka Akira <akr@...>
spaen, system, exec, IO.popen で、起動する子プロセスの属性を
[#34093] 拡張ライブラリ初期化中でのmodule_eval — Kouhei Sutou <kou@...>
須藤です。
[#34095] (再送) Cygwin で Resolv.getaddress が失敗する — Kouhei Yanagita <yanagi@...>
こんにちは。柳田です。
こんばんは、植田と申します。
柳田です。
[#34105] rational.rb, complex.rb and mathn.rb — Tadayoshi Funaba <tadf@...>
rational と complex が組み込みになったことで、lib/mathn.rb の意義は薄
現時点で rational.rb と complex.rb を残しているのは、それが無難だから
で、かなり選択肢を絞った叩き台です。
けいじゅ@いしつかです.
原です。
> 私も Complex の組み込みは Rational とは比較にならないくらい、仕様が決め
まつもと ゆきひろです
> Mathモジュールは伝統的にlibmのラッパーであったので、それを逸
原です。
> (1) (-8)**Rational(1,2) は複素数1.0+1.7320508*i
[#34109] LP64: date.rb:321:in `convert': integer 86400000000000 too big to convert to `int' (RangeError) — Tanaka Akira <akr@...>
LP64 なマシンで test-all が動かなくなっています。
[#34144] [質問2点] C からの定数参照 & thread switching コストの低減 — Hidetoshi NAGAI <nagai@...>
永井@知能.九工大です.
[#34158] Complex組み込み — Masahiro TANAKA <masa16.tanaka@...>
Complexが組み込みになるそうですが、これはcomplex.rbを踏襲して、
原です。
> 今までの Complex は、complex.rb にほぼ残して、たとえば Rational 成分
原です。
> そうです。Complex が難しい、という話を書いておくと、
まつもと ゆきひろです
> |僕としては、/ 演算子の振舞いについて前向きに検討してほしいです。
まつもと ゆきひろです
> ふむ。では、/ のふるまいを
まつもと ゆきひろです
> |僕は、quo がいいと思います。
まつもと ゆきひろです
> となるようですが、別の実装として、
田中です。
> 最初に言っておきますが、気を悪くされたのならすみません。
村田です.
[#34159] ruby-trunk Marshal.dump bug — nagachika <rucila@...>
nagachika と申します。
[#34163] Array#shift/unshift の高速化 — wanabe <s.wanabe@...>
ワナベと申します。
[#34189] Re: [ruby-cvs:23106] Re: Ruby:r15866 (trunk): * numeric.c (num_quo): should convert its operand to Rational. — Tadayoshi Funaba <tadf@...>
間違って送ったので、再送。
> > > Log:
[ruby-dev:33985] Re: [ruby-cvs:22913] Re: Ruby:r15674 (trunk): * gc.c (add_heap): sort heaps array in ascending order to use
In article <E1JWAV5-0001MG-9W@x61.netlab.jp>,
Yukihiro Matsumoto <matz@ruby-lang.org> writes:
> |すでにほとんどソート済みの配列にたいしてはquick sortって不利では
> |なかったかと思うのですが。というか、void*同士の減算は規格上は不
> |可では。
>
> いや、気にならないでもなかったのですが、どうせそんなに大きな
> 配列にはなりそうになかったので、効率は無視しました。実装して
> くださったのでしたら断る理由はないのでコミットしてください。
その void* の減算は現実的に問題です。
手元の環境で、その変更以降、test-all で SEGV などの奇妙な挙
動が見られるのですが、原因がその減算でした。
以下のように assert をいれて確認したのですが、
Index: gc.c
===================================================================
--- gc.c (revision 15675)
+++ gc.c (working copy)
@@ -413,12 +413,24 @@ rb_gc_unregister_address(VALUE *addr)
}
}
+#include <assert.h>
static int
heap_cmp(const void *ap, const void *bp, void *dummy)
{
const struct heaps_slot *a = ap, *b = bp;
+ int ret;
- return a->membase - b->membase;
+ ret = a->membase - b->membase;
+ if (a->membase < b->membase) {
+ assert(ret < 0);
+ }
+ if (a->membase > b->membase) {
+ assert(ret > 0);
+ }
+ if (a->membase == b->membase) {
+ assert(ret == 0);
+ }
+ return ret;
}
static void
手元の環境では、この減算で integer overflow が起きて、比較関
数として正しい値を返せていません。
Core was generated by `test/runner.rb test_gc(TestGc'.
Program terminated with signal 6, Aborted.
#0 0xb7f07410 in ?? ()
(gdb) up
#1 0xbf9eb3e8 in ?? ()
(gdb)
#2 0x00000006 in ?? ()
(gdb)
#3 0x00007d30 in ?? ()
(gdb)
#4 0xb7d7c811 in raise () from /lib/tls/i686/cmov/libc.so.6
(gdb)
#5 0xb7d7dfb9 in abort () from /lib/tls/i686/cmov/libc.so.6
(gdb)
#6 0xb7d75fbf in __assert_fail () from /lib/tls/i686/cmov/libc.so.6
(gdb)
#7 0x08062a21 in heap_cmp (ap=0x819dc20, bp=0x819dc38, dummy=0x0) at gc.c:428
428 assert(ret > 0);
(gdb) p ret
$1 = -1360121024
(gdb) p a->membase
$2 = (void *) 0xb79dc008
(gdb) p b->membase
$3 = (void *) 0x8af8cc8
(gdb) p a->membase - b->membase
$4 = -1360121024
(gdb) p a->membase > b->membase
$5 = 1
(gdb)
つまり、
a->membase が 0xb79dc008 で、
b->membase が 0x8af8cc8 ですから、
b->membase のほうが小さくて、正の値を返すべきですが、
-1360121024 という負の値を返しています。
この結果として、正しくソートが行われず、is_pointer_to_heap
の2分探索がうまく動かずに不適切に偽を返し、回収すべきでない
オブジェクトが回収され、SEGV を含むいろいろと奇妙な現象が起
こっています。
--
[田中 哲][たなか あきら][Tanaka Akira]