[#62297] Re: [ruby-cvs:52906] nari:r45760 (trunk): * gc.c (gc_after_sweep): suppress unnecessary expanding heap. — Eric Wong <normalperson@...>
nari@ruby-lang.org wrote:
7 messages
2014/05/02
[#62307] Re: [ruby-cvs:52906] nari:r45760 (trunk): * gc.c (gc_after_sweep): suppress unnecessary expanding heap.
— SASADA Koichi <ko1@...>
2014/05/03
(2014/05/03 4:41), Eric Wong wrote:
[#62402] Re: [ruby-cvs:52906] nari:r45760 (trunk): * gc.c (gc_after_sweep): suppress unnecessary expanding heap.
— Eric Wong <normalperson@...>
2014/05/05
SASADA Koichi <ko1@atdot.net> wrote:
[#62523] [ruby-trunk - Feature #9632] [PATCH 0/2] speedup IO#close with linked-list from ccan — ko1@...
Issue #9632 has been updated by Koichi Sasada.
3 messages
2014/05/11
[#62556] doxygen (Re: Re: [ruby-trunk - Feature #9632] [PATCH 0/2] speedup IO#close with linked-list from ccan) — Tanaka Akira <akr@...>
2014-05-11 8:50 GMT+09:00 Eric Wong <normalperson@yhbt.net>:
3 messages
2014/05/13
[#62727] [RFC] vm_method.c (rb_method_entry_make): avoid freed me in m_tbl — Eric Wong <normalperson@...>
rb_unlink_method_entry may cause old_me to be swept before the new
7 messages
2014/05/24
[#63039] Re: [RFC] vm_method.c (rb_method_entry_make): avoid freed me in m_tbl
— SASADA Koichi <ko1@...>
2014/06/10
Hi,
[#63077] Re: [RFC] vm_method.c (rb_method_entry_make): avoid freed me in m_tbl
— Eric Wong <normalperson@...>
2014/06/10
SASADA Koichi <ko1@atdot.net> wrote:
[#63086] Re: [RFC] vm_method.c (rb_method_entry_make): avoid freed me in m_tbl
— SASADA Koichi <ko1@...>
2014/06/11
(2014/06/11 4:47), Eric Wong wrote:
[#63087] Re: [RFC] vm_method.c (rb_method_entry_make): avoid freed me in m_tbl
— Eric Wong <normalperson@...>
2014/06/11
SASADA Koichi <ko1@atdot.net> wrote:
[#62862] [RFC] README.EXT: document rb_gc_register_mark_object — Eric Wong <normalperson@...>
Any comment on officially supporting this as part of the C API?
5 messages
2014/05/30
[ruby-core:62861] bug? duplicate symbols allowed
From:
Eric Wong <normalperson@...>
Date:
2014-05-30 19:42:22 UTC
List:
ruby-core #62861
Hi all, I ran into a problem in making the symbol table use khash[1],
but I think this is a bug in parse.y since the current implementation
allows duplicate symbols.
When making the following change to parse.y:
diff --git a/parse.y b/parse.y
--- a/parse.y
+++ b/parse.y
@@ -10429,7 +10429,9 @@ register_static_symid_str(ID id, VALUE str)
RUBY_DTRACE_SYMBOL_CREATE(RSTRING_PTR(str), rb_sourcefile(), rb_sourceline());
}
- st_add_direct(global_symbols.sym_id, (st_data_t)str, id);
+ if (st_insert(global_symbols.sym_id, (st_data_t)str, id)) {
+ rb_bug("duplicate symbol");
+ }
st_add_direct(global_symbols.id_str, id, (st_data_t)str);
global_symbols.minor_marked = 0;
return id;
I get a failure on test_symbol.rb:
1) Failure:
TestSymbol#test_gc_attrset [/home/ew/ruby/test/ruby/test_symbol.rb:242]:
pid 9513 killed by SIGABRT (signal 6) (core dumped)
| -:18: [BUG] duplicate symbol
| ruby 2.2.0dev (2014-05-31 trunk 46241) [x86_64-linux]
|
| -- Control frame information -----------------------------------------------
| c:0005 p:---- s:0016 e:000015 CFUNC :eval
| c:0004 p:0016 s:0012 e:000011 BLOCK -:18 [FINISH]
| c:0003 p:---- s:0009 e:000008 CFUNC :each
| c:0002 p:0103 s:0006 E:000d98 EVAL -:17 [FINISH]
| c:0001 p:0000 s:0002 E:001278 TOP [FINISH]
|
| -- Ruby level backtrace information ----------------------------------------
| -:17:in `<main>'
| -:17:in `each'
| -:18:in `block in <main>'
| -:18:in `eval'
|
| -- C level backtrace information -------------------------------------------
| /home/ew/ruby/gcc/ruby(rb_vm_bugreport+0x550) [0x2adc8ba23440] ../vm_dump.c:687
| /home/ew/ruby/gcc/ruby(rb_bug+0xca) [0x2adc8ba8aeca] ../error.c:375
| /home/ew/ruby/gcc/ruby(intern_cstr_without_pindown+0x175) [0x2adc8b944ed5] parse.y:10433
| /home/ew/ruby/gcc/ruby(ruby_yyparse+0x37a3) [0x2adc8b949a73] parse.y:8244
| /home/ew/ruby/gcc/ruby(yycompile0+0xdd) [0x2adc8b9548fd] parse.y:5376
| /home/ew/ruby/gcc/ruby(rb_suppress_tracing+0x10f) [0x2adc8ba28fef] ../vm_trace.c:402
| /home/ew/ruby/gcc/ruby(rb_parser_compile_string_path+0xe5) [0x2adc8b940705] parse.y:5409
| /home/ew/ruby/gcc/ruby(rb_iseq_compile_with_option+0x17a) [0x2adc8ba05c1a] ../iseq.c:610
| /home/ew/ruby/gcc/ruby(eval_string_with_cref+0x1c8) [0x2adc8ba1d0a8] ../vm_eval.c:1267
| /home/ew/ruby/gcc/ruby(rb_f_eval+0x77) [0x2adc8ba1dd37] ../vm_eval.c:1333
| /home/ew/ruby/gcc/ruby(vm_call_cfunc_with_frame+0x120) [0x2adc8ba0cd00] ../vm_insnhelper.c:1502
| /home/ew/ruby/gcc/ruby(vm_call_method+0x3d5) [0x2adc8ba1b6b5] ../vm_insnhelper.c:1592
| /home/ew/ruby/gcc/ruby(vm_exec_core+0x2592) [0x2adc8ba12682] ../insns.def:1028
| /home/ew/ruby/gcc/ruby(vm_exec+0x84) [0x2adc8ba15af4] ../vm.c:1335
| /home/ew/ruby/gcc/ruby(rb_yield+0x71) [0x2adc8ba1f441] ../vm.c:790
| /home/ew/ruby/gcc/ruby(rb_ary_each+0x52) [0x2adc8ba3cc72] ../array.c:1806
| /home/ew/ruby/gcc/ruby(vm_call_cfunc_with_frame+0x120) [0x2adc8ba0cd00] ../vm_insnhelper.c:1502
| /home/ew/ruby/gcc/ruby(vm_call_method+0x3d5) [0x2adc8ba1b6b5] ../vm_insnhelper.c:1592
| /home/ew/ruby/gcc/ruby(vm_exec_core+0x2533) [0x2adc8ba12623] ../insns.def:999
| /home/ew/ruby/gcc/ruby(vm_exec+0x84) [0x2adc8ba15af4] ../vm.c:1335
| /home/ew/ruby/gcc/ruby(rb_iseq_eval_main+0x1d5) [0x2adc8ba1fc65] ../vm.c:1599
| /home/ew/ruby/gcc/ruby(ruby_exec_internal+0xdf) [0x2adc8b8d88af] ../eval.c:252
| /home/ew/ruby/gcc/ruby(ruby_run_node+0x47) [0x2adc8b8db957] ../eval.c:317
| /home/ew/ruby/gcc/ruby(main+0x4b) [0x2adc8b8d817b] ../eval_intern.h:162
[1] khashs is here: git clone git://github.com/attractivechaos/klib
Unlike st, khash does not allow duplicate keys.