From: Anko Painting Date: 2009-01-28T09:18:07+09:00 Subject: [ruby-core:21619] [Bug #1064] [BUG] object allocation during garbage collection phase Bug #1064: [BUG] object allocation during garbage collection phase http://redmine.ruby-lang.org/issues/show/1064 Author: Anko Painting Status: Open, Priority: Normal Reproducible Version: 1.9.1 RC2 Hi, I'm not sure if this is a bug or not, but when i install either RC of ruby 1.9.1, and try and install hpricot, it fails in the compiling stage due to some changes to 1.9. Then I go to /usr/local/lib/ruby191/gems/1.9.1/gems/hpricot-0.6.164/ext/fast_xs/fast_xs.c and change (around line 169) tmp = array->ptr; for (i = array->len; --i >= 0; tmp++) s_len += escaped_len(NUM2INT(*tmp)); c = s = alloca(s_len + 1); tmp = array->ptr; for (i = array->len; --i >= 0; tmp++) c += escape(c, NUM2INT(*tmp)); to tmp = RARRAY_PTR(array); for (i = RARRAY_LEN(array); --i >= 0; tmp++) s_len += escaped_len(NUM2INT(*tmp)); c = s = alloca(s_len + 1); tmp = RARRAY_PTR(array); for (i = RARRAY_LEN(array); --i >= 0; tmp++) c += escape(c, NUM2INT(*tmp)); to fix the differences (new union) in this structure, and goto /usr/local/lib/ruby191/gems/1.9.1/gems/hpricot-0.6.164 and run sudo rake191 clobber sudo rake191 I get (in /usr/local/lib/ruby191/gems/1.9.1/gems/hpricot-0.6.164) gcc -I. -I/usr/local/include/ruby191-1.9.1/i686-linux -I/usr/local/include/ruby191-1.9.1/ruby/backward -I/usr/local/include/ruby191-1.9.1 -I. -D_FILE_OFFSET_BITS=64 -fPIC -O2 -g -Wall -Wno-parentheses -o hpricot_scan.o -c hpricot_scan.c hpricot_scan.rl: In function ���hpricot_scan���: hpricot_scan.rl:259: warning: control reaches end of non-void function 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/bin/ragel make: Nothing to be done for `all'. mkdir -p lib/i686-linux cp ext/fast_xs/fast_xs.so lib/i686-linux /usr/local/bin/ruby191 -Ilib:test:lib/i686-linux "/usr/local/lib/ruby191/1.9.1/rake/rake_test_loader.rb" "test/test_paths.rb" "test/test_alter.rb" "test/test_builder.rb" "test/test_preserved.rb" "test/test_parser.rb" "test/test_xml.rb" Loaded suite /usr/local/lib/ruby191/1.9.1/rake/rake_test_loader Started ....E.E...E.EE/usr/local/lib/ruby191/gems/1.9.1/gems/hpricot-0.6.164/lib/hpricot/parse.rb:68: [BUG] Segmentation fault ruby 1.9.1p0 (2009-01-20 revision 21700) [i686-linux] -- control frame ---------- c:0024 p:---- s:0111 b:0111 l:000110 d:000110 CFUNC :downcase c:0023 p:0026 s:0108 b:0107 l:000067 d:000106 BLOCK /usr/local/lib/ruby191/gems/1.9.1/gems/hpricot-0.6.164/lib/hpricot/parse.rb:68 c:0022 p:---- s:0101 b:0101 l:000100 d:000100 FINISH c:0021 p:---- s:0099 b:0099 l:000094 d:000098 IFUNC :each c:0020 p:---- s:0097 b:0097 l:000096 d:000096 CFUNC :each c:0019 p:---- s:0095 b:0095 l:000094 d:000094 CFUNC :inject c:0018 p:0284 s:0091 b:0089 l:000067 d:000088 BLOCK /usr/local/lib/ruby191/gems/1.9.1/gems/hpricot-0.6.164/lib/hpricot/parse.rb:68 c:0017 p:---- s:0074 b:0074 l:000073 d:000073 FINISH c:0016 p:---- s:0072 b:0072 l:000071 d:000071 CFUNC :scan c:0015 p:0263 s:0068 b:0068 l:000067 d:000067 METHOD /usr/local/lib/ruby191/gems/1.9.1/gems/hpricot-0.6.164/lib/hpricot/parse.rb:52 c:0014 p:0031 s:0057 b:0056 l:000055 d:000055 METHOD /usr/local/lib/ruby191/gems/1.9.1/gems/hpricot-0.6.164/lib/hpricot/parse.rb:15 c:0013 p:0026 s:0050 b:0050 l:000049 d:000049 METHOD /usr/local/lib/ruby191/gems/1.9.1/gems/hpricot-0.6.164/test/test_parser.rb:159 c:0012 p:0041 s:0045 b:0045 l:000044 d:000044 METHOD /usr/local/lib/ruby191/1.9.1/minitest/unit.rb:436 c:0011 p:0096 s:0039 b:0039 l:000019 d:000038 BLOCK /usr/local/lib/ruby191/1.9.1/minitest/unit.rb:415 c:0010 p:---- s:0033 b:0033 l:000032 d:000032 FINISH c:0009 p:---- s:0031 b:0031 l:000030 d:000030 CFUNC :each c:0008 p:0026 s:0028 b:0028 l:000019 d:000027 BLOCK /usr/local/lib/ruby191/1.9.1/minitest/unit.rb:409 c:0007 p:---- s:0025 b:0025 l:000024 d:000024 FINISH c:0006 p:---- s:0023 b:0023 l:000022 d:000022 CFUNC :each c:0005 p:0080 s:0020 b:0020 l:000019 d:000019 METHOD /usr/local/lib/ruby191/1.9.1/minitest/unit.rb:408 c:0004 p:0153 s:0015 b:0015 l:000014 d:000014 METHOD /usr/local/lib/ruby191/1.9.1/minitest/unit.rb:388 c:0003 p:0041 s:0007 b:0007 l:0002e4 d:000006 BLOCK /usr/local/lib/ruby191/1.9.1/minitest/unit.rb:329 c:0002 p:---- s:0004 b:0004 l:000003 d:000003 FINISH c:0001 p:0000 s:0002 b:0002 l:001204 d:001204 TOP
:17 --------------------------- /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 ruby 1.9.1p0 (2009-01-20 revision 21700) [i686-linux] -- control frame ---------- c:0024 p:---- s:0111 b:0111 l:000110 d:000110 CFUNC :downcase c:0023 p:0026 s:0108 b:0107 l:000067 d:000106 BLOCK /usr/local/lib/ruby191/gems/1.9.1/gems/hpricot-0.6.164/lib/hpricot/parse.rb:68 c:0022 p:---- s:0101 b:0101 l:000100 d:000100 FINISH c:0021 p:---- s:0099 b:0099 l:000094 d:000098 IFUNC :each c:0020 p:---- s:0097 b:0097 l:000096 d:000096 CFUNC :each c:0019 p:---- s:0095 b:0095 l:000094 d:000094 CFUNC :inject c:0018 p:0284 s:0091 b:0089 l:000067 d:000088 BLOCK /usr/local/lib/ruby191/gems/1.9.1/gems/hpricot-0.6.164/lib/hpricot/parse.rb:68 c:0017 p:---- s:0074 b:0074 l:000073 d:000073 FINISH c:0016 p:---- s:0072 b:0072 l:000071 d:000071 CFUNC :scan c:0015 p:0263 s:0068 b:0068 l:000067 d:000067 METHOD /usr/local/lib/ruby191/gems/1.9.1/gems/hpricot-0.6.164/lib/hpricot/parse.rb:52 c:0014 p:0031 s:0057 b:0056 l:000055 d:000055 METHOD /usr/local/lib/ruby191/gems/1.9.1/gems/hpricot-0.6.164/lib/hpricot/parse.rb:15 c:0013 p:0026 s:0050 b:0050 l:000049 d:000049 METHOD /usr/local/lib/ruby191/gems/1.9.1/gems/hpricot-0.6.164/test/test_parser.rb:159 c:0012 p:0041 s:0045 b:0045 l:000044 d:000044 METHOD /usr/local/lib/ruby191/1.9.1/minitest/unit.rb:436 c:0011 p:0096 s:0039 b:0039 l:000019 d:000038 BLOCK /usr/local/lib/ruby191/1.9.1/minitest/unit.rb:415 c:0010 p:---- s:0033 b:0033 l:000032 d:000032 FINISH c:0009 p:---- s:0031 b:0031 l:000030 d:000030 CFUNC :each c:0008 p:0026 s:0028 b:0028 l:000019 d:000027 BLOCK /usr/local/lib/ruby191/1.9.1/minitest/unit.rb:409 c:0007 p:---- s:0025 b:0025 l:000024 d:000024 FINISH c:0006 p:---- s:0023 b:0023 l:000022 d:000022 CFUNC :each c:0005 p:0080 s:0020 b:0020 l:000019 d:000019 METHOD /usr/local/lib/ruby191/1.9.1/minitest/unit.rb:408 c:0004 p:0153 s:0015 b:0015 l:000014 d:000014 METHOD /usr/local/lib/ruby191/1.9.1/minitest/unit.rb:388 c:0003 p:0041 s:0007 b:0007 l:0002e4 d:000006 BLOCK /usr/local/lib/ruby191/1.9.1/minitest/unit.rb:329 c:0002 p:---- s:0004 b:0004 l:000003 d:000003 FINISH c:0001 p:0000 s:0002 b:0002 l:001204 d:001204 TOP
:17 --------------------------- -- Ruby level backtrace information----------------------------------------- /usr/local/lib/ruby191/gems/1.9.1/gems/hpricot-0.6.164/lib/hpricot/parse.rb:68:in `downcase' /usr/local/lib/ruby191/gems/1.9.1/gems/hpricot-0.6.164/lib/hpricot/parse.rb:68:in `block (2 levels) in make' /usr/local/lib/ruby191/gems/1.9.1/gems/hpricot-0.6.164/lib/hpricot/parse.rb:68:in `each' /usr/local/lib/ruby191/gems/1.9.1/gems/hpricot-0.6.164/lib/hpricot/parse.rb:68:in `inject' /usr/local/lib/ruby191/gems/1.9.1/gems/hpricot-0.6.164/lib/hpricot/parse.rb:68:in `block in make' /usr/local/lib/ruby191/gems/1.9.1/gems/hpricot-0.6.164/lib/hpricot/parse.rb:52:in `scan' /usr/local/lib/ruby191/gems/1.9.1/gems/hpricot-0.6.164/lib/hpricot/parse.rb:52:in `make' /usr/local/lib/ruby191/gems/1.9.1/gems/hpricot-0.6.164/lib/hpricot/parse.rb:15:in `parse' /usr/local/lib/ruby191/gems/1.9.1/gems/hpricot-0.6.164/test/test_parser.rb:159:in `test_abs_xpath' /usr/local/lib/ruby191/1.9.1/minitest/unit.rb:436:in `run' /usr/local/lib/ruby191/1.9.1/minitest/unit.rb:415:in `block (2 levels) in run_test_suites' /usr/local/lib/ruby191/1.9.1/minitest/unit.rb:409:in `each' /usr/local/lib/ruby191/1.9.1/minitest/unit.rb:409:in `block in run_test_suites' /usr/local/lib/ruby191/1.9.1/minitest/unit.rb:408:in `each' /usr/local/lib/ruby191/1.9.1/minitest/unit.rb:408:in `run_test_suites' /usr/local/lib/ruby191/1.9.1/minitest/unit.rb:388:in `run' /usr/local/lib/ruby191/1.9.1/minitest/unit.rb:329:in `block in autorun' -- C level backtrace information ------------------------------------------- 0x812cad8 /usr/local/bin/ruby191(rb_vm_bugreport+0x48) [0x812cad8] 0x815ae81 /usr/local/bin/ruby191 [0x815ae81] 0x815aef8 /usr/local/bin/ruby191(rb_bug+0x28) [0x815aef8] 0x80658e1 /usr/local/bin/ruby191(rb_newobj+0xc1) [0x80658e1] 0x813711c /usr/local/bin/ruby191 [0x813711c] 0x8137372 /usr/local/bin/ruby191 [0x8137372] 0x81378d2 /usr/local/bin/ruby191(rb_ary_new+0x12) [0x81378d2] 0x811c649 /usr/local/bin/ruby191(rb_make_backtrace+0x29) [0x811c649] 0x812caba /usr/local/bin/ruby191(rb_vm_bugreport+0x2a) [0x812caba] 0x815ae81 /usr/local/bin/ruby191 [0x815ae81] 0x815aef8 /usr/local/bin/ruby191(rb_bug+0x28) [0x815aef8] 0x80d88a6 /usr/local/bin/ruby191 [0x80d88a6] 0xb8056410 [0xb8056410] 0x80de8e2 /usr/local/bin/ruby191(st_free_table+0x12) [0x80de8e2] 0x8064f65 /usr/local/bin/ruby191 [0x8064f65] 0x8065859 /usr/local/bin/ruby191(rb_newobj+0x39) [0x8065859] 0x80e8801 /usr/local/bin/ruby191(rb_str_dup+0x21) [0x80e8801] 0x80ea732 /usr/local/bin/ruby191 [0x80ea732] 0x8128826 /usr/local/bin/ruby191 [0x8128826] 0x8121f2f /usr/local/bin/ruby191 [0x8121f2f] 0x8125c14 /usr/local/bin/ruby191 [0x8125c14] 0x812626c /usr/local/bin/ruby191 [0x812626c] 0x81265da /usr/local/bin/ruby191(rb_yield_values+0x7a) [0x81265da] 0x8156090 /usr/local/bin/ruby191 [0x8156090] 0x8126439 /usr/local/bin/ruby191 [0x8126439] 0x8126699 /usr/local/bin/ruby191(rb_yield+0x49) [0x8126699] 0x8067615 /usr/local/bin/ruby191 [0x8067615] 0x8067e62 /usr/local/bin/ruby191 [0x8067e62] 0x80de9a6 /usr/local/bin/ruby191(st_foreach+0xa6) [0x80de9a6] 0x8069b92 /usr/local/bin/ruby191 [0x8069b92] 0x805cae1 /usr/local/bin/ruby191(rb_ensure+0x81) [0x805cae1] 0x8068f92 /usr/local/bin/ruby191(rb_hash_foreach+0x42) [0x8068f92] 0x80693bb /usr/local/bin/ruby191 [0x80693bb] 0x811ca7e /usr/local/bin/ruby191 [0x811ca7e] 0x811f531 /usr/local/bin/ruby191 [0x811f531] 0x811a698 /usr/local/bin/ruby191(rb_iterate+0x138) [0x811a698] 0x811a74f /usr/local/bin/ruby191(rb_block_call+0x3f) [0x811a74f] 0x8156d02 /usr/local/bin/ruby191 [0x8156d02] 0x811abfd /usr/local/bin/ruby191 [0x811abfd] 0x8128826 /usr/local/bin/ruby191 [0x8128826] 0x8121f2f /usr/local/bin/ruby191 [0x8121f2f] 0x8125c14 /usr/local/bin/ruby191 [0x8125c14] 0x812626c /usr/local/bin/ruby191 [0x812626c] 0x8126699 /usr/local/bin/ruby191(rb_yield+0x49) [0x8126699] 0xb7d72230 /usr/local/lib/ruby191/gems/1.9.1/gems/hpricot-0.6.164/lib/i686-linux/hpricot_scan.so(rb_yield_tokens+0x100) [0xb7d72230] 0xb7d745b9 /usr/local/lib/ruby191/gems/1.9.1/gems/hpricot-0.6.164/lib/i686-linux/hpricot_scan.so(hpricot_scan+0x2369) [0xb7d745b9] 0x8128826 /usr/local/bin/ruby191 [0x8128826] 0x8121f2f /usr/local/bin/ruby191 [0x8121f2f] 0x8125c14 /usr/local/bin/ruby191 [0x8125c14] 0x812626c /usr/local/bin/ruby191 [0x812626c] 0x8126699 /usr/local/bin/ruby191(rb_yield+0x49) [0x8126699] 0x8136ef1 /usr/local/bin/ruby191(rb_ary_each+0x41) [0x8136ef1] 0x8128826 /usr/local/bin/ruby191 [0x8128826] 0x8121f2f /usr/local/bin/ruby191 [0x8121f2f] 0x8125c14 /usr/local/bin/ruby191 [0x8125c14] 0x812626c /usr/local/bin/ruby191 [0x812626c] 0x8126699 /usr/local/bin/ruby191(rb_yield+0x49) [0x8126699] 0x8136ef1 /usr/local/bin/ruby191(rb_ary_each+0x41) [0x8136ef1] 0x8128826 /usr/local/bin/ruby191 [0x8128826] 0x8121f2f /usr/local/bin/ruby191 [0x8121f2f] 0x8125c14 /usr/local/bin/ruby191 [0x8125c14] 0x8127fcd /usr/local/bin/ruby191(vm_invoke_proc+0x35d) [0x8127fcd] 0x805fc17 /usr/local/bin/ruby191(rb_proc_call+0x47) [0x805fc17] 0x805d78a /usr/local/bin/ruby191(rb_call_end_proc+0x1a) [0x805d78a] 0x805e62f /usr/local/bin/ruby191(rb_exec_end_proc+0x1cf) [0x805e62f] 0x805e6a7 /usr/local/bin/ruby191 [0x805e6a7] 0x805e82b /usr/local/bin/ruby191(ruby_cleanup+0x8b) [0x805e82b] 0x805ea3e /usr/local/bin/ruby191(ruby_run_node+0x4e) [0x805ea3e] 0x805bec0 /usr/local/bin/ruby191(main+0x60) [0x805bec0] 0xb7e5f685 /lib/tls/i686/cmov/libc.so.6(__libc_start_main+0xe5) [0xb7e5f685] 0x805bdc1 /usr/local/bin/ruby191 [0x805bdc1] [NOTE] You may encounter a bug of Ruby interpreter. Bug reports are welcome. For details: http://www.ruby-lang.org/bugreport.html Aborted rake aborted! Command failed with status (134): [/usr/local/bin/ruby191 -Ilib:test:lib/i686...] (See full trace by running task with --trace) hopefully this is a real bug - I have limited c debugging skills and ruby internals knowledge. ---------------------------------------- http://redmine.ruby-lang.org