This seems to fix it: --- a/symbol.c +++ b/symbol.c @@ -664,6 +664,7 @@ rb_gc_free_dsymbol(VALUE sym) if (str) { RSYMBOL(sym)->fstr = 0; unregister_sym(str, sym); + rb_hash_delete(global_symbols.dsymbol_fstr_hash, str); } } http://80x24.org/spew/m/85a6346bf10d3f37fecb4926a57699fbd82b45b6.txt