Hi, Some 1.9 String methods (like scan, gsub) throw "string modified" RuntimeError as they do in 1.8. Others, though, create a (shared/eager) copy of self and then operate on that copy so they won't notify original object being mutated (each_char, each_line). Yet, there's still str_mod_check in those loops. Q1: is ObjectSpace the only reason for these modification checks when a copy is created. Q2: is there a more general contract what behavior to expect (throw error or ignore mutation) for such methods ? String#each_byte a bit exceptional since it won't blow under GIL even if the receiver is modified, though it could screw under parallel threads, how should JRuby behave here ? Marcin