Project

General

Profile

Actions

Bug #9011

closed

rb_fstring unsafe to use in general case

Added by normalperson (Eric Wong) over 10 years ago. Updated over 10 years ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
trunk
[ruby-core:57794]

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"

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0