[#23474] [BUG] rb_gc_mark(): unknown data type 0x18(0x9728508) non object — Tanaka Akira <akr@...17n.org>
先程の commit から、とあるプログラムが core を吐くようになりました。
5 messages
2004/05/07
[#23476] Re: [BUG] rb_gc_mark(): unknown data type 0x18(0x9728508) non object
— matz@... (Yukihiro Matsumoto)
2004/05/07
まつもと ゆきひろです
[#23477] Re: [BUG] rb_gc_mark(): unknown data type 0x18(0x9728508) non object
— Tanaka Akira <akr@...17n.org>
2004/05/07
In article <1083932343.892095.14210.nullmailer@picachu.netlab.jp>,
[#23480] [BUG] numeric.c (flo_to_s) broken? — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
山本です。
19 messages
2004/05/08
[#23482] Re: [BUG] numeric.c (flo_to_s) broken?
— "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
2004/05/08
山本です。
[#23483] Re: [BUG] numeric.c (flo_to_s) broken?
— "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
2004/05/08
山本です。
[#23484] Re: [BUG] numeric.c (flo_to_s) broken?
— "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
2004/05/08
山本です。
[#23485] Re: [BUG] numeric.c (flo_to_s) broken?
— "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
2004/05/08
山本です。たびたびすみません。
[#23486] Re: [BUG] numeric.c (flo_to_s) broken?
— "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
2004/05/08
山本です。
[#23499] Re: [BUG] numeric.c (flo_to_s) broken?
— "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
2004/05/14
山本です。
[#23503] Re: [BUG] numeric.c (flo_to_s) broken?
— akira yamada / やまだあきら <akira@...>
2004/05/14
[#23507] Re: [BUG] numeric.c (flo_to_s) broken?
— "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
2004/05/14
山本です。
[#23528] Re: [BUG] numeric.c (flo_to_s) broken?
— "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
2004/05/17
山本です。
[#23488] Re: [ruby-cvs] ruby, ruby/ext, ruby/lib, ruby/lib/test/unit/ui/console, ruby/test, ruby/test/drb, ruby/test/ruby, ruby/test/soap/calc: * ext/extmk.rb (extmake): skip uncompiled extensions. — MIYAMUKO Katsuyuki <k-miyamuko@...>
みやむこです。
18 messages
2004/05/11
[#23527] Re: [ruby-cvs] ruby, ruby/ext, ruby/lib, ruby/lib/test/unit/ui/console,ruby/test, ruby/test/drb, ruby/test/ruby, ruby/test/soap/calc: * ext/extmk.rb(extmake): skip uncompiled extensions.
— nobu.nakada@...
2004/05/17
なかだです。
[#23537] Re: [ruby-cvs] ruby, ruby/ext, ruby/lib, ruby/lib/test/unit/ui/console,ruby/test, ruby/test/drb, ruby/test/ruby, ruby/test/soap/calc: * ext/extmk.rb(extmake): skip uncompiled extensions.
— MIYAMUKO Katsuyuki <k-miyamuko@...>
2004/05/18
みやむこです。
[#23538] Re: [ruby-cvs] ruby, ruby/ext, ruby/lib, ruby/lib/test/unit/ui/console,ruby/test,ruby/test/drb, ruby/test/ruby, ruby/test/soap/calc: * ext/extmk.rb(extmake):skip uncompiled extensions.
— nobu.nakada@...
2004/05/19
なかだです。
[#23539] Re: [ruby-cvs] ruby, ruby/ext, ruby/lib, ruby/lib/test/unit/ui/console,ruby/test,ruby/test/drb, ruby/test/ruby, ruby/test/soap/calc: * ext/extmk.rb(extmake):skip uncompiled extensions.
— MIYAMUKO Katsuyuki <k-miyamuko@...>
2004/05/19
みやむこです。
[#23543] Re: [ruby-cvs] ruby, ruby/ext, ruby/lib, ruby/lib/test/unit/ui/console,ruby/test,ruby/test/drb,ruby/test/ruby, ruby/test/soap/calc: * ext/extmk.rb(extmake):skip uncompiledextensions.
— nobu.nakada@...
2004/05/19
なかだです。
[#23546] Re: [ruby-cvs] ruby, ruby/ext, ruby/lib, ruby/lib/test/unit/ui/console,ruby/test,ruby/test/drb,ruby/test/ruby, ruby/test/soap/calc: * ext/extmk.rb(extmake):skip uncompiledextensions.
— GOTOU Yuuzou <gotoyuzo@...>
2004/05/19
In message <200405191205.i4JC5voY028322@sharui.nakada.niregi.kanuma.tochigi.jp>,
[#23547] Re: [ruby-cvs] ruby, ruby/ext, ruby/lib, ruby/lib/test/unit/ui/console,ruby/test,ruby/test/drb,ruby/test/ruby, ruby/test/soap/calc: * ext/extmk.rb(extmake):skip uncompiledextensions.
— nobu.nakada@...
2004/05/19
なかだです。
[#23555] Re: [ruby-cvs] ruby, ruby/ext, ruby/lib, ruby/lib/test/unit/ui/console,ruby/test,ruby/test/drb,ruby/test/ruby, ruby/test/soap/calc: * ext/extmk.rb(extmake):skip uncompiledextensions.
— MIYAMUKO Katsuyuki <k-miyamuko@...>
2004/05/21
みやむこです。
[#23557] Re: [ruby-cvs] ruby, ruby/ext, ruby/lib, ruby/lib/test/unit/ui/console,ruby/test,ruby/test/drb,ruby/test/ruby,ruby/test/soap/calc: * ext/extmk.rb(extmake):skip uncompiledextensions.
— nobu.nakada@...
2004/05/21
なかだです。
[#23559] Re: [ruby-cvs] ruby, ruby/ext, ruby/lib, ruby/lib/test/unit/ui/console,ruby/test,ruby/test/drb,ruby/test/ruby,ruby/test/soap/calc: * ext/extmk.rb(extmake):skip uncompiledextensions.
— MIYAMUKO Katsuyuki <k-miyamuko@...>
2004/05/21
みやむこです。
[#23561] Re: [ruby-cvs] ruby, ruby/ext, ruby/lib, ruby/lib/test/unit/ui/console,ruby/test,ruby/test/drb,ruby/test/ruby,ruby/test/soap/calc:* ext/extmk.rb(extmake):skip uncompiledextensions.
— nobu.nakada@...
2004/05/22
なかだです。
[#23489] ruby-mode.el: if defined?(super) — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
1 message
2004/05/13
[#23492] ruby 1.8.1 (2004-05-13) has 7 failures and 3 errors — akira yamada <akira@...>
19 messages
2004/05/13
[#23495] Re: ruby 1.8.1 (2004-05-13) has 7 failures and 3 errors
— "NAKAMURA, Hiroshi" <nakahiro@...>
2004/05/13
なひです。
[#23496] Re: ruby 1.8.1 (2004-05-13) has 7 failures and 3 errors
— akira yamada / やまだあきら <akira@...>
2004/05/13
[#23497] Re: ruby 1.8.1 (2004-05-13) has 7 failures and 3 errors
— nobu.nakada@...
2004/05/13
なかだです。
[#23608] ruby_1_8 (2004-05-24) has 4 failures and 1 error
— akira yamada / やまだあきら <akira@...>
2004/05/25
[#23533] Ruby2.0 spec summary around parameters and variables — SASADA Koichi <ko1@...>
ささだです。
22 messages
2004/05/17
[#23552] Re: Ruby2.0 spec summary around parameters and variables
— SASADA Koichi <ko1@...>
2004/05/20
SASADA Koichi <ko1@atdot.net> wrote :
[#23563] Re: Ruby2.0 spec summary around parameters and variables
— Minero Aoki <aamine@...>
2004/05/22
青木です。
[#23564] Re: Ruby2.0 spec summary around parameters and variables
— matz@... (Yukihiro Matsumoto)
2004/05/22
まつもと ゆきひろです
[#23568] Re: Ruby2.0 spec summary around parameters and variables
— Minero Aoki <aamine@...>
2004/05/22
青木です。
[#23569] Re: Ruby2.0 spec summary around parameters and variables
— matz@... (Yukihiro Matsumoto)
2004/05/22
まつもと ゆきひろです
[#23580] Re: Ruby2.0 spec summary around parameters and variables
— Minero Aoki <aamine@...>
2004/05/23
青木です。
[#23581] Re: Ruby2.0 spec summary around parameters and variables
— matz@... (Yukihiro Matsumoto)
2004/05/23
まつもと ゆきひろです
[#23562] HEAD's test/cvs failed on windows — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
山本です。
8 messages
2004/05/22
[#23573] Re: HEAD's test/cvs failed on windows
— "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
2004/05/23
山本です。
[#23566] try_run in ext/tcltklib/extconf.rb — WATANABE Hirofumi <eban@...>
わたなべです。
7 messages
2004/05/22
[#23572] keyword argments (Ruby2.0 spec) — Hidetoshi NAGAI <nagai@...>
永井@知能.九工大です.
14 messages
2004/05/23
[#23578] Re: keyword argments (Ruby2.0 spec)
— matz@... (Yukihiro Matsumoto)
2004/05/23
まつもと ゆきひろです
[#23584] Re: keyword argments (Ruby2.0 spec)
— Hidetoshi NAGAI <nagai@...>
2004/05/23
永井@知能.九工大です.
[#23585] Re: keyword argments (Ruby2.0 spec)
— matz@... (Yukihiro Matsumoto)
2004/05/23
まつもと ゆきひろです
[#23587] Re: keyword argments (Ruby2.0 spec)
— Hidetoshi NAGAI <nagai@...>
2004/05/24
永井@知能.九工大です.
[#23615] console freezed on test/drb/drbtest.rb : test_06_timeout (bcc32) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
山本です。
11 messages
2004/05/25
[#23625] Re: console freezed on test/drb/drbtest.rb : test_06_timeout (bcc32)
— "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
2004/05/26
山本です。
[#23626] Re: console freezed on test/drb/drbtest.rb : test_06_timeout (bcc32)
— Tanaka Akira <akr@...17n.org>
2004/05/26
In article <20040526131944.EB3E1A88.ocean@m2.ccsnet.ne.jp>,
[#23627] Re: console freezed on test/drb/drbtest.rb : test_06_timeout (bcc32)
— "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
2004/05/26
山本です。
[#23636] Re: console freezed on test/drb/drbtest.rb : test_06_timeout (bcc32)
— WATANABE Hirofumi <eban@...>
2004/05/27
わたなべです。
[#23639] Re: console freezed on test/drb/drbtest.rb : test_06_timeout (bcc32)
— "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
2004/05/27
山本です。
[#23648] Re: console freezed on test/drb/drbtest.rb : test_06_timeout (bcc32)
— WATANABE Hirofumi <eban@...>
2004/05/27
わたなべです。
[#23628] [uri.rb] non-hierarchical URI with a fragment — Masahiro Sakai (酒井政裕) <sakai@...>
さかいといいます。
6 messages
2004/05/26
[#23629] Re: [uri.rb] non-hierarchical URI with a fragment
— akira yamada / やまだあきら <akira@...>
2004/05/26
[#23630] NEWOBJ() in dfree — nobu.nakada@...
なかだです。
7 messages
2004/05/26
[#23638] SEGV eval.c: file = data->frame.node->nd_file — Tanaka Akira <akr@...17n.org>
さきほど、cvs update したところ、とあるプログラム(五月雨)が core dump
9 messages
2004/05/27
[#23641] Re: SEGV eval.c: file = data->frame.node->nd_file
— nobu.nakada@...
2004/05/27
なかだです。
[ruby-dev:23630] NEWOBJ() in dfree
From:
nobu.nakada@...
Date:
2004-05-26 11:23:08 UTC
List:
ruby-dev #23630
なかだです。
以前にも似た話があったような気もしますが、[ruby-core:02867]が気
になったので、RDATA()->dfreeの中でオブジェクトを作るとheapが壊
れるというのを調べてみました。
例えば、こういう拡張ライブラリでオブジェクトを大量に作るとSEGV
します。
-------------------- gctest.c
#include <ruby.h>
static VALUE rb_cGCTest;
static void gctest_free _((void *));
static void
gctest_free(void *ptr)
{
Data_Wrap_Struct(rb_cData, 0, 0, ptr);
}
static VALUE
gctest_alloc(VALUE klass)
{
return Data_Wrap_Struct(klass, 0, gctest_free, NULL);
}
static VALUE
gctest_init(VALUE obj, VALUE val)
{
DATA_PTR(obj) = (void *)NUM2LONG(val);
return obj;
}
void
Init_gctest(void)
{
rb_cGCTest = rb_define_class("GCTest", rb_cData);
rb_define_alloc_func(rb_cGCTest, gctest_alloc);
rb_define_method(rb_cGCTest, "initialize", gctest_init, 1);
}
--------------------
freelist == 0の状態でrb_newobj()を呼ぶとadd_heap()で新しく確保
されたslotがfreelistに連結されるけれど、そこで割り当てられたオ
ブジェクトはmark時には存在していないので全部解放されてしまい、
slotごと解放されます。しかし、freelistはそのslotをsweepし始めた
時点のものに戻されて、無効なページを指したままになる、というこ
とのようです。
* gc.c (gc_sweep): do not dispose slots allocated while sweeping.
Index: gc.c
===================================================================
RCS file: /cvs/ruby/src/ruby/gc.c,v
retrieving revision 1.176
diff -U2 -p -d -r1.176 gc.c
--- gc.c 7 May 2004 08:44:14 -0000 1.176
+++ gc.c 26 May 2004 11:09:25 -0000
@@ -312,4 +312,9 @@ static int heaps_length = 0;
static int heaps_used = 0;
+static struct {
+ RVALUE *head, *tail;
+ int count;
+} freeinglist;
+
#define HEAP_MIN_SLOTS 10000
static int heap_slots = HEAP_MIN_SLOTS;
@@ -1008,10 +1013,11 @@ gc_sweep()
final_list = deferred_final_list;
deferred_final_list = 0;
- for (i = 0; i < heaps_used; i++) {
+ for (i = 0, j = heaps_used; i < j; i++) {
int n = 0;
- RVALUE *free = freelist;
RVALUE *final = final_list;
p = heaps[i].slot; pend = p + heaps[i].limit;
+ freeinglist.head = 0;
+ freeinglist.count = 0;
while (p < pend) {
if (!(p->as.basic.flags & FL_MARK)) {
@@ -1023,11 +1029,13 @@ gc_sweep()
p->as.free.next = final_list;
final_list = p;
+ n++;
}
else {
p->as.free.flags = 0;
- p->as.free.next = freelist;
- freelist = p;
+ p->as.free.next = freeinglist.head;
+ if (!freeinglist.head) freeinglist.tail = p;
+ freeinglist.head = p;
+ freeinglist.count++;
}
- n++;
}
else if (RBASIC(p)->flags == FL_MARK) {
@@ -1041,4 +1049,5 @@ gc_sweep()
p++;
}
+ n += freeinglist.count;
if (n == heaps[i].limit && freed > FREE_MIN) {
RVALUE *pp;
@@ -1048,9 +1057,14 @@ gc_sweep()
p->as.free.flags |= FL_SINGLETON; /* freeing page mark */
}
- freelist = free; /* cancel this page from freelist */
}
else {
+ if (freeinglist.head) {
+ freeinglist.tail->as.free.next = freelist;
+ freelist = freeinglist.head;
+ }
freed += n;
}
+ freeinglist.head = 0;
+ freeinglist.count = 0;
}
if (malloc_increase > malloc_limit) {
@@ -1292,4 +1306,9 @@ rb_gc()
}
#endif
+ if (!freelist && (freelist = freeinglist.head)) {
+ freeinglist.head = 0;
+ freeinglist.count = 0;
+ return;
+ }
if (dont_gc || during_gc) {
if (!freelist) {
--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦