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