Actions
Bug #10206
closedgarbage symbols crash symbol GC
Description
This is reproducible with just a test loop running for serveral minutes/hours:
while make test-all TESTS=-j8; do :; done
It looks like SYM2ID/rb_sym2id interacts badly with dsymbol_check
when it encounters garbage objects.
dsymbol_check replaces an invalid object and returns a new object
for the caller, but the original arg for SYM2ID remains usable
to the caller:
id = SYM2ID(garbage_sym);
do_something(garbage_sym); /* bad invalid object used */
Changing: rb_sym2id(VALUE) to rb_sym2id(VALUE *)
might solve the issue, but introduces many incompatibilities in existing
code:
id = rb_sym2id(&garbage_sym);
do_something(garbage_sym); /* id == garbage_sym, safe to use */
ref: ruby-core thread starting at [ruby-core:64671]
backtraces:
http://80x24.org/r35240/rb-dump.txt
http://80x24.org/r35240/gdb-bt.txt
Actions
Like0
Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0