https://bugs.ruby-lang.org/
https://bugs.ruby-lang.org/favicon.ico?1711330511
2009-01-28T19:01:51Z
Ruby Issue Tracking System
Ruby master - Bug #1064: [BUG] object allocation during garbage collection phase
https://bugs.ruby-lang.org/issues/1064?journal_id=2779
2009-01-28T19:01:51Z
yugui (Yuki Sonoda)
yugui@yugui.jp
<ul><li><strong>Target version</strong> set to <i>1.9.1</i></li></ul><p>=begin</p>
<p>=end</p>
Ruby master - Bug #1064: [BUG] object allocation during garbage collection phase
https://bugs.ruby-lang.org/issues/1064?journal_id=2825
2009-01-31T00:04:01Z
yugui (Yuki Sonoda)
yugui@yugui.jp
<ul><li><strong>Target version</strong> changed from <i>1.9.1</i> to <i>1.9.2</i></li><li><strong>ruby -v</strong> set to <i>-</i></li></ul><p>=begin</p>
<p>=end</p>
Ruby master - Bug #1064: [BUG] object allocation during garbage collection phase
https://bugs.ruby-lang.org/issues/1064?journal_id=2830
2009-01-31T01:08:51Z
authorNari (Narihiro Nakamura)
authorNari@gmail.com
<ul></ul><p>=begin<br>
Hi.</p>
<p>It did not reappear in my environment.</p>
<p>--- start ---<br>
/usr/local/lib/ruby-1.9.1_rc2/gems/1.9.1/gems/hpricot-0.6.164% ruby-1.9.1_rc2 -v<br>
ruby 1.9.1p0 (2009-01-20 revision 21700) [i686-linux]</p>
<p>/usr/local/lib/ruby-1.9.1_rc2/gems/1.9.1/gems/hpricot-0.6.164% sudo rake-1.9.1_rc2<br>
(in /usr/local/lib/ruby-1.9.1_rc2/gems/1.9.1/gems/hpricot-0.6.164)<br>
fatal: Not a git repository<br>
checking for main() in -lc... yes<br>
creating Makefile<br>
gcc -shared -o hpricot_scan.so hpricot_scan.o hpricot_gram.o -L. -L/usr/local/lib -Wl,-R/usr/local/lib -L. -rdynamic -Wl,-export-dynamic -lc -lpthread -lrt -ldl -lcrypt -lm -lc<br>
mkdir -p lib/i686-linux<br>
cp ext/hpricot_scan/hpricot_scan.so lib/i686-linux<br>
Using ragel version: 6.2, location: /usr/local/bin/ragel<br>
checking for stdio.h... yes<br>
creating Makefile<br>
gcc -shared -o fast_xs.so fast_xs.o -L. -L/usr/local/lib -Wl,-R/usr/local/lib -L. -rdynamic -Wl,-export-dynamic -lpthread -lrt -ldl -lcrypt -lm -lc<br>
mkdir -p lib/i686-linux<br>
cp ext/fast_xs/fast_xs.so lib/i686-linux<br>
/usr/local/bin/ruby-1.9.1_rc2 -Ilib:test:lib/i686-linux "/usr/local/lib/ruby-1.9.1_rc2/1.9.1/rake/rake_test_loader.rb" "test/test_alter.rb" "test/test_parser.rb" "test/test_xml.rb" "test/test_preserved.rb" "test/test_builder.rb" "test/test_paths.rb"<br>
Loaded suite /usr/local/lib/ruby-1.9.1_rc2/1.9.1/rake/rake_test_loader<br>
Started<br>
....E.E...E.EE*** glibc detected *** /usr/local/bin/ruby-1.9.1_rc2: munmap_chunk(): invalid pointer: 0x08458a38 ***<br>
======= Backtrace: =========<br>
/lib/tls/i686/cmov/libc.so.6(cfree+0x1bb)[0xb7e2a61b]<br>
/usr/local/bin/ruby-1.9.1_rc2(st_clear+0x3c)[0x80d973c]<br>
/usr/local/bin/ruby-1.9.1_rc2(st_free_table+0x12)[0x80d9782]<br>
/usr/local/bin/ruby-1.9.1_rc2[0x8064b7a]<br>
/usr/local/bin/ruby-1.9.1_rc2(rb_newobj+0x39)[0x8064f99]<br>
/usr/local/bin/ruby-1.9.1_rc2[0x80e011d]<br>
/usr/local/lib/ruby-1.9.1_rc2/gems/1.9.1/gems/hpricot-0.6.164/lib/i686-linux/hpricot_scan.so(hpricot_scan+0x78fc)[0xb7ba6aac]<br>
/usr/local/bin/ruby-1.9.1_rc2[0x8113976]<br>
/usr/local/bin/ruby-1.9.1_rc2[0x8115a3f]<br>
/usr/local/bin/ruby-1.9.1_rc2[0x811a23a]<br>
/usr/local/bin/ruby-1.9.1_rc2[0x811a864]<br>
/usr/local/bin/ruby-1.9.1_rc2(rb_yield+0x47)[0x811b167]<br>
/usr/local/bin/ruby-1.9.1_rc2(rb_ary_each+0x41)[0x812a851]<br>
/usr/local/bin/ruby-1.9.1_rc2[0x8113976]<br>
/usr/local/bin/ruby-1.9.1_rc2[0x8115a3f]<br>
/usr/local/bin/ruby-1.9.1_rc2[0x811a23a]<br>
/usr/local/bin/ruby-1.9.1_rc2[0x811a864]<br>
/usr/local/bin/ruby-1.9.1_rc2(rb_yield+0x47)[0x811b167]<br>
/usr/local/bin/ruby-1.9.1_rc2(rb_ary_each+0x41)[0x812a851]<br>
/usr/local/bin/ruby-1.9.1_rc2[0x8113976]<br>
/usr/local/bin/ruby-1.9.1_rc2[0x8115a3f]<br>
/usr/local/bin/ruby-1.9.1_rc2[0x811a23a]<br>
/usr/local/bin/ruby-1.9.1_rc2[0x811a864]<br>
/usr/local/bin/ruby-1.9.1_rc2(vm_invoke_proc+0x81)[0x811ac21]<br>
/usr/local/bin/ruby-1.9.1_rc2(rb_proc_call+0x47)[0x805f867]<br>
/usr/local/bin/ruby-1.9.1_rc2(rb_call_end_proc+0x1a)[0x805dd3a]<br>
/usr/local/bin/ruby-1.9.1_rc2(rb_exec_end_proc+0x12f)[0x805dadf]<br>
/usr/local/bin/ruby-1.9.1_rc2[0x805dbd7]<br>
/usr/local/bin/ruby-1.9.1_rc2(ruby_cleanup+0x8c)[0x805e50c]<br>
/usr/local/bin/ruby-1.9.1_rc2(ruby_run_node+0x4a)[0x805e6ea]<br>
/usr/local/bin/ruby-1.9.1_rc2(main+0x60)[0x805be10]<br>
/lib/tls/i686/cmov/libc.so.6(__libc_start_main+0xe0)[0xb7dd1450]<br>
/usr/local/bin/ruby-1.9.1_rc2[0x805bd41]<br>
======= Memory map: ========<br>
08048000-08197000 r-xp 00000000 08:01 3899659 /usr/local/bin/ruby-1.9.1_rc2<br>
08197000-0819a000 rw-p 0014f000 08:01 3899659 /usr/local/bin/ruby-1.9.1_rc2<br>
0819a000-08643000 rw-p 0819a000 00:00 0 [heap]<br>
b7a7c000-b7b0c000 rw-p b7b0e000 00:00 0<br>
b7b9e000-b7baf000 r-xp 00000000 08:01 3993424 /usr/local/lib/ruby-1.9.1_rc2/gems/1.9.1/gems/hpricot-0.6.164/lib/i686-linux/hpricot_scan.so<br>
b7baf000-b7bb0000 rw-p 00011000 08:01 3993424 /usr/local/lib/ruby-1.9.1_rc2/gems/1.9.1/gems/hpricot-0.6.164/lib/i686-linux/hpricot_scan.so<br>
b7bb0000-b7bb2000 r-xp 00000000 08:01 3976509 /usr/local/lib/ruby-1.9.1_rc2/1.9.1/i686-linux/enc/encdb.so<br>
b7bb2000-b7bb3000 rw-p 00001000 08:01 3976509 /usr/local/lib/ruby-1.9.1_rc2/1.9.1/i686-linux/enc/encdb.so<br>
b7bb3000-b7bb4000 ---p b7bb3000 00:00 0<br>
b7bb4000-b7c38000 rw-p b7bb4000 00:00 0<br>
b7c38000-b7c3f000 r--s 00000000 08:01 3835065 /usr/lib/gconv/gconv-modules.cache<br>
b7c3f000-b7cc0000 r--p 00000000 08:01 3851102 /usr/lib/locale/ja_JP.utf8/LC_CTYPE<br>
b7cc0000-b7db9000 r--p 00000000 08:01 3833945 /usr/lib/locale/locale-archive<br>
b7db9000-b7dbb000 rw-p b7db9000 00:00 0<br>
b7dbb000-b7f04000 r-xp 00000000 08:01 3710981 /lib/tls/i686/cmov/libc-2.7.so<br>
b7f04000-b7f05000 r--p 00149000 08:01 3710981 /lib/tls/i686/cmov/libc-2.7.so<br>
b7f05000-b7f07000 rw-p 0014a000 08:01 3710981 /lib/tls/i686/cmov/libc-2.7.so<br>
b7f07000-b7f0a000 rw-p b7f07000 00:00 0<br>
b7f0a000-b7f2d000 r-xp 00000000 08:01 3710985 /lib/tls/i686/cmov/libm-2.7.so<br>
b7f2d000-b7f2f000 rw-p 00023000 08:01 3710985 /lib/tls/i686/cmov/libm-2.7.so<br>
b7f2f000-b7f38000 r-xp 00000000 08:01 3710983 /lib/tls/i686/cmov/libcrypt-2.7.so<br>
b7f38000-b7f3a000 rw-p 00008000 08:01 3710983 /lib/tls/i686/cmov/libcrypt-2.7.so<br>
b7f3a000-b7f61000 rw-p b7f3a000 00:00 0<br>
b7f61000-b7f63000 r-xp 00000000 08:01 3710984 /lib/tls/i686/cmov/libdl-2.7.so<br>
b7f63000-b7f65000 rw-p 00001000 08:01 3710984 /lib/tls/i686/cmov/libdl-2.7.so<br>
b7f65000-b7f66000 rw-p b7f65000 00:00 0<br>
b7f66000-b7f6d000 r-xp 00000000 08:01 3710997 /lib/tls/i686/cmov/librt-2.7.so<br>
b7f6d000-b7f6f000 rw-p 00006000 08:01 3710997 /lib/tls/i686/cmov/librt-2.7.so<br>
b7f6f000-b7f83000 r-xp 00000000 08:01 3710995 /lib/tls/i686/cmov/libpthread-2.7.so<br>
b7f83000-b7f85000 rw-p 00013000 08:01 3710995 /lib/tls/i686/cmov/libpthread-2.7.so<br>
b7f85000-b7f87000 rw-p b7f85000 00:00 0<br>
b7f8b000-b7f95000 r-xp 00000000 08:01 1314305 /lib/libgcc_s.so.1<br>
b7f95000-b7f96000 rw-p 0000a000 08:01 1314305 /lib/libgcc_s.so.1<br>
b7f96000-b7f97000 r-xp 00000000 08:01 3993425 /usr/local/lib/ruby-1.9.1_rc2/gems/1.9.1/gems/hpricot-0.6.164/lib/i686-linux/fast_xs.so<br>
b7f97000-b7f98000 rw-p 00000000 08:01 3993425 /usr/local/lib/ruby-1.9.1_rc2/gems/1.9.1/gems/hpricot-0.6.164/lib/i686-linux/fast_xs.so<br>
b7f98000-b7f9a000 r-xp 00000000 08:01 3976525 /usr/local/lib/ruby-1.9.1_rc2/1.9.1/i686-linux/enc/trans/transdb.so<br>
b7f9a000-b7f9b000 rw-p 00001000 08:01 3976525 /usr/local/lib/ruby-1.9.1_rc2/1.9.1/i686-linux/enc/trans/transdb.so<br>
b7f9b000-b7f9d000 rw-p b7f9b000 00:00 0<br>
b7f9d000-b7f9e000 r-xp b7f9d000 00:00 0 [vdso]<br>
b7f9e000-b7fb8000 r-xp 00000000 08:01 3525119 /lib/ld-2.7.so<br>
b7fb8000-b7fba000 rw-p 00019000 08:01 3525119 /lib/ld-2.7.so<br>
bf9fb000-bfa10000 rw-p bffeb000 00:00 0 [stack]<br>
Aborted<br>
rake aborted!<br>
Command failed with status (134): [/usr/local/bin/ruby-1.9.1_rc2 -Ilib:test:l...]</p>
<p>(See full trace by running task with --trace)</p>
<p>--- end ---</p>
<p>I read stack trace.<br>
I think there are two causes in this bug.</p>
<ol>
<li>hpricot bug</li>
</ol>
<p>I think this piece of bug trace is hpricot library bug.</p>
<p>/usr/local/lib/ruby191/gems/1.9.1/gems/hpricot-0.6.164/lib/hpricot/parse.rb:68: [BUG] Segmentation fault</p>
<p>I don't know this bug. sorry :(</p>
<ol start="2">
<li>ruby interpreter bug</li>
</ol>
<p>I think this piece of bug trace is ruby interpreter bug.</p>
<p>/usr/local/lib/ruby191/gems/1.9.1/gems/hpricot-0.6.164/lib/hpricot/parse.rb:68: [BUG] object allocation during garbage collection phase</p>
<p>When called rb_bug() in garbage_collection(), this bug trace seems to occur.<br>
The attached patch will fix the problem.</p>
<p>Thanks.</p>
<a name="Index-gcc"></a>
<h1 >Index: gc.c<a href="#Index-gcc" class="wiki-anchor">¶</a></h1>
<p>--- gc.c (revision 21875)<br>
+++ gc.c (working copy)<br>
@@ -1026,7 +1026,7 @@<br>
rb_objspace_t *objspace = &rb_objspace;<br>
#endif</p>
<ul>
<li>if (during_gc) {</li>
</ul>
<ul>
<li>
<p>if (!dont_gc && during_gc) {<br>
dont_gc = 1;<br>
during_gc = 0;<br>
rb_bug("object allocation during garbage collection phase");<br>
Index: vm_dump.c<br>
===================================================================<br>
--- vm_dump.c (revision 21875)<br>
+++ vm_dump.c (working copy)<br>
@@ -570,6 +570,7 @@<br>
{<br>
VALUE bt;</p>
</li>
<li>
<p>rb_gc_disable();<br>
if (GET_THREAD()->vm) {<br>
int i;<br>
SDR();<br>
@@ -610,4 +611,5 @@<br>
}<br>
}<br>
#endif</p>
</li>
<li>
<p>rb_gc_enable();<br>
}</p>
</li>
</ul>
<p>=end</p>
Ruby master - Bug #1064: [BUG] object allocation during garbage collection phase
https://bugs.ruby-lang.org/issues/1064?journal_id=2831
2009-01-31T08:20:45Z
wanabe (_ wanabe)
s.wanabe@gmail.com
<ul></ul><p>=begin<br>
in hpricot_scan:</p>
<p>buf = ALLOC_N(char, buffer_size);<br>
...<br>
char *p = buf + have, *pe;<br>
int len, space = buffer_size - have;<br>
...<br>
str = rb_str_substr( port, nread, space );<br>
...<br>
memcpy( p, RSTRING_PTR(str), RSTRING_LEN(str) );</p>
<p>It causes buffer-overflow if "port" includes multibyte characters.<br>
=end</p>
Ruby master - Bug #1064: [BUG] object allocation during garbage collection phase
https://bugs.ruby-lang.org/issues/1064?journal_id=2843
2009-02-02T08:57:06Z
nobu (Nobuyoshi Nakada)
nobu@ruby-lang.org
<ul><li><strong>Status</strong> changed from <i>Open</i> to <i>Closed</i></li><li><strong>% Done</strong> changed from <i>0</i> to <i>100</i></li></ul><p>=begin<br>
Applied in changeset r21934.<br>
=end</p>