Bug #9011
closedrb_fstring unsafe to use in general case
Description
I don't think the current "frozen"f in pure Ruby code is unsafe
(I haven't reproduced a crash)
But I do not think rb_fstring is generally safe for other C code, including extension authors
Consider the following case:
fstr1 = rb_fstring(str)
fstr1 goes out of scope
GC mark runs ...
fstr1 is eligible for lazy sweep
fstr2 = rb_fstring(str)
fstr2 is identical to fstr1
fstr1 is swept (rb_str_free)
fstr2 use attempted -> crash
I extracted this bug report from Feature #8998, where I showed a patch
which exposes this bug during "make check"
Updated by ko1 (Koichi Sasada) over 10 years ago
Nobu's patch r43210 may solve this problem. Could you verify it?
BTW, I don't like this fix. I'll try fix by another way.
Updated by normalperson (Eric Wong) over 10 years ago
"ko1 (Koichi Sasada)" redmine@ruby-lang.org wrote:
Nobu's patch r43210 may solve this problem. Could you verify it?
Thanks, I did not think to update my repo :x
Anyways, r43210 works fine.
BTW, I don't like this fix. I'll try fix by another way.
I'm not sure why you don't like it, but I'll be glad to test your fix.
Updated by nobu (Nobuyoshi Nakada) over 10 years ago
- Status changed from Open to Closed