https://bugs.ruby-lang.org/https://bugs.ruby-lang.org/favicon.ico?17113305112023-01-24T17:57:26ZRuby Issue Tracking SystemRuby master - Bug #19375: File objects are currently shareable, as are other extension objects that shouldn't be.https://bugs.ruby-lang.org/issues/19375?journal_id=1014462023-01-24T17:57:26Zluke-gru (Luke Gruber)luke.gru@gmail.com
<ul><li><strong>Subject</strong> changed from <i>File objects are currently shareable</i> to <i>File objects are currently shareable, as are other extension objects that shouldn't be.</i></li></ul><p>The issue is with <code>Ractor.make_shareable</code></p>
<p>The same issue occurs with Dir, Tempfile, IO objects, the ENV hash. StringIO and CSV have this problem too. Sockets I think have the issue.</p>
<p>For example, the issue with StringIO is that it needs an initialize_clone method that dup's the string. The underlying issue, though, is that it's a TypedData and doesn't<br>
store its internals in instance variables to be checked by the sharing logic.</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="nb">require</span> <span class="s1">'stringio'</span>
<span class="n">str</span> <span class="o">=</span> <span class="s2">"string"</span><span class="p">.</span><span class="nf">dup</span>
<span class="n">stringio</span> <span class="o">=</span> <span class="no">StringIO</span><span class="p">.</span><span class="nf">new</span><span class="p">(</span><span class="n">str</span><span class="p">)</span>
<span class="n">rs</span> <span class="o">=</span> <span class="mi">100</span><span class="p">.</span><span class="nf">times</span><span class="p">.</span><span class="nf">map</span> <span class="k">do</span>
<span class="no">Ractor</span><span class="p">.</span><span class="nf">new</span> <span class="k">do</span>
<span class="n">strio</span> <span class="o">=</span> <span class="n">receive</span>
<span class="nb">p</span> <span class="n">strio</span><span class="p">.</span><span class="nf">string</span><span class="p">.</span><span class="nf">object_id</span>
<span class="nb">p</span> <span class="n">strio</span><span class="p">.</span><span class="nf">string</span><span class="p">.</span><span class="nf">frozen?</span>
<span class="k">end</span>
<span class="k">end</span>
<span class="nb">p</span> <span class="n">stringio</span><span class="p">.</span><span class="nf">string</span><span class="p">.</span><span class="nf">object_id</span>
<span class="n">rs</span><span class="p">.</span><span class="nf">each</span> <span class="k">do</span> <span class="o">|</span><span class="n">r</span><span class="o">|</span>
<span class="n">r</span><span class="p">.</span><span class="nf">send</span><span class="p">(</span><span class="n">stringio</span><span class="p">)</span>
<span class="k">end</span>
<span class="n">rs</span><span class="p">.</span><span class="nf">each</span><span class="p">(</span><span class="o">&</span><span class="ss">:take</span><span class="p">)</span>
</code></pre> Ruby master - Bug #19375: File objects are currently shareable, as are other extension objects that shouldn't be.https://bugs.ruby-lang.org/issues/19375?journal_id=1059382023-12-29T17:37:23Zluke-gru (Luke Gruber)luke.gru@gmail.com
<ul></ul><p>This has been fixed by <a class="user active user-mention" href="https://bugs.ruby-lang.org/users/17">@ko1 (Koichi Sasada)</a> in 7718e9588b4d7d83c8f9a89dce10b06b9f97bddb, it can be closed now. It could possibly use a backport, but I'll leave that up to you guys. Thank you!</p> Ruby master - Bug #19375: File objects are currently shareable, as are other extension objects that shouldn't be.https://bugs.ruby-lang.org/issues/19375?journal_id=1059392023-12-29T17:48:31Zjeremyevans0 (Jeremy Evans)merch-redmine@jeremyevans.net
<ul><li><strong>Status</strong> changed from <i>Open</i> to <i>Closed</i></li></ul>