Issue #1064 has been updated by Narihiro Nakamura.


Hi.

It did not reappear in my environment.

--- start ---
/usr/local/lib/ruby-1.9.1_rc2/gems/1.9.1/gems/hpricot-0.6.164% ruby-1.9.1_rc2 -v                                                                                      
ruby 1.9.1p0 (2009-01-20 revision 21700) [i686-linux]

/usr/local/lib/ruby-1.9.1_rc2/gems/1.9.1/gems/hpricot-0.6.164% sudo rake-1.9.1_rc2
(in /usr/local/lib/ruby-1.9.1_rc2/gems/1.9.1/gems/hpricot-0.6.164)
fatal: Not a git repository
checking for main() in -lc... yes
creating Makefile
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
mkdir -p lib/i686-linux
cp ext/hpricot_scan/hpricot_scan.so lib/i686-linux
Using ragel version: 6.2, location: /usr/local/bin/ragel
checking for stdio.h... yes
creating Makefile
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
mkdir -p lib/i686-linux
cp ext/fast_xs/fast_xs.so lib/i686-linux
/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"
Loaded suite /usr/local/lib/ruby-1.9.1_rc2/1.9.1/rake/rake_test_loader
Started
....E.E...E.EE*** glibc detected *** /usr/local/bin/ruby-1.9.1_rc2: munmap_chunk(): invalid pointer: 0x08458a38 ***
======= Backtrace: =========
/lib/tls/i686/cmov/libc.so.6(cfree+0x1bb)[0xb7e2a61b]
/usr/local/bin/ruby-1.9.1_rc2(st_clear+0x3c)[0x80d973c]
/usr/local/bin/ruby-1.9.1_rc2(st_free_table+0x12)[0x80d9782]
/usr/local/bin/ruby-1.9.1_rc2[0x8064b7a]
/usr/local/bin/ruby-1.9.1_rc2(rb_newobj+0x39)[0x8064f99]
/usr/local/bin/ruby-1.9.1_rc2[0x80e011d]
/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]
/usr/local/bin/ruby-1.9.1_rc2[0x8113976]
/usr/local/bin/ruby-1.9.1_rc2[0x8115a3f]
/usr/local/bin/ruby-1.9.1_rc2[0x811a23a]
/usr/local/bin/ruby-1.9.1_rc2[0x811a864]
/usr/local/bin/ruby-1.9.1_rc2(rb_yield+0x47)[0x811b167]
/usr/local/bin/ruby-1.9.1_rc2(rb_ary_each+0x41)[0x812a851]
/usr/local/bin/ruby-1.9.1_rc2[0x8113976]
/usr/local/bin/ruby-1.9.1_rc2[0x8115a3f]
/usr/local/bin/ruby-1.9.1_rc2[0x811a23a]
/usr/local/bin/ruby-1.9.1_rc2[0x811a864]
/usr/local/bin/ruby-1.9.1_rc2(rb_yield+0x47)[0x811b167]
/usr/local/bin/ruby-1.9.1_rc2(rb_ary_each+0x41)[0x812a851]
/usr/local/bin/ruby-1.9.1_rc2[0x8113976]
/usr/local/bin/ruby-1.9.1_rc2[0x8115a3f]
/usr/local/bin/ruby-1.9.1_rc2[0x811a23a]
/usr/local/bin/ruby-1.9.1_rc2[0x811a864]
/usr/local/bin/ruby-1.9.1_rc2(vm_invoke_proc+0x81)[0x811ac21]
/usr/local/bin/ruby-1.9.1_rc2(rb_proc_call+0x47)[0x805f867]
/usr/local/bin/ruby-1.9.1_rc2(rb_call_end_proc+0x1a)[0x805dd3a]
/usr/local/bin/ruby-1.9.1_rc2(rb_exec_end_proc+0x12f)[0x805dadf]
/usr/local/bin/ruby-1.9.1_rc2[0x805dbd7]
/usr/local/bin/ruby-1.9.1_rc2(ruby_cleanup+0x8c)[0x805e50c]
/usr/local/bin/ruby-1.9.1_rc2(ruby_run_node+0x4a)[0x805e6ea]
/usr/local/bin/ruby-1.9.1_rc2(main+0x60)[0x805be10]
/lib/tls/i686/cmov/libc.so.6(__libc_start_main+0xe0)[0xb7dd1450]
/usr/local/bin/ruby-1.9.1_rc2[0x805bd41]
======= Memory map: ========
08048000-08197000 r-xp 00000000 08:01 3899659    /usr/local/bin/ruby-1.9.1_rc2
08197000-0819a000 rw-p 0014f000 08:01 3899659    /usr/local/bin/ruby-1.9.1_rc2
0819a000-08643000 rw-p 0819a000 00:00 0          [heap]
b7a7c000-b7b0c000 rw-p b7b0e000 00:00 0
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
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
b7bb0000-b7bb2000 r-xp 00000000 08:01 3976509    /usr/local/lib/ruby-1.9.1_rc2/1.9.1/i686-linux/enc/encdb.so
b7bb2000-b7bb3000 rw-p 00001000 08:01 3976509    /usr/local/lib/ruby-1.9.1_rc2/1.9.1/i686-linux/enc/encdb.so
b7bb3000-b7bb4000 ---p b7bb3000 00:00 0
b7bb4000-b7c38000 rw-p b7bb4000 00:00 0
b7c38000-b7c3f000 r--s 00000000 08:01 3835065    /usr/lib/gconv/gconv-modules.cache
b7c3f000-b7cc0000 r--p 00000000 08:01 3851102    /usr/lib/locale/ja_JP.utf8/LC_CTYPE
b7cc0000-b7db9000 r--p 00000000 08:01 3833945    /usr/lib/locale/locale-archive
b7db9000-b7dbb000 rw-p b7db9000 00:00 0
b7dbb000-b7f04000 r-xp 00000000 08:01 3710981    /lib/tls/i686/cmov/libc-2.7.so
b7f04000-b7f05000 r--p 00149000 08:01 3710981    /lib/tls/i686/cmov/libc-2.7.so
b7f05000-b7f07000 rw-p 0014a000 08:01 3710981    /lib/tls/i686/cmov/libc-2.7.so
b7f07000-b7f0a000 rw-p b7f07000 00:00 0
b7f0a000-b7f2d000 r-xp 00000000 08:01 3710985    /lib/tls/i686/cmov/libm-2.7.so
b7f2d000-b7f2f000 rw-p 00023000 08:01 3710985    /lib/tls/i686/cmov/libm-2.7.so
b7f2f000-b7f38000 r-xp 00000000 08:01 3710983    /lib/tls/i686/cmov/libcrypt-2.7.so
b7f38000-b7f3a000 rw-p 00008000 08:01 3710983    /lib/tls/i686/cmov/libcrypt-2.7.so
b7f3a000-b7f61000 rw-p b7f3a000 00:00 0
b7f61000-b7f63000 r-xp 00000000 08:01 3710984    /lib/tls/i686/cmov/libdl-2.7.so
b7f63000-b7f65000 rw-p 00001000 08:01 3710984    /lib/tls/i686/cmov/libdl-2.7.so
b7f65000-b7f66000 rw-p b7f65000 00:00 0
b7f66000-b7f6d000 r-xp 00000000 08:01 3710997    /lib/tls/i686/cmov/librt-2.7.so
b7f6d000-b7f6f000 rw-p 00006000 08:01 3710997    /lib/tls/i686/cmov/librt-2.7.so
b7f6f000-b7f83000 r-xp 00000000 08:01 3710995    /lib/tls/i686/cmov/libpthread-2.7.so
b7f83000-b7f85000 rw-p 00013000 08:01 3710995    /lib/tls/i686/cmov/libpthread-2.7.so
b7f85000-b7f87000 rw-p b7f85000 00:00 0
b7f8b000-b7f95000 r-xp 00000000 08:01 1314305    /lib/libgcc_s.so.1
b7f95000-b7f96000 rw-p 0000a000 08:01 1314305    /lib/libgcc_s.so.1
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
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
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
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
b7f9b000-b7f9d000 rw-p b7f9b000 00:00 0
b7f9d000-b7f9e000 r-xp b7f9d000 00:00 0          [vdso]
b7f9e000-b7fb8000 r-xp 00000000 08:01 3525119    /lib/ld-2.7.so
b7fb8000-b7fba000 rw-p 00019000 08:01 3525119    /lib/ld-2.7.so
bf9fb000-bfa10000 rw-p bffeb000 00:00 0          [stack]
Aborted
rake aborted!
Command failed with status (134): [/usr/local/bin/ruby-1.9.1_rc2 -Ilib:test:l...]

(See full trace by running task with --trace)

--- end ---

I read stack trace.
I think there are two causes in this bug.

1. hpricot bug

I think this piece of bug trace is hpricot library bug.

 /usr/local/lib/ruby191/gems/1.9.1/gems/hpricot-0.6.164/lib/hpricot/parse.rb:68: [BUG] Segmentation fault

I don't know this bug. sorry :(

2. ruby interpreter bug

I think this piece of bug trace is ruby interpreter bug.

 /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

When called rb_bug() in garbage_collection(), this bug trace seems to occur.
The attached patch will fix the problem.

Thanks.

Index: gc.c
===================================================================
--- gc.c        (revision 21875)
+++ gc.c        (working copy)
@@ -1026,7 +1026,7 @@
     rb_objspace_t *objspace = &rb_objspace;
 #endif
 
-    if (during_gc) {
+    if (!dont_gc && during_gc) {
        dont_gc = 1;
        during_gc = 0;
        rb_bug("object allocation during garbage collection phase");
Index: vm_dump.c
===================================================================
--- vm_dump.c   (revision 21875)
+++ vm_dump.c   (working copy)
@@ -570,6 +570,7 @@
 {
     VALUE bt;
 
+    rb_gc_disable();
     if (GET_THREAD()->vm) {
        int i;
        SDR();
@@ -610,4 +611,5 @@
        }
     }
 #endif
+    rb_gc_enable();
 }

----------------------------------------
http://redmine.ruby-lang.org/issues/show/1064

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