Ruby Issue Tracking System: Issues
https://redmine.ruby-lang.org/
https://redmine.ruby-lang.org/favicon.ico?1711330511
2024-03-29T01:55:10Z
Ruby Issue Tracking System
Redmine
Ruby master - Bug #20401 (Open): Duplicated when clause warning line number
https://redmine.ruby-lang.org/issues/20401
2024-03-29T01:55:10Z
kddnewton (Kevin Newton)
kddnewton@gmail.com
<p>When you have a duplicated when clause, you get a warning for it. For example:</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="k">case</span> <span class="n">foo</span>
<span class="k">when</span> <span class="ss">:bar</span>
<span class="k">when</span> <span class="ss">:baz</span>
<span class="k">when</span> <span class="ss">:bar</span>
<span class="k">end</span>
</code></pre>
<p>you get <code>warning: duplicated `when' clause with line 2 is ignored</code>.</p>
<p>But the when clause that is ignored is the one on line 4, not line 2. It seems like it's warning for the wrong line.</p>
Ruby master - Bug #20399 (Open): Ripper doesn't respect implicit -x
https://redmine.ruby-lang.org/issues/20399
2024-03-28T14:27:26Z
kddnewton (Kevin Newton)
kddnewton@gmail.com
<p>For the given script:</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="c1">#!/bin/sh</span>
<span class="c1"># -*- ruby -*-</span>
<span class="nb">exec</span> <span class="s2">"${RUBY-ruby}"</span> <span class="s2">"-x"</span> <span class="s2">"$0"</span> <span class="s2">"$@"</span> <span class="o">&&</span> <span class="p">[</span> <span class="p">]</span> <span class="k">if</span> <span class="kp">false</span>
<span class="c1">#!ruby</span>
<span class="c1"># This needs ruby 2.0, Subversion and Git.</span>
<span class="c1"># As a Ruby committer, run this in an SVN repository</span>
<span class="c1"># to commit a change.</span>
<span class="nb">require</span> <span class="s1">'tempfile'</span>
<span class="nb">require</span> <span class="s1">'net/http'</span>
</code></pre>
<p>I would expect all of the various Ripper APIs (<code>lex</code>, <code>sexp</code>, <code>sexp_raw</code>, <code>new.parse</code>, etc.) to start parsing on line 4, because that's what the parser does. Instead, it starts parsing on line 1.</p>
Ruby master - Bug #20397 (Open): The nkf license in LEGAL file seems to be obsolete
https://redmine.ruby-lang.org/issues/20397
2024-03-27T17:22:36Z
vo.x (Vit Ondruch)
v.ondruch@tiscali.cz
<p>The LEGAL file seems to contain <a href="https://github.com/ruby/ruby/blob/a69f0047cb489c136001937442c1d2ffd8ea1dd7/LEGAL?plain=1#L730-L746" class="external">obsolete information</a> about nkf license.</p>
<p>It seems that nkf indeed use such license, but in upstream, it was first changed to <a href="https://github.com/nurse/nkf/commit/c12280757bfb275d6f9e6b0bf6293a28b060e77b" class="external">MIT</a> and then immediately to <a href="https://github.com/nurse/nkf/commit/2ed3e1c270f1deb9487f7bc7d7586030fe7dabc5" class="external">zlib</a> license.</p>
<p>Ruby has picked up that change with <a class="changeset" title="* ext/nkf/nkf-utf8/nkf.c: Update nkf to 2.0.9. revert -s meaning as Shift_JIS, etc. git-svn-id..." href="https://redmine.ruby-lang.org/projects/ruby-master/repository/git/revisions/13313688b243882aff7815598ddd9fcbae69bc17">git|13313688b243882aff7815598ddd9fcbae69bc17</a></p>
<p>Maybe <a class="user active user-mention" href="https://redmine.ruby-lang.org/users/5">@naruse (Yui NARUSE)</a> can comment about this.</p>
Ruby master - Bug #20395 (Open): Invalid license note in vsnprintf.c
https://redmine.ruby-lang.org/issues/20395
2024-03-26T11:19:39Z
vo.x (Vit Ondruch)
v.ondruch@tiscali.cz
<p>I am looking into Ruby licenses and I stumble upon vsnprintf.c, namely about these lines:</p>
<pre><code>/*
* IMPORTANT NOTE:
* --------------
* From ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change
* paragraph 3 above is now null and void.
*/
</code></pre>
<p>I doubt the note is valid since <a class="changeset" title="* missing/crypt.c: replaced with 4.4BSD version. * missing/erf.c: ditto. * missing/vsnprintf.c:..." href="https://redmine.ruby-lang.org/projects/ruby-master/repository/git/revisions/626f1ee196fe06514d66771ff0e3f82d7686af25">git|626f1ee196fe06514d66771ff0e3f82d7686af25</a>, which actually removes the 3rd clause, while the (broken) URL refers to "4bsd". Can somebody please review? The note from the URL can be likely viewed e.g. <a href="https://www.freebsd.org/copyright/license/" class="external">here</a></p>
Ruby master - Bug #20346 (Open): FiberScheduler.unblock not called by Thread#join when Thread bod...
https://redmine.ruby-lang.org/issues/20346
2024-03-18T19:06:21Z
forthoney (Seong-Heon Jung)
castlehoneyjung@gmail.com
<p>When using a <code>Ractor.take</code> inside a different thread, <code>Thread#join</code> on the thread running <code>Ractor.take</code> fails to call <code>FiberScheduler.unblock</code>. The below code can replicate this behavior</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="nb">require</span> <span class="s2">"async"</span>
<span class="k">class</span> <span class="nc">RactorWrapper</span>
<span class="k">def</span> <span class="nf">initialize</span>
<span class="vi">@ractor</span> <span class="o">=</span> <span class="no">Ractor</span><span class="p">.</span><span class="nf">new</span> <span class="k">do</span>
<span class="no">Ractor</span><span class="p">.</span><span class="nf">recv</span> <span class="c1"># Ractor doesn't start until explicitly told to</span>
<span class="c1"># Do some calculations</span>
<span class="n">fib</span> <span class="o">=</span> <span class="o">-></span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="p">{</span> <span class="n">x</span> <span class="o"><</span> <span class="mi">2</span> <span class="p">?</span> <span class="mi">1</span> <span class="p">:</span> <span class="n">fib</span><span class="p">.</span><span class="nf">call</span><span class="p">(</span><span class="n">x</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="o">+</span> <span class="n">fib</span><span class="p">.</span><span class="nf">call</span><span class="p">(</span><span class="n">x</span> <span class="o">-</span> <span class="mi">2</span><span class="p">)</span> <span class="p">}</span>
<span class="n">fib</span><span class="p">.</span><span class="nf">call</span><span class="p">(</span><span class="mi">20</span><span class="p">)</span>
<span class="k">end</span>
<span class="k">end</span>
<span class="k">def</span> <span class="nf">take_async</span>
<span class="vi">@ractor</span><span class="p">.</span><span class="nf">send</span><span class="p">(</span><span class="kp">nil</span><span class="p">)</span>
<span class="no">Thread</span><span class="p">.</span><span class="nf">new</span> <span class="p">{</span> <span class="vi">@ractor</span><span class="p">.</span><span class="nf">take</span> <span class="p">}.</span><span class="nf">join</span><span class="p">.</span><span class="nf">value</span>
<span class="k">end</span>
<span class="k">end</span>
<span class="no">Async</span> <span class="k">do</span> <span class="o">|</span><span class="n">task</span><span class="o">|</span>
<span class="mi">10000</span><span class="p">.</span><span class="nf">times</span> <span class="k">do</span> <span class="o">|</span><span class="n">i</span><span class="o">|</span>
<span class="n">task</span><span class="p">.</span><span class="nf">async</span> <span class="k">do</span>
<span class="no">RactorWrapper</span><span class="p">.</span><span class="nf">new</span><span class="p">.</span><span class="nf">take_async</span>
<span class="nb">puts</span> <span class="n">i</span>
<span class="k">end</span>
<span class="k">end</span>
<span class="k">end</span>
</code></pre>
<p>The above code deadlocks, and when we leave a debugging print statement inside of <code>Async</code>'s scheduler's <code>block</code> and <code>unblock</code> method, we can confirm that we only call <code>Scheduler.block</code>, and never <code>Scheduler.unblock</code></p>
Ruby master - Bug #20344 (Open): argument stack underflow (-1)
https://redmine.ruby-lang.org/issues/20344
2024-03-18T15:37:22Z
nobu (Nobuyoshi Nakada)
nobu@ruby-lang.org
<p>This file produces argument stack underflow, since ruby 2.5.</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="nb">proc</span> <span class="k">do</span>
<span class="k">next</span> <span class="k">if</span> <span class="kp">true</span>
<span class="k">case</span> <span class="kp">nil</span>
<span class="k">when</span> <span class="s2">"a"</span>
<span class="k">next</span>
<span class="k">when</span> <span class="s2">"b"</span>
<span class="k">when</span> <span class="s2">"c"</span>
<span class="nb">proc</span> <span class="p">{}</span>
<span class="k">end</span>
<span class="k">next</span> <span class="k">unless</span> <span class="kp">true</span>
<span class="k">end</span>
</code></pre>
<pre><code>-- raw disasm--------
trace: 100
0000 nop ( 1)
<L000> [sp: 0, unremovable: 1, refcnt: 5]
trace: 1
<L004> [sp: 0, unremovable: 0, refcnt: 1]
adjust: [label: 0]
0001 putnil ( 2)
0002 leave ( 13)
<L008> [sp: 1, unremovable: 0, refcnt: 1]
adjust: [label: 0]
0003 putnil ( 6)
0004 leave ( 13)
adjust: [label: 8]
0005 jump <L005> ( 5)
0007 pop ( 7)
0008 jump <L005> ( 7)
* 0010 pop ( 8)
trace: 1
<L011> [sp: -1, unremovable: 1, refcnt: 1]
0011 putself ( 9)
0012 send <calldata:proc, 0>, nil ( 9)
<L012> [sp: -1, unremovable: 0, refcnt: 2]
0015 pop ( 9)
<L005> [sp: 1, unremovable: 0, refcnt: 2]
trace: 1
0016 putnil ( 12)
<L001> [sp: -1, unremovable: 0, refcnt: 3]
trace: 200
0017 leave ( 13)
---------------------
</code></pre>
Ruby master - Bug #20342 (Open): Top level `public`, `private` and `ruby2_keywords` do not work i...
https://redmine.ruby-lang.org/issues/20342
2024-03-16T10:21:57Z
nobu (Nobuyoshi Nakada)
nobu@ruby-lang.org
<p>With this file:</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="c1"># load.rb</span>
<span class="kp">public</span> <span class="k">def</span> <span class="nf">f</span> <span class="o">=</span> <span class="ss">:ok</span>
</code></pre>
<p>It is OK when <code>require</code>d.</p>
<pre><code data-language="sh-session">$ ruby -r ./load.rb -e 'p f'
:ok
</code></pre>
<p>Simple <code>load</code> is OK too.</p>
<pre><code data-language="sh-session">$ ruby -e 'load ARGV[0]; p f' load.rb
:ok
</code></pre>
<p>Wrapped <code>load</code> fails.</p>
<pre><code data-language="sh-session">$ ruby -e 'load ARGV[0], true' load.rb
load.rb:1:in 'public': undefined method 'f' for class 'Object' (NameError)
public def f = :ok
^^^^^^
from load.rb:1:in '<top (required)>'
from -e:1:in 'Kernel#load'
from -e:1:in '<main>'
</code></pre>
Ruby master - Bug #20340 (Open): Ractor comments not applying to constant targets
https://redmine.ruby-lang.org/issues/20340
2024-03-14T19:39:40Z
kddnewton (Kevin Newton)
kddnewton@gmail.com
<p>In this example:</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="no">C</span><span class="p">,</span> <span class="o">=</span> <span class="p">{</span> <span class="ss">foo: </span><span class="n">bar</span> <span class="p">}</span>
</code></pre>
<p>You get:</p>
<pre><code>== disasm: #<ISeq:<main>@test.rb:1 (1,0)-(1,17)>
0000 putobject :foo ( 1)[Li]
0002 putself
0003 opt_send_without_block <calldata!mid:bar, argc:0, FCALL|VCALL|ARGS_SIMPLE>
0005 newhash 2
0007 dup
0008 expandarray 1, 0
0011 putspecialobject 3
0013 setconstant :C
0015 leave
</code></pre>
<p>But there's no difference from:</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="c1"># shareable_constant_value: literal</span>
<span class="no">C</span><span class="p">,</span> <span class="o">=</span> <span class="p">{</span> <span class="ss">foo: </span><span class="n">bar</span> <span class="p">}</span>
</code></pre>
<p>I would have expected:</p>
<pre><code>== disasm: #<ISeq:<main>@test.rb:1 (1,0)-(2,16)>
0000 putobject RubyVM::FrozenCore ( 2)[Li]
0002 putobject :foo
0004 putobject RubyVM::FrozenCore
0006 putself
0007 opt_send_without_block <calldata!mid:bar, argc:0, FCALL|VCALL|ARGS_SIMPLE>
0009 putobject "C"
0011 opt_send_without_block <calldata!mid:ensure_shareable, argc:2, ARGS_SIMPLE>
0013 newhash 2
0015 opt_send_without_block <calldata!mid:make_shareable, argc:1, ARGS_SIMPLE>
0017 dup
0018 expandarray 1, 0
0021 putspecialobject 3
0023 setconstant :C
0025 leave
</code></pre>
<p>Is this omission intentional? For context, I'm building this in prism and I need to know if I should explicitly disable this behavior.</p>
Ruby master - Bug #20337 (Open): Complex#inspect mutates the string returned by `real.inspect`
https://redmine.ruby-lang.org/issues/20337
2024-03-14T11:23:54Z
Eregon (Benoit Daloze)
<pre><code>irb(main):001:0> n = Numeric.new
=> #<Numeric:0x00007f81b2308578>
irb(main):004:0> class Numeric; def inspect = super.freeze; end
=> :inspect
irb(main):006:0> Complex(n, 1).inspect
(irb):6:in `inspect': can't modify frozen String: "#<Numeric:0x00007f81b2308578>" (FrozenError)
from (irb):6:in `<main>'
from /home/eregon/.rubies/ruby-3.2.2/lib/ruby/gems/3.2.0/gems/irb-1.6.2/exe/irb:11:in `<top (required)>'
from /home/eregon/.rubies/ruby-3.2.2/bin/irb:25:in `load'
from /home/eregon/.rubies/ruby-3.2.2/bin/irb:25:in `<main>'
</code></pre>
<p>It feels wrong to mutate the result of inspect at least in general, for instance <code>true.inspect</code> is frozen.</p>
<p>Discovered by <a href="https://github.com/ruby/spec/pull/1142" class="external">https://github.com/ruby/spec/pull/1142</a></p>
Ruby master - Bug #20332 (Open): After upgrading to ruby v 3.2.3 rb_scan_args() skips argument va...
https://redmine.ruby-lang.org/issues/20332
2024-03-12T18:06:04Z
praveenrocket (Praveen N)
<p>Hi,</p>
<p>Note: I am not an expert at ruby.</p>
<p>I am working on ibm_db gem, its an adapter developed using ruby C extension, which helps ruby & rails applications to connect to DB2 database.<br>
Here is a github link for its source <a href="https://github.com/ibmdb/ruby-ibmdb/tree/master" class="external">https://github.com/ibmdb/ruby-ibmdb/tree/master</a></p>
<p>As of now ibm_db gem is compatible with ruby v 3.1.<br>
Now I am trying to make ibm_db gem compatible with ruby v 3.2.3.</p>
<p>All my test cases were working for ruby v 3.1, but post upgrading to ruby v 3.2.3, most of my test cases are failing.</p>
<p>After debugging using gdb what I see is, my ruby test cases calls ruby C extension API passing required arguments, but inside C extension code arguments are not parsed, indeed nothing is read. Because of this most of test cases are failing.</p>
<p>Below is a sample ruby script which when run calls ibm_db extension,</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="err">$</span> <span class="n">irb</span>
<span class="n">irb</span><span class="p">(</span><span class="n">main</span><span class="p">):</span><span class="mo">001</span><span class="p">:</span><span class="mi">0</span><span class="o">></span> <span class="nb">require</span> <span class="s1">'ibm_db'</span>
<span class="o">=></span> <span class="kp">true</span>
<span class="n">irb</span><span class="p">(</span><span class="n">main</span><span class="p">):</span><span class="mo">002</span><span class="p">:</span><span class="mi">0</span><span class="o">></span> <span class="n">conn</span> <span class="o">=</span> <span class="no">IBM_DB</span><span class="p">.</span><span class="nf">connect</span><span class="p">(</span><span class="s2">"DATABASE=sample;HOSTNAME=waldevdbclnxtst06.dev.rocketsoftware.com;PORT=60000;PROTOCOL=TCPIP;UID=zurbie;PWD=A2m8test;"</span><span class="p">,</span><span class="s1">''</span><span class="p">,</span><span class="s1">''</span><span class="p">)</span>
<span class="p">(</span><span class="n">irb</span><span class="p">):</span><span class="mi">2</span><span class="p">:</span> <span class="ss">warning: </span><span class="n">undefining</span> <span class="n">the</span> <span class="n">allocator</span> <span class="n">of</span> <span class="no">T_DATA</span> <span class="k">class</span> <span class="nc">IBM_DB::Connection</span>
<span class="o">=></span> <span class="c1">#<IBM_DB::Connection:0x00007ff60314ce58></span>
<span class="n">irb</span><span class="p">(</span><span class="n">main</span><span class="p">):</span><span class="mo">003</span><span class="p">:</span><span class="mi">0</span><span class="o">></span> <span class="n">stmt</span> <span class="o">=</span> <span class="no">IBM_DB</span><span class="p">.</span><span class="nf">exec</span> <span class="n">conn</span><span class="p">,</span><span class="s1">'create table abc(C1 int)'</span>
<span class="o">=></span> <span class="kp">false</span>
<span class="n">irb</span><span class="p">(</span><span class="n">main</span><span class="p">):</span><span class="mo">004</span><span class="p">:</span><span class="mi">0</span><span class="o">></span>
<span class="n">irb</span><span class="p">(</span><span class="n">main</span><span class="p">):</span><span class="mo">005</span><span class="p">:</span><span class="mi">0</span><span class="o">></span> <span class="no">IBM_DB</span><span class="p">.</span><span class="nf">close</span><span class="p">(</span><span class="n">conn</span><span class="p">)</span>
<span class="o">=></span> <span class="kp">true</span>
<span class="n">irb</span><span class="p">(</span><span class="n">main</span><span class="p">):</span><span class="mo">006</span><span class="p">:</span><span class="mi">0</span><span class="o">></span> <span class="nb">exit</span>
</code></pre>
<p>Above, If you observe IBM_DB.exec is called passing two arguments conn & string with create table query.<br>
In extension code <a href="https://github.com/ibmdb/ruby-ibmdb/blob/master/IBM_DB_Driver/ibm_db.c" class="external">https://github.com/ibmdb/ruby-ibmdb/blob/master/IBM_DB_Driver/ibm_db.c</a>,<br>
below function will be called</p>
<pre><code class="c syntaxhl" data-language="c"><span class="n">VALUE</span> <span class="nf">ibm_db_exec</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="n">VALUE</span> <span class="o">*</span><span class="n">argv</span><span class="p">,</span> <span class="n">VALUE</span> <span class="n">self</span><span class="p">)</span>
<span class="p">{</span>
<span class="p">....</span>
<span class="n">rb_scan_args</span><span class="p">(</span><span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">,</span> <span class="s">"21"</span><span class="p">,</span> <span class="o">&</span><span class="n">connection</span><span class="p">,</span> <span class="o">&</span><span class="n">stmt</span><span class="p">,</span> <span class="o">&</span><span class="n">options</span><span class="p">);</span>
<span class="p">......</span>
<span class="p">}</span>
</code></pre>
<p>Note: Please refer <a href="https://github.com/ibmdb/ruby-ibmdb/blob/master/IBM_DB_Driver/ibm_db.c" class="external">https://github.com/ibmdb/ruby-ibmdb/blob/master/IBM_DB_Driver/ibm_db.c</a> for complete code.</p>
<p>rb_scan_args used to parse arguments very well in ruby v 3.1, but now its failing to do so. I see stmt parameter doesnt hold anything.</p>
<p>I just want to know whats issue here, Am I passing arguments in wrong way (in ruby script), or am I not using rb_scan_args properly ?</p>
<p>To reproduce,<br>
Install ruby v 3.2.3,<br>
Install ibm_db gem version 5.4.1 (latest)<br>
Run above sample ruby script using IRB.</p>
<p>Response at earliest is much appreciated.</p>
<p>Thanks<br>
Praveen</p>
Ruby master - Bug #20330 (Open): [BUG] Segmentation fault at 0xffffffffffffffff
https://redmine.ruby-lang.org/issues/20330
2024-03-09T10:33:11Z
l33tname (Sir l33tname)
sirl33tname@gmail.com
<p>I get a segfault from ruby on fly.io (a platform to run full stack apps).<br>
As you can see from the stacktracke im using a jemalloc version but im getting the same crash with the<br>
ruby:3.3.0-slim docker image. (Thats the docker file: <a href="https://github.com/Binaergewitter/serious-bg/blob/be890bf6af110b02f22f359d395bedb0659f4243/Dockerfile.fly" class="external">https://github.com/Binaergewitter/serious-bg/blob/be890bf6af110b02f22f359d395bedb0659f4243/Dockerfile.fly</a> based on quay.io/evl.ms/fullstaq-ruby:3.3.0-jemalloc-slim)</p>
<p>Reverting back to ruby 3.2.3 solved the issue for now: <a href="https://github.com/Binaergewitter/serious-bg/commit/4eed4119706303383ce5994c796bc5a8a1813afc" class="external">https://github.com/Binaergewitter/serious-bg/commit/4eed4119706303383ce5994c796bc5a8a1813afc</a></p>
<p>I was not able to reproduce it locally.<br>
But the application is open source -> <a href="https://github.com/Binaergewitter/serious-bg" class="external">https://github.com/Binaergewitter/serious-bg</a></p>
<pre><code>2024-03-09T09:31:07Z app[3d8d7d99f40128] iad [info][ 0.037737] Spectre V2 : WARNING: Unprivileged eBPF is enabled with eIBRS on, data leaks possible via Spectre v2 BHB attacks!
2024-03-09T09:31:07Z app[3d8d7d99f40128] iad [info][ 0.041193] PCI: Fatal: No config space access function found
2024-03-09T09:31:07Z app[3d8d7d99f40128] iad [info] INFO Starting init (commit: 913ad9c)...
2024-03-09T09:31:07Z app[3d8d7d99f40128] iad [info] INFO Preparing to run: `bundle exec puma -e production -b tcp://0.0.0.0:8080 -t 0:5` as root
2024-03-09T09:31:07Z app[3d8d7d99f40128] iad [info] INFO [fly api proxy] listening at /.fly/api
2024-03-09T09:31:07Z app[3d8d7d99f40128] iad [info]2024/03/09 09:31:07 listening on [fdaa:0:182f:a7b:22c:a04d:ac4:2]:22 (DNS: [fdaa::3]:53)
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]/usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/ruby/3.3.0/rubygems.rb:165: [BUG] Segmentation fault at 0xffffffffffffffff
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]ruby 3.3.0 (2023-12-25 revision 5124f9ac75) +jemalloc [x86_64-linux]
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]-- Control frame information -----------------------------------------------
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]c:0005 p:0074 s:0023 e:000021 CLASS /usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/ruby/3.3.0/rubygems.rb:165
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]c:0004 p:0045 s:0019 e:000018 TOP /usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/ruby/3.3.0/rubygems.rb:115 [FINISH]
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]c:0003 p:---- s:0012 e:000011 CFUNC :require
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]c:0002 p:0012 s:0007 e:000006 TOP <internal:gem_prelude>:2 [FINISH]
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]c:0001 p:0000 s:0003 E:0001c0 DUMMY [FINISH]
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]-- Ruby level backtrace information ----------------------------------------
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]<internal:gem_prelude>:2:in `<internal:gem_prelude>'
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]<internal:gem_prelude>:2:in `require'
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]/usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/ruby/3.3.0/rubygems.rb:115:in `<top (required)>'
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]/usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/ruby/3.3.0/rubygems.rb:165:in `<module:Gem>'
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]-- Threading information ---------------------------------------------------
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]Total ractor count: 1
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]Ruby thread count for this ractor: 1
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]-- Machine register context ------------------------------------------------
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info] RIP: 0x00007fc80e6c51b4 RBP: 0x00007fc80c400050 RSP: 0x00007ffee5a36a98
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info] RAX: 0xffffffffffffffff RBX: 0x00007fc80c4003e8 RCX: 0x00007fc80c4003e9
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info] RDX: 0xffffffffffffffff RDI: 0x00007fc80d8170d0 RSI: 0x000000000000c2d3
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info] R8: 0x0000000000000000 R9: 0x00007fc80da36340 R10: 0x0000000000000001
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info] R11: 0x00007fc80e026880 R12: 0x00007fc80ea4b860 R13: 0x0000000000000001
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info] R14: 0x00007fc80c400550 R15: 0x00007fc80e026880 EFL: 0x0000000000010202
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]-- C level backtrace information -------------------------------------------
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]/usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/libruby.so.3.3(rb_vm_bugreport+0x96b) [0x7fc80e77adab]
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]/usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/libruby.so.3.3(rb_bug_for_fatal_signal+0x100) [0x7fc80e576720]
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]/usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/libruby.so.3.3(sigsegv+0x4b) [0x7fc80e6c74db]
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]/lib/x86_64-linux-gnu/libc.so.6(0x7fc80e13a050) [0x7fc80e13a050]
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]/usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/libruby.so.3.3(redblack_insert_aux+0x364) [0x7fc80e6c51b4]
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]/usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/libruby.so.3.3(redblack_cache_ancestors+0x8f) [0x7fc80e6c552f]
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]/usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/libruby.so.3.3(redblack_cache_ancestors+0x6d) [0x7fc80e6c550d]
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]/usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/libruby.so.3.3(redblack_cache_ancestors+0x6d) [0x7fc80e6c550d]
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]/usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/libruby.so.3.3(redblack_cache_ancestors+0x6d) [0x7fc80e6c550d]
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]/usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/libruby.so.3.3(redblack_cache_ancestors+0x6d) [0x7fc80e6c550d]
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]/usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/libruby.so.3.3(redblack_cache_ancestors+0x6d) [0x7fc80e6c550d]
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]/usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/libruby.so.3.3(rb_shape_get_next+0x2a8) [0x7fc80e6c6458]
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]/usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/libruby.so.3.3(rb_class_ivar_set+0xb0) [0x7fc80e742560]
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]/usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/libruby.so.3.3(rb_ivar_set+0x83) [0x7fc80e742743]
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]/usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/libruby.so.3.3(vm_exec_core+0x8ca) [0x7fc80e75ea1a]
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]/usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/libruby.so.3.3(rb_vm_exec+0x179) [0x7fc80e7640f9]
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]/usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/libruby.so.3.3(require_internal+0xd2f) [0x7fc80e5e84bf]
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]/usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/libruby.so.3.3(rb_require_string+0x66) [0x7fc80e5e9156]
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]/usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/libruby.so.3.3(vm_call_cfunc_other+0x169) [0x7fc80e74cf29]
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]/usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/libruby.so.3.3(vm_exec_core+0x129) [0x7fc80e75e279]
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]/usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/libruby.so.3.3(rb_vm_exec+0x179) [0x7fc80e7640f9]
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]/usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/libruby.so.3.3(ruby_opt_init.part.0+0xbf) [0x7fc80e6c185f]
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]/usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/libruby.so.3.3(load_file_internal+0x47e) [0x7fc80e6c1e7e]
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]/usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/libruby.so.3.3(rb_ensure+0x110) [0x7fc80e580190]
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]/usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/libruby.so.3.3(process_options+0x15fb) [0x7fc80e6c38ab]
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]/usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/libruby.so.3.3(ruby_process_options+0x145) [0x7fc80e6c3ff5]
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]/usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/libruby.so.3.3(ruby_options+0xc9) [0x7fc80e581249]
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]/usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/bin/ruby(0x56225c24510a) [0x56225c24510a]
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]/lib/x86_64-linux-gnu/libc.so.6(0x7fc80e12524a) [0x7fc80e12524a]
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0x85) [0x7fc80e125305]
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]/usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/bin/ruby(_start+0x21) [0x56225c245151]
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]-- Other runtime information -----------------------------------------------
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]* Loaded script: /usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/bin/ruby
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]* Loaded features:
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info] 0 enumerator.so
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info] 1 thread.rb
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info] 2 fiber.so
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info] 3 rational.so
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info] 4 complex.so
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info] 5 ruby2_keywords.rb
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info] 6 /usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/ruby/3.3.0/x86_64-linux/enc/encdb.so
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info] 7 /usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/ruby/3.3.0/x86_64-linux/enc/trans/transdb.so
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info] 8 /usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/ruby/3.3.0/x86_64-linux/rbconfig.rb
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info] 9 /usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/ruby/3.3.0/rubygems/compatibility.rb
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info] 10 /usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/ruby/3.3.0/rubygems/defaults.rb
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info] 11 /usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/ruby/3.3.0/rubygems/deprecate.rb
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info] 12 /usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/ruby/3.3.0/rubygems/errors.rb
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]* Process memory map:
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]56225c244000-56225c245000 r--p 00000000 fe:00 134645 /usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/bin/ruby
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]56225c245000-56225c246000 r-xp 00001000 fe:00 134645 /usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/bin/ruby
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]56225c246000-56225c247000 r--p 00002000 fe:00 134645 /usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/bin/ruby
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]56225c247000-56225c248000 r--p 00002000 fe:00 134645 /usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/bin/ruby
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]56225c248000-56225c249000 rw-p 00003000 fe:00 134645 /usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/bin/ruby
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80994f000-7fc80a000000 r--s 00000000 fe:00 134864 /usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/libruby.so.3.3.0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80a000000-7fc80a400000 rw-p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80a54a000-7fc80a720000 r--s 00000000 fe:00 131782 /usr/lib/x86_64-linux-gnu/libc.so.6
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80a720000-7fc80a7b0000 rw-p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80a7bf000-7fc80a7c0000 ---p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80a7c0000-7fc80a861000 rw-p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80a861000-7fc80a862000 ---p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80a862000-7fc80a903000 rw-p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80a903000-7fc80a904000 ---p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80a904000-7fc80a9a5000 rw-p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80a9a5000-7fc80a9a6000 ---p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80a9a6000-7fc80aa47000 rw-p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80aa47000-7fc80aa48000 ---p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80aa48000-7fc80aae9000 rw-p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80aae9000-7fc80aaea000 ---p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80aaea000-7fc80ab8b000 rw-p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80ab8b000-7fc80ab8c000 ---p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80ab8c000-7fc80ac2d000 rw-p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80ac2d000-7fc80ac2e000 ---p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80ac2e000-7fc80accf000 rw-p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80accf000-7fc80acd0000 ---p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80acd0000-7fc80ad71000 rw-p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80ad71000-7fc80ad72000 ---p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80ad72000-7fc80ae13000 rw-p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80ae13000-7fc80ae14000 ---p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80ae14000-7fc80aeb5000 rw-p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80aeb5000-7fc80aeb6000 ---p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80aeb6000-7fc80af57000 rw-p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80af57000-7fc80af58000 ---p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80af58000-7fc80aff9000 rw-p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80aff9000-7fc80affa000 ---p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80affa000-7fc80b09b000 rw-p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80b09b000-7fc80b09c000 ---p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80b09c000-7fc80b13d000 rw-p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80b13d000-7fc80b13e000 ---p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80b13e000-7fc80b1df000 rw-p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80b1df000-7fc80b1e0000 ---p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80b1e0000-7fc80b281000 rw-p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80b281000-7fc80b282000 ---p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80b282000-7fc80b323000 rw-p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80b323000-7fc80b324000 ---p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80b324000-7fc80b3c5000 rw-p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80b3c5000-7fc80b3c6000 ---p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80b3c6000-7fc80b467000 rw-p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80b467000-7fc80b468000 ---p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80b468000-7fc80b509000 rw-p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80b509000-7fc80b50a000 ---p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80b50a000-7fc80b5ab000 rw-p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80b5ab000-7fc80b5ac000 ---p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80b5ac000-7fc80b64d000 rw-p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80b64d000-7fc80b64e000 ---p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80b64e000-7fc80b6ef000 rw-p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80b6ef000-7fc80b6f0000 ---p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80b6f0000-7fc80b791000 rw-p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80b791000-7fc80b792000 ---p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80b792000-7fc80b833000 rw-p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80b833000-7fc80b834000 ---p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80b834000-7fc80b8d5000 rw-p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80b8d5000-7fc80b8d6000 ---p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80b8d6000-7fc80b977000 rw-p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80b977000-7fc80b978000 ---p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80b978000-7fc80ba19000 rw-p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80ba19000-7fc80ba1a000 ---p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80ba1a000-7fc80babb000 rw-p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80babb000-7fc80babc000 ---p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80babc000-7fc80bb5d000 rw-p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80bb5d000-7fc80bb5e000 ---p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80bb5e000-7fc80bbff000 rw-p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80bbff000-7fc80bc00000 ---p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80bc00000-7fc80e000000 rw-p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80e010000-7fc80e020000 rw-p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80e020000-7fc80e070000 rw-p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80e074000-7fc80e075000 r--p 00000000 fe:00 136223 /usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/ruby/3.3.0/x86_64-linux/enc/trans/transdb.so
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80e075000-7fc80e076000 r-xp 00001000 fe:00 136223 /usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/ruby/3.3.0/x86_64-linux/enc/trans/transdb.so
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80e076000-7fc80e077000 r--p 00002000 fe:00 136223 /usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/ruby/3.3.0/x86_64-linux/enc/trans/transdb.so
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80e077000-7fc80e078000 r--p 00002000 fe:00 136223 /usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/ruby/3.3.0/x86_64-linux/enc/trans/transdb.so
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80e078000-7fc80e079000 rw-p 00003000 fe:00 136223 /usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/ruby/3.3.0/x86_64-linux/enc/trans/transdb.so
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80e079000-7fc80e07a000 r--p 00000000 fe:00 136179 /usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/ruby/3.3.0/x86_64-linux/enc/encdb.so
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80e07a000-7fc80e07b000 r-xp 00001000 fe:00 136179 /usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/ruby/3.3.0/x86_64-linux/enc/encdb.so
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80e07b000-7fc80e07c000 r--p 00002000 fe:00 136179 /usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/ruby/3.3.0/x86_64-linux/enc/encdb.so
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80e07c000-7fc80e07d000 r--p 00002000 fe:00 136179 /usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/ruby/3.3.0/x86_64-linux/enc/encdb.so
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80e07d000-7fc80e07e000 rw-p 00003000 fe:00 136179 /usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/ruby/3.3.0/x86_64-linux/enc/encdb.so
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80e07e000-7fc80e085000 r--s 00000000 fe:00 131755 /usr/lib/x86_64-linux-gnu/gconv/gconv-modules.cache
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80e085000-7fc80e0dc000 r--p 00000000 fe:00 131399 /usr/lib/locale/C.utf8/LC_CTYPE
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80e0dc000-7fc80e0de000 rw-p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80e0de000-7fc80e0e1000 r--p 00000000 fe:00 131804 /usr/lib/x86_64-linux-gnu/libgcc_s.so.1
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80e0e1000-7fc80e0f8000 r-xp 00003000 fe:00 131804 /usr/lib/x86_64-linux-gnu/libgcc_s.so.1
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80e0f8000-7fc80e0fc000 r--p 0001a000 fe:00 131804 /usr/lib/x86_64-linux-gnu/libgcc_s.so.1
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80e0fc000-7fc80e0fd000 r--p 0001d000 fe:00 131804 /usr/lib/x86_64-linux-gnu/libgcc_s.so.1
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80e0fd000-7fc80e0fe000 rw-p 0001e000 fe:00 131804 /usr/lib/x86_64-linux-gnu/libgcc_s.so.1
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80e0fe000-7fc80e124000 r--p 00000000 fe:00 131782 /usr/lib/x86_64-linux-gnu/libc.so.6
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80e124000-7fc80e279000 r-xp 00026000 fe:00 131782 /usr/lib/x86_64-linux-gnu/libc.so.6
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80e279000-7fc80e2cc000 r--p 0017b000 fe:00 131782 /usr/lib/x86_64-linux-gnu/libc.so.6
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80e2cc000-7fc80e2d0000 r--p 001ce000 fe:00 131782 /usr/lib/x86_64-linux-gnu/libc.so.6
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80e2d0000-7fc80e2d2000 rw-p 001d2000 fe:00 131782 /usr/lib/x86_64-linux-gnu/libc.so.6
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80e2d2000-7fc80e2e1000 rw-p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80e2e1000-7fc80e2f1000 r--p 00000000 fe:00 131821 /usr/lib/x86_64-linux-gnu/libm.so.6
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80e2f1000-7fc80e364000 r-xp 00010000 fe:00 131821 /usr/lib/x86_64-linux-gnu/libm.so.6
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80e364000-7fc80e3be000 r--p 00083000 fe:00 131821 /usr/lib/x86_64-linux-gnu/libm.so.6
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80e3be000-7fc80e3bf000 r--p 000dc000 fe:00 131821 /usr/lib/x86_64-linux-gnu/libm.so.6
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80e3bf000-7fc80e3c0000 rw-p 000dd000 fe:00 131821 /usr/lib/x86_64-linux-gnu/libm.so.6
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80e3c0000-7fc80e3c2000 r--p 00000000 fe:00 131791 /usr/lib/x86_64-linux-gnu/libcrypt.so.1.1.0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80e3c2000-7fc80e3d8000 r-xp 00002000 fe:00 131791 /usr/lib/x86_64-linux-gnu/libcrypt.so.1.1.0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80e3d8000-7fc80e3f2000 r--p 00018000 fe:00 131791 /usr/lib/x86_64-linux-gnu/libcrypt.so.1.1.0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80e3f2000-7fc80e3f3000 r--p 00031000 fe:00 131791 /usr/lib/x86_64-linux-gnu/libcrypt.so.1.1.0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80e3f3000-7fc80e3f4000 rw-p 00032000 fe:00 131791 /usr/lib/x86_64-linux-gnu/libcrypt.so.1.1.0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80e3f4000-7fc80e3fc000 rw-p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80e3fc000-7fc80e3ff000 r--p 00000000 fe:00 134861 /usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/libjemalloc.so.1
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80e3ff000-7fc80e436000 r-xp 00003000 fe:00 134861 /usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/libjemalloc.so.1
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80e436000-7fc80e43e000 r--p 0003a000 fe:00 134861 /usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/libjemalloc.so.1
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80e43e000-7fc80e440000 r--p 00042000 fe:00 134861 /usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/libjemalloc.so.1
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80e440000-7fc80e441000 rw-p 00044000 fe:00 134861 /usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/libjemalloc.so.1
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80e441000-7fc80e442000 rw-p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80e442000-7fc80e445000 r--p 00000000 fe:00 131881 /usr/lib/x86_64-linux-gnu/libz.so.1.2.13
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80e445000-7fc80e458000 r-xp 00003000 fe:00 131881 /usr/lib/x86_64-linux-gnu/libz.so.1.2.13
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80e458000-7fc80e45f000 r--p 00016000 fe:00 131881 /usr/lib/x86_64-linux-gnu/libz.so.1.2.13
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80e45f000-7fc80e460000 r--p 0001c000 fe:00 131881 /usr/lib/x86_64-linux-gnu/libz.so.1.2.13
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80e460000-7fc80e461000 rw-p 0001d000 fe:00 131881 /usr/lib/x86_64-linux-gnu/libz.so.1.2.13
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80e461000-7fc80e465000 r--s 00000000 fe:00 134645 /usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/bin/ruby
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80e465000-7fc80e4b0000 r--p 00000000 fe:00 134864 /usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/libruby.so.3.3.0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80e4b0000-7fc80e89a000 r-xp 0004b000 fe:00 134864 /usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/libruby.so.3.3.0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80e89a000-7fc80ea21000 r--p 00435000 fe:00 134864 /usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/libruby.so.3.3.0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80ea21000-7fc80ea38000 r--p 005bb000 fe:00 134864 /usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/libruby.so.3.3.0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80ea38000-7fc80ea3c000 rw-p 005d2000 fe:00 134864 /usr/lib/fullstaq-ruby/versions/3.3.0-jemalloc/lib/libruby.so.3.3.0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80ea3c000-7fc80ea53000 rw-p 00000000 00:00 0
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80ea53000-7fc80ea54000 r--p 00000000 fe:00 131764 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80ea54000-7fc80ea79000 r-xp 00001000 fe:00 131764 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80ea79000-7fc80ea83000 r--p 00026000 fe:00 131764 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80ea83000-7fc80ea85000 r--p 00030000 fe:00 131764 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7fc80ea85000-7fc80ea87000 rw-p 00032000 fe:00 131764 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7ffee523b000-7ffee5a3a000 rw-p 00000000 00:00 0 [stack]
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7ffee5ba8000-7ffee5bac000 r--p 00000000 00:00 0 [vvar]
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]7ffee5bac000-7ffee5bae000 r-xp 00000000 00:00 0 [vdso]
2024-03-09T09:31:08Z app[3d8d7d99f40128] iad [info]ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]
</code></pre>
Ruby master - Bug #20328 (Open): optparse omits the option's description in the --help output if ...
https://redmine.ruby-lang.org/issues/20328
2024-03-07T22:03:25Z
postmodern (Hal Brodigan)
postmodern.mod3@gmail.com
<p>If you define an option using <code>OptionParser#on</code>, but give the option's description as a multi-line Array, then the option's description is omitted from the <code>--help</code> output.</p>
<a name="Steps-To-Reproduce"></a>
<h2 >Steps To Reproduce<a href="#Steps-To-Reproduce" class="wiki-anchor">¶</a></h2>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="c1">#!/usr/bin/env ruby</span>
<span class="nb">require</span> <span class="s1">'optparse'</span>
<span class="n">optparser</span> <span class="o">=</span> <span class="no">OptionParser</span><span class="p">.</span><span class="nf">new</span> <span class="k">do</span> <span class="o">|</span><span class="n">opts</span><span class="o">|</span>
<span class="n">opts</span><span class="p">.</span><span class="nf">banner</span> <span class="o">=</span> <span class="s1">'usage: test.rb [options]'</span>
<span class="n">opts</span><span class="p">.</span><span class="nf">on</span><span class="p">(</span><span class="s1">'-o'</span><span class="p">,</span> <span class="s1">'--opt [OPT]'</span><span class="p">,</span> <span class="s1">'Line one'</span><span class="p">)</span> <span class="k">do</span> <span class="o">|</span><span class="n">opt</span><span class="o">|</span>
<span class="k">end</span>
<span class="n">opts</span><span class="p">.</span><span class="nf">on</span><span class="p">(</span><span class="s1">'-m'</span><span class="p">,</span> <span class="s1">'--multiline-opt'</span><span class="p">,</span> <span class="p">[</span><span class="s1">'Line one'</span><span class="p">,</span> <span class="s1">'Line two'</span><span class="p">])</span> <span class="k">do</span> <span class="o">|</span><span class="nb">test</span><span class="o">|</span>
<span class="k">end</span>
<span class="n">opts</span><span class="p">.</span><span class="nf">on</span><span class="p">(</span><span class="s1">'-h'</span><span class="p">,</span> <span class="s1">'--help'</span><span class="p">,</span> <span class="s1">'Prints this help'</span><span class="p">)</span> <span class="k">do</span>
<span class="nb">puts</span> <span class="n">opts</span>
<span class="nb">exit</span>
<span class="k">end</span>
<span class="k">end</span>
<span class="n">optparser</span><span class="p">.</span><span class="nf">parse</span><span class="p">([</span><span class="s1">'--help'</span><span class="p">])</span>
</code></pre>
<a name="Expected-result"></a>
<h3 >Expected result<a href="#Expected-result" class="wiki-anchor">¶</a></h3>
<pre><code>usage: test.rb [options]
-o, --opt [OPT] Line one
-m, --multiline-opt Line one
Line two
-h, --help Prints this help
</code></pre>
<a name="Actual-Result"></a>
<h3 >Actual Result<a href="#Actual-Result" class="wiki-anchor">¶</a></h3>
<pre><code>usage: test.rb [options]
-o, --opt [OPT] Line one
-m, --multiline-opt
-h, --help Prints this help
</code></pre>
<p>or an <code>ArgumentError</code> should be raised if Array descriptions are not allowed/supported.</p>
<a name="Version-Info"></a>
<h2 >Version Info<a href="#Version-Info" class="wiki-anchor">¶</a></h2>
<p>Tested against optparse 0.1.0, 0.2.0, 0.3.1, and the master branch.</p>
Ruby master - Bug #20325 (Open): Enumerator.product.size bug with zero * infinite enumerators
https://redmine.ruby-lang.org/issues/20325
2024-03-05T15:21:08Z
marcandre (Marc-Andre Lafortune)
marcandre-ruby-core@marc-andre.ca
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="no">Enumerator</span><span class="p">.</span><span class="nf">product</span><span class="p">([],</span> <span class="mi">1</span><span class="o">..</span><span class="p">).</span><span class="nf">to_a</span> <span class="c1"># => [] (OK)</span>
<span class="no">Enumerator</span><span class="p">.</span><span class="nf">product</span><span class="p">([],</span> <span class="mi">1</span><span class="o">..</span><span class="p">).</span><span class="nf">size</span> <span class="c1"># => Infinity (Should be 0)</span>
</code></pre>
Ruby master - Bug #20319 (Open): Singleton class is being frozen lazily in some cases
https://redmine.ruby-lang.org/issues/20319
2024-03-01T11:52:12Z
andrykonchin (Andrew Konchin)
<p>I've noticed suspicious behaviour (it doesn't affect anything in practice for me though) when an object becomes frozen only its own singleton class becomes frozen immediately.</p>
<p>A singleton class of the object immediate singleton class becomes frozen lazily after <code>#singleton_class</code> method call:</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="n">o</span> <span class="o">=</span> <span class="no">Object</span><span class="p">.</span><span class="nf">new</span>
<span class="n">klass</span> <span class="o">=</span> <span class="n">o</span><span class="p">.</span><span class="nf">singleton_class</span><span class="p">.</span><span class="nf">singleton_class</span>
<span class="n">o</span><span class="p">.</span><span class="nf">freeze</span>
<span class="nb">puts</span> <span class="n">klass</span><span class="p">.</span><span class="nf">frozen?</span> <span class="c1"># false <== here we expect true</span>
<span class="nb">puts</span> <span class="n">o</span><span class="p">.</span><span class="nf">singleton_class</span><span class="p">.</span><span class="nf">singleton_class</span><span class="p">.</span><span class="nf">frozen?</span> <span class="c1"># true</span>
<span class="nb">puts</span> <span class="n">klass</span><span class="p">.</span><span class="nf">frozen?</span> <span class="c1"># true</span>
</code></pre>
<p>I would expect all created (and visible to user) singleton classes in an object singleton classes chain to become frozen immediately when the object gets frozen.</p>
Ruby master - Bug #20316 (Open): Regexp quantifier behavior changes in different syntactic context.
https://redmine.ruby-lang.org/issues/20316
2024-02-29T17:21:18Z
jirkamarsik (Jirka Marsik)
<p>In the example below, adding a vertical bar to the end of a regular expression changes what is being matched by the preceding regular expression.</p>
<pre><code>irb(main):001:0> /(|a){3}b/.match("aab")
=> #<MatchData "aab" 1:"">
irb(main):002:0> /(|a){3}b|/.match("aab")
=> #<MatchData "aab" 1:"a">
</code></pre>
<p>This is because the <code>{3}</code> quantifier is compiled into a <code>repeat</code> loop which uses the <code>OP_NULL_CHECK_END_MEMST</code> operation to perform a capture-group sensitive null-check after every loop iteration. The logic behind the <code>OP_NULL_CHECK_END_MEMST</code> operation is implemented using the <code>STACK_NULL_CHECK_MEMST</code> macro in <code>regexec.c</code>. The <code>STACK_NULL_CHECK_MEMST</code> macro checks whether any capture groups have been updated inside the last loop iteration and it does so by searching the stack for <code>STK_MEM_START</code> entries. However, such entries are not used for all capture groups. They are only used by capture groups which are listed in <code>bt_mem_start</code>. A capture group is marked as needing such bookkeeping only when it is either referenced by a back-reference or it appears in certain syntactic contexts (see e.g. around line 4096 of <code>regcomp.c</code>). This looks like an optimization that tries to avoid polluting the stack with <code>STK_MEM_START</code> entries in cases in which they are not needed. However, in this case, not putting <code>STK_MEM_START</code> entries on the stack leads to a different match result.</p>
<p>In the example above, by adding a vertical bar to the end of the regexp, we have placed the group <code>(|a)</code> inside an alternation. This means that a different operation for tracking the state of the capture group is emitted in the compiled bytecode and this leads to a different result. Incidentally, this result should be the correct result, as the null-check ends up respecting the state of capture groups, as it tries to do in Ruby.</p>
<p>This is the compilation and execution of <code>/(|a){3}b/.match("aab")</code> with ONIG_DEBUG_PARSE_TREE, ONIG_DEBUG_COMPILE and ONIG_DEBUG_MATCH. Note that <code>mem-start:1</code> is used for tracking the state of capture group 1.</p>
<pre><code>PATTERN: /(|a){3}b/ (US-ASCII)
<list:55db929991f0>
<quantifier:55db92999230>{3,3}
<enclose:55db92999330> memory:1
<alt:55db929991b0>
<string:55db929992f0>
<string:55db929992b0>a
<string:55db929993b0>b
optimize: EXACT
anchor: []
sub anchor: []
exact: [b]: length: 1
code length: 37
0:[repeat:0:27] 7:[null-check-start:0] 10:[mem-start:1] 13:[push:(+5)] 18:[jump:(+2)]
23:[exact1:a] 25:[mem-end:1] 28:[null-check-end-memst:0] 31:[repeat-inc:0] 34:[exact1:b]
36:[end]
match_at: str: 139809364021904 (0x7f27e77a9290), end: 139809364021906 (0x7f27e77a9292), start: 139809364021904 (0x7f27e77a9290), sprev: 0 ((nil))
size: 2, start offset: 0
ofs> str stk:type addr:opcode
0> "ab" 0:Alt 0:[repeat:0:27]
0> "ab" 1:Rep 7:[null-check-start:0]
0> "ab" 2:NulChS 10:[mem-start:1]
0> "ab" 2:NulChS 13:[push:(+5)]
0> "ab" 3:Alt 18:[jump:(+2)]
0> "ab" 3:Alt 25:[mem-end:1]
0> "ab" 3:Alt 28:[null-check-end-memst:0]
NULL_CHECK_END_MEMST: skip id:0, s:139809364021904 (0x7f27e77a9290)
0> "ab" 3:Alt 34:[exact1:b]
0> "ab" 2:NulChS 23:[exact1:a]
1> "b" 2:NulChS 25:[mem-end:1]
1> "b" 2:NulChS 28:[null-check-end-memst:0]
1> "b" 2:NulChS 31:[repeat-inc:0]
1> "b" 3:RepInc 7:[null-check-start:0]
1> "b" 4:NulChS 10:[mem-start:1]
1> "b" 4:NulChS 13:[push:(+5)]
1> "b" 5:Alt 18:[jump:(+2)]
1> "b" 5:Alt 25:[mem-end:1]
1> "b" 5:Alt 28:[null-check-end-memst:0]
NULL_CHECK_END_MEMST: skip id:0, s:139809364021905 (0x7f27e77a9291)
1> "b" 5:Alt 34:[exact1:b]
2> "" 5:Alt 36:[end]
</code></pre>
<p>This is the compilation and execution of <code>/(|a){3}b|/.match("aab")</code> (where the group <code>(|a)</code> appears inside an alternation) with ONIG_DEBUG_PARSE_TREE, ONIG_DEBUG_COMPILE and ONIG_DEBUG_MATCH. Note that <code>mem-start-push:1</code> is used for tracking the state of capture group 1, not <code>mem-start:1</code>.</p>
<pre><code>PATTERN: /(|a){3}b|/ (US-ASCII)
<alt:55d9a91cc3c0>
<list:55d9a91cc200>
<quantifier:55d9a91cc240>{3,3}
<enclose:55d9a91cc340> memory:1
<alt:55d9a91cc1c0>
<string:55d9a91cc300>
<string:55d9a91cc2c0>a
<string:55d9a91cc480>b
<string:55d9a91cc400>
optimize: NONE
anchor: []
code length: 47
0:[push:(+41)] 5:[repeat:0:27] 12:[null-check-start:0] 15:[mem-start-push:1] 18:[push:(+5)]
23:[jump:(+2)] 28:[exact1:a] 30:[mem-end:1] 33:[null-check-end-memst:0] 36:[repeat-inc:0]
39:[exact1:b] 41:[jump:(+0)] 46:[end]
match_at: str: 140072854131304 (0x7f6540b69268), end: 140072854131306 (0x7f6540b6926a), start: 140072854131304 (0x7f6540b69268), sprev: 0 ((nil))
size: 2, start offset: 0
ofs> str stk:type addr:opcode
0> "ab" 0:Alt 0:[push:(+41)]
0> "ab" 1:Alt 5:[repeat:0:27]
0> "ab" 2:Rep 12:[null-check-start:0]
0> "ab" 3:NulChS 15:[mem-start-push:1]
0> "ab" 4:MemS 18:[push:(+5)]
0> "ab" 5:Alt 23:[jump:(+2)]
0> "ab" 5:Alt 30:[mem-end:1]
0> "ab" 5:Alt 33:[null-check-end-memst:0]
0> "ab" 5:Alt 36:[repeat-inc:0]
0> "ab" 6:RepInc 12:[null-check-start:0]
0> "ab" 7:NulChS 15:[mem-start-push:1]
0> "ab" 8:MemS 18:[push:(+5)]
0> "ab" 9:Alt 23:[jump:(+2)]
0> "ab" 9:Alt 30:[mem-end:1]
0> "ab" 9:Alt 33:[null-check-end-memst:0]
NULL_CHECK_END_MEMST: skip id:0, s:140072854131304 (0x7f6540b69268)
0> "ab" 9:Alt 39:[exact1:b]
0> "ab" 8:MemS 28:[exact1:a]
1> "b" 8:MemS 30:[mem-end:1]
1> "b" 8:MemS 33:[null-check-end-memst:0]
1> "b" 8:MemS 36:[repeat-inc:0]
1> "b" 9:RepInc 12:[null-check-start:0]
1> "b" 10:NulChS 15:[mem-start-push:1]
1> "b" 11:MemS 18:[push:(+5)]
1> "b" 12:Alt 23:[jump:(+2)]
1> "b" 12:Alt 30:[mem-end:1]
1> "b" 12:Alt 33:[null-check-end-memst:0]
1> "b" 12:Alt 36:[repeat-inc:0]
1> "b" 13:RepInc 39:[exact1:b]
2> "" 13:RepInc 41:[jump:(+0)]
2> "" 13:RepInc 46:[end]
</code></pre>
Ruby master - Bug #20315 (Open): Quantifier expansion leads to different results in Regexp.
https://redmine.ruby-lang.org/issues/20315
2024-02-29T16:59:34Z
jirkamarsik (Jirka Marsik)
<p>Consider the following series of regular expression matches:</p>
<pre><code>irb(main):001:0> /(|a)(|a)(|a)(|a)(|a)b/.match("aaaab")
=> #<MatchData "aaaab" 1:"" 2:"a" 3:"a" 4:"a" 5:"a">
irb(main):002:0> /(|a)(|a)(|a)(|a)b/.match("aaab")
=> #<MatchData "aaab" 1:"" 2:"a" 3:"a" 4:"a">
irb(main):003:0> /(|a)(|a)(|a)b/.match("aab")
=> #<MatchData "aab" 1:"" 2:"a" 3:"a">
irb(main):004:0> /(|a)(|a)b/.match("ab")
=> #<MatchData "ab" 1:"" 2:"a">
</code></pre>
<p>Let <code>X^{N}</code> mean <code>N</code> concatenated repetitions of <code>X</code>. When matching the pattern <code>/(|a)^{N}b/</code> against <code>a^{N-1}b</code>, the first group will match the empty string and the last <code>N-1</code> groups will match <code>a</code>.</p>
<p>Now, let's look at this series of similar expressions, in which <code>(|a)^{N}</code> is replaced with <code>(|a){N}</code>, i.e. a counted quantifier.</p>
<pre><code>irb(main):001:0> /(|a){5}b/.match("aaaab")
=> #<MatchData "aaaab" 1:"">
irb(main):002:0> /(|a){4}b/.match("aaab")
=> #<MatchData "aaab" 1:"">
irb(main):003:0> /(|a){3}b/.match("aab")
=> #<MatchData "aab" 1:"">
irb(main):004:0> /(|a){2}b/.match("ab")
=> #<MatchData "ab" 1:"a">
</code></pre>
<p>When matching the pattern <code>/(|a){N}b/</code> against <code>a^{N-1}b</code>, the first <code>N-1</code> iterations will match <code>a</code> and the <code>N</code>-th iteration will match the empty string (compare this with the behavior of the first series of expressions). However, something strange happens when <code>N</code> is 2. We end up getting a result which is not consistent with this series, but looks like a result that belongs to the first series discussed above.</p>
<p>This is due to quantifier expansion done by the regexp compiler (see usages of <code>QUANTIFIER_EXPAND_LIMIT_SIZE</code> in <code>regcomp.c</code>). This is an optimization that tries to remove the overhead of managing a counted repetition during regex execution at the cost of increasing the size of the compiled regex bytecode. The source of the inconsistency is caused by the fact that this optimization can actually change the semantics of the regular expression, because as we have seen above, <code>X^{N}</code> (<code>X</code> repeated <code>N</code> times) can have different semantics from <code>X{N}</code> (a single <code>X</code> with an <code>{N}</code> quantifier).</p>
<p>Compilation and execution of <code>/(|a){3}b/.match("aab")</code> with <code>ONIG_DEBUG_PARSE_TREE</code>, <code>ONIG_DEBUG_COMPILE</code> and <code>ONIG_DEBUG_MATCH</code>:</p>
<pre><code>PATTERN: /(|a){3}b/ (US-ASCII)
<list:556161bb11f0>
<quantifier:556161bb1230>{3,3}
<enclose:556161bb1330> memory:1
<alt:556161bb11b0>
<string:556161bb12f0>
<string:556161bb12b0>a
<string:556161bb13b0>b
optimize: EXACT
anchor: []
sub anchor: []
exact: [b]: length: 1
code length: 37
0:[repeat:0:27] 7:[null-check-start:0] 10:[mem-start:1] 13:[push:(+5)] 18:[jump:(+2)]
23:[exact1:a] 25:[mem-end:1] 28:[null-check-end-memst:0] 31:[repeat-inc:0] 34:[exact1:b]
36:[end]
match_at: str: 140607416406704 (0x7fe1b71b92b0), end: 140607416406706 (0x7fe1b71b92b2), start: 140607416406704 (0x7fe1b71b92b0), sprev: 0 ((nil))
size: 2, start offset: 0
ofs> str stk:type addr:opcode
0> "ab" 0:Alt 0:[repeat:0:27]
0> "ab" 1:Rep 7:[null-check-start:0]
0> "ab" 2:NulChS 10:[mem-start:1]
0> "ab" 2:NulChS 13:[push:(+5)]
0> "ab" 3:Alt 18:[jump:(+2)]
0> "ab" 3:Alt 25:[mem-end:1]
0> "ab" 3:Alt 28:[null-check-end-memst:0]
NULL_CHECK_END_MEMST: skip id:0, s:140607416406704 (0x7fe1b71b92b0)
0> "ab" 3:Alt 34:[exact1:b]
0> "ab" 2:NulChS 23:[exact1:a]
1> "b" 2:NulChS 25:[mem-end:1]
1> "b" 2:NulChS 28:[null-check-end-memst:0]
1> "b" 2:NulChS 31:[repeat-inc:0]
1> "b" 3:RepInc 7:[null-check-start:0]
1> "b" 4:NulChS 10:[mem-start:1]
1> "b" 4:NulChS 13:[push:(+5)]
1> "b" 5:Alt 18:[jump:(+2)]
1> "b" 5:Alt 25:[mem-end:1]
1> "b" 5:Alt 28:[null-check-end-memst:0]
NULL_CHECK_END_MEMST: skip id:0, s:140607416406705 (0x7fe1b71b92b1)
1> "b" 5:Alt 34:[exact1:b]
2> "" 5:Alt 36:[end]
</code></pre>
<p>Compilation and execution of <code>/(|a){2}b/.match("ab")</code> with <code>ONIG_DEBUG_PARSE_TREE</code>, <code>ONIG_DEBUG_COMPILE</code> and <code>ONIG_DEBUG_MATCH</code>:</p>
<pre><code>PATTERN: /(|a){2}b/ (US-ASCII)
<list:55bbc826c1f0>
<quantifier:55bbc826c230>{2,2}
<enclose:55bbc826c330> memory:1
<alt:55bbc826c1b0>
<string:55bbc826c2f0>
<string:55bbc826c2b0>a
<string:55bbc826c3b0>b
optimize: EXACT
anchor: []
sub anchor: []
exact: [b]: length: 1
code length: 39
0:[mem-start:1] 3:[push:(+5)] 8:[jump:(+2)] 13:[exact1:a] 15:[mem-end:1]
18:[mem-start:1] 21:[push:(+5)] 26:[jump:(+2)] 31:[exact1:a] 33:[mem-end:1]
36:[exact1:b] 38:[end]
match_at: str: 140139875963504 (0x7f74db869270), end: 140139875963506 (0x7f74db869272), start: 140139875963504 (0x7f74db869270), sprev: 0 ((nil))
size: 2, start offset: 0
ofs> str stk:type addr:opcode
0> "ab" 0:Alt 0:[mem-start:1]
0> "ab" 0:Alt 3:[push:(+5)]
0> "ab" 1:Alt 8:[jump:(+2)]
0> "ab" 1:Alt 15:[mem-end:1]
0> "ab" 1:Alt 18:[mem-start:1]
0> "ab" 1:Alt 21:[push:(+5)]
0> "ab" 2:Alt 26:[jump:(+2)]
0> "ab" 2:Alt 33:[mem-end:1]
0> "ab" 2:Alt 36:[exact1:b]
0> "ab" 1:Alt 31:[exact1:a]
1> "b" 1:Alt 33:[mem-end:1]
1> "b" 1:Alt 36:[exact1:b]
2> "" 1:Alt 38:[end]
</code></pre>
Ruby master - Bug #20314 (Open): Simultaneous Timeout expires may raise an exception after the block
https://redmine.ruby-lang.org/issues/20314
2024-02-29T06:25:26Z
mame (Yusuke Endoh)
mame@ruby-lang.org
<p>Launchable reports <code>TestTimeout#test_nested_timeout</code> as a flaky test, and I reproduced it as follows.</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="nb">require</span> <span class="s2">"timeout"</span>
<span class="k">class</span> <span class="nc">A</span> <span class="o"><</span> <span class="no">Exception</span>
<span class="k">end</span>
<span class="k">class</span> <span class="nc">B</span> <span class="o"><</span> <span class="no">Exception</span>
<span class="k">end</span>
<span class="k">begin</span>
<span class="no">Timeout</span><span class="p">.</span><span class="nf">timeout</span><span class="p">(</span><span class="mf">0.1</span><span class="p">,</span> <span class="no">A</span><span class="p">)</span> <span class="k">do</span>
<span class="no">Timeout</span><span class="p">.</span><span class="nf">timeout</span><span class="p">(</span><span class="mf">0.1</span><span class="p">,</span> <span class="no">B</span><span class="p">)</span> <span class="k">do</span>
<span class="kp">nil</span> <span class="k">while</span> <span class="kp">true</span>
<span class="k">end</span>
<span class="k">end</span>
<span class="k">rescue</span> <span class="no">A</span><span class="p">,</span> <span class="no">B</span>
<span class="nb">p</span> <span class="vg">$!</span> <span class="c1">#=> #<A: execution expired></span>
<span class="c1"># Exception B is raised after the above call returns</span>
<span class="c1">#=> test.rb:16:in `p': execution expired (B)</span>
<span class="nb">p</span> <span class="ss">:end</span> <span class="c1"># not reach</span>
<span class="k">end</span>
</code></pre>
<p>This is because the timer thread performs two consecutive <code>Thread#raise</code> to the target thread.</p>
<p>I have discussed this with <a class="user active user-mention" href="https://redmine.ruby-lang.org/users/17">@ko1 (Koichi Sasada)</a> and have come up with three solutions.</p>
<a name="Solution-1"></a>
<h3 >Solution 1<a href="#Solution-1" class="wiki-anchor">¶</a></h3>
<p>When multiple nested Timeouts expire simultaneously, raise an exception for the outer-most Timeout and let the inner Timeouts expire without throwing an exception. In the above example, it would only raise A.</p>
<p>The problem with this approach is that if you are rescuing A in the inner block, it may never ends:</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="no">Timeout</span><span class="p">.</span><span class="nf">timeout</span><span class="p">(</span><span class="mf">0.1</span><span class="p">,</span> <span class="no">A</span><span class="p">)</span> <span class="k">do</span>
<span class="no">Timeout</span><span class="p">.</span><span class="nf">timeout</span><span class="p">(</span><span class="mf">0.1</span><span class="p">,</span> <span class="no">B</span><span class="p">)</span> <span class="k">do</span>
<span class="k">begin</span>
<span class="nb">sleep</span>
<span class="k">rescue</span> <span class="no">A</span>
<span class="nb">sleep</span> <span class="c1"># The exception A is caught. The inner Timeout is already expired, so the code (may) never end.</span>
<span class="k">end</span>
<span class="k">end</span>
<span class="k">end</span>
</code></pre>
<p>Note that, if A and B did not occur at the same time, it would raise B. This is a race condition.</p>
<a name="Solution-2"></a>
<h3 >Solution 2<a href="#Solution-2" class="wiki-anchor">¶</a></h3>
<p>When multiple nested Timeouts expire simultaneously, raise an exception for the inner-most Timeout and let the outer Timeouts wait until the inner-most Timeout returns. In the above example, it would raise either A or B, not both.</p>
<p>The problem with this approach is that if you are rescuing B in the inner block, it never ends:</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="no">Timeout</span><span class="p">.</span><span class="nf">timeout</span><span class="p">(</span><span class="mf">0.1</span><span class="p">,</span> <span class="no">A</span><span class="p">)</span> <span class="k">do</span>
<span class="no">Timeout</span><span class="p">.</span><span class="nf">timeout</span><span class="p">(</span><span class="mf">0.1</span><span class="p">,</span> <span class="no">B</span><span class="p">)</span> <span class="k">do</span>
<span class="k">begin</span>
<span class="nb">sleep</span>
<span class="k">rescue</span> <span class="no">B</span>
<span class="nb">sleep</span> <span class="c1"># The outer Timeout waits for the inner timeout, and the inner Timeout never return. So this code never ends.</span>
<span class="k">end</span>
<span class="k">end</span>
<span class="k">end</span>
</code></pre>
<a name="Solution-3"></a>
<h3 >Solution 3<a href="#Solution-3" class="wiki-anchor">¶</a></h3>
<p>Make thread interrupt queue one length. If the target thread has already been <code>Thread#raise(A)</code>, the new <code>Thread#raise(B)</code> blocks until the target thread processes A.</p>
<p>Since there will be no more simultaneous Thread#raise, there will be no more exceptions after the end of the block. The timeout timer thread should be changed in consideration that <code>Thread#raise</code> may block.</p>
Ruby master - Bug #20301 (Open): `Set#add?` does two hash look-ups
https://redmine.ruby-lang.org/issues/20301
2024-02-26T02:42:35Z
AMomchilov (Alexander Momchilov)
<p>A common usage of <code>Set</code>s is to keep track of seen objects, and do something different whenever an object is seen for the first time, e.g.:</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="no">SEEN_VALUES</span> <span class="o">=</span> <span class="no">Set</span><span class="p">.</span><span class="nf">new</span>
<span class="k">def</span> <span class="nf">receive_value</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
<span class="k">if</span> <span class="no">SEEN_VALUES</span><span class="p">.</span><span class="nf">add?</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
<span class="nb">puts</span> <span class="s2">"Saw </span><span class="si">#{</span><span class="n">value</span><span class="si">}</span><span class="s2"> for the first time."</span>
<span class="k">else</span>
<span class="nb">puts</span> <span class="s2">"Already seen </span><span class="si">#{</span><span class="n">value</span><span class="si">}</span><span class="s2">, ignoring."</span>
<span class="k">end</span>
<span class="k">end</span>
<span class="n">receive_value</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="c1"># Saw 1 for the first time.</span>
<span class="n">receive_value</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span> <span class="c1"># Saw 2 for the first time.</span>
<span class="n">receive_value</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span> <span class="c1"># Saw 3 for the first time.</span>
<span class="n">receive_value</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="c1"># Already seen 1, ignoring.</span>
</code></pre>
<p>Readers might reasonably assume that <code>add?</code> is only looking up into the set a single time, but it's actually doing two separate look-ups! (<a href="https://github.com/ruby/ruby/blob/c976cb5/lib/set.rb#L517-L525" class="external">source</a>)</p>
<pre><code class="rb syntaxhl" data-language="rb"><span class="k">class</span> <span class="nc">Set</span>
<span class="k">def</span> <span class="nf">add?</span><span class="p">(</span><span class="n">o</span>
<span class="c1"># 1. `include?(o)` looks up into `@hash`</span>
<span class="c1"># 2. if the value isn't there, `add(o)` does a second look-up into `@hash`</span>
<span class="n">add</span><span class="p">(</span><span class="n">o</span><span class="p">)</span> <span class="k">unless</span> <span class="kp">include</span><span class="p">?(</span><span class="n">o</span><span class="p">)</span>
<span class="k">end</span>
<span class="k">end</span>
</code></pre>
<p>This gets especially expensive if the values are large hash/arrays/objects, whose <code>#hash</code> is expensive to compute.</p>
<p>We can optimize this if it was possible to set a value in hash, <em>and</em> retrieve the value that was already there, in a single go. I propose adding <code>Hash#exchange_value</code> to do exactly that. If that existed, we can re-implement <code>#add?</code> as:</p>
<pre><code class="rb syntaxhl" data-language="rb"><span class="k">class</span> <span class="nc">Set</span>
<span class="k">def</span> <span class="nf">add?</span><span class="p">(</span><span class="n">o</span><span class="p">)</span>
<span class="c1"># Only requires a single look-up into `@hash`!</span>
<span class="nb">self</span> <span class="k">unless</span> <span class="vi">@hash</span><span class="p">.</span><span class="nf">exchange_value</span><span class="p">(</span><span class="n">o</span><span class="p">,</span> <span class="kp">true</span><span class="p">)</span>
<span class="k">end</span>
</code></pre>
<p>Here's a proof-of-concept implementation: <a href="https://github.com/ruby/ruby/pull/10093" class="external">https://github.com/ruby/ruby/pull/10093</a></p>
<a name="Theory"></a>
<h1 >Theory<a href="#Theory" class="wiki-anchor">¶</a></h1>
<p>How much of a benefit this has depends on 2 factors:</p>
<ol>
<li>How much <code>#hash</code> is called, which depends on how many <strong>new</strong> objects are added to the set.
<ul>
<li>If every object is new, then <code>#hash</code> used to be called twice on every <code>#add?</code>.
<ul>
<li>This is where this improvement makes the biggest (2x!) change.</li>
</ul>
</li>
<li>If every object has already been seen, then <code>#hash</code> was never being called twice before anyway, so there would be no improvement.
<ul>
<li>It's important to not regress in this case, because many use cases of sets don't deal with many distinct objects, but just need to do quick checks against an existing set.</li>
</ul>
</li>
<li>Every other case lies somewhere in between those two, depending on the % of objects which are new.</li>
</ul>
</li>
<li>How slow <code>#hash</code> is to compute for the key
<ul>
<li>If the hash is slow to compute, this change will make a bigger improvement</li>
<li>If the hash value is fast to compute, then it won't matter as much. Even if we called it half as much, it's a minority of the total time, so it won't have much net impact.</li>
</ul>
</li>
</ol>
<a name="Benchmark-summary"></a>
<h1 >Benchmark summary<a href="#Benchmark-summary" class="wiki-anchor">¶</a></h1>
<table>
<thead>
<tr>
<th></th>
<th align="right">All objects are new</th>
<th align="right">All objects are preexisting</th>
</tr>
</thead>
<tbody>
<tr>
<td>objects with slow <code>#hash</code>
</td>
<td align="right">100.0%</td>
<td align="right">~0.0%</td>
</tr>
<tr>
<td>objects with fast <code>#hash</code>
</td>
<td align="right">24.5%</td>
<td align="right">4.6%</td>
</tr>
</tbody>
</table>
<p>As we see, this change makes a huge improvement the cases where it helps, and crucially, doesn't slow down the cases where it can't.</p>
<p>For the complete benchmark source code and results, see the PR: <a href="https://github.com/ruby/ruby/pull/10093" class="external">https://github.com/ruby/ruby/pull/10093</a></p>
Ruby master - Bug #20299 (Open): Tracepoint staying enable after a disable
https://redmine.ruby-lang.org/issues/20299
2024-02-26T01:06:28Z
MaxLap (Maxime Lapointe)
hunter_spawn@hotmail.com
<p>Problem is present in Ruby 3.2.2, 3.2.3, 3.3.0. Didn't check before.</p>
<p>It seems that TracePoint can sometime be "stuck" enabled after using disabled once on it.</p>
<p>Here is a reproduction step using a "check speed" method that just does some work and print out how long it takes. This makes it pretty clear when TracePoint was on.</p>
<p>Put this in a Ruby file:</p>
<pre><code>def check_speed(msg)
t1 = Time.now.to_f
a = 0
1000000.times { |i|
a += 10
}
t2 = Time.now.to_f
puts "#{t2-t1} - #{msg}"
end
check_speed("before") # fast
trace = TracePoint.new(:line) {}
trace.enable
check_speed("after enable") # slow
trace.enable {
check_speed("in block enable") # slow
}
check_speed("after block enable") # slow
trace.disable
check_speed("after disable") # slow !!!!
trace.disable
check_speed("after disable again") # fast !!!!
# And yet, using enable multiple time doesn't have a "counter" or similar
trace.enable
trace.enable
trace.enable
check_speed("after triple enable") # slow
trace.disable
check_speed("after single disable") # fast
</code></pre>
<p>Running the file, we get this:</p>
<pre><code>$ ruby -v
ruby 3.3.0 (2023-12-25 revision 5124f9ac75) [x86_64-linux]
$ ruby local.rb
0.03473854064941406 - before
0.18935227394104004 - after enable
0.17757630348205566 - in block enable
0.18320131301879883 - after block enable
0.1818866729736328 - after disable
0.03412747383117676 - after disable again
0.18405628204345703 - after triple enable
0.033496856689453125 - after single disable
</code></pre>
<p>The first "after disable" should probably have been fast. If it's possible to have multiple nested enable/disable, then one would instead assume that after the last "single disable", things would still be slow.</p>
<p>Note: This code patterns comes directly for a ruby/spec: ctrl+f for "enables trace object on calling with a block if it was already enabled"</p>
<p>I note that in Ruby 3.2, the timing are a lot less similar. I don't know why. It would seem like TracePoint got slower in Ruby 3.3.0. Is that worth checking out / making a distincct bug for?</p>
<pre><code>$ rvm use 3.2.3
Using /home/max/.rvm/gems/ruby-3.2.3
$ ruby local.rb
0.03246927261352539 - before
0.07910513877868652 - after enable
0.10309600830078125 - in block enable
0.12397646903991699 - after block enable
0.07114601135253906 - after disable
0.028218746185302734 - after disable again
0.12534689903259277 - after triple enable
0.02810525894165039 - after single disable
</code></pre>
Ruby master - Bug #20294 (Open): Parser no longer warns on some duplicated keys
https://redmine.ruby-lang.org/issues/20294
2024-02-22T14:09:39Z
kddnewton (Kevin Newton)
kddnewton@gmail.com
<p>Previously, the parser would warn on all duplicated keys. Now some cases are not handled:</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="p">{</span> <span class="mf">100.0</span> <span class="o">=></span> <span class="mi">1</span><span class="p">,</span> <span class="mf">1e2</span> <span class="o">=></span> <span class="mi">1</span> <span class="p">}</span>
<span class="p">{</span> <span class="mf">100.0</span> <span class="o">=></span> <span class="mi">1</span><span class="p">,</span> <span class="mf">1E2</span> <span class="o">=></span> <span class="mi">1</span> <span class="p">}</span>
<span class="p">{</span> <span class="mf">100.0</span> <span class="o">=></span> <span class="mi">1</span><span class="p">,</span> <span class="mf">100.00</span> <span class="o">=></span> <span class="mi">1</span> <span class="p">}</span>
<span class="p">{</span> <span class="mf">100.0</span><span class="n">r</span> <span class="o">=></span> <span class="mi">1</span><span class="p">,</span> <span class="mf">100.00</span><span class="n">r</span> <span class="o">=></span> <span class="mi">1</span> <span class="p">}</span>
<span class="p">{</span> <span class="mf">100.0</span><span class="n">i</span> <span class="o">=></span> <span class="mi">1</span><span class="p">,</span> <span class="mf">100.00</span><span class="n">i</span> <span class="o">=></span> <span class="mi">1</span> <span class="p">}</span>
</code></pre>
Ruby master - Bug #20283 (Open): Build failed since Ruby 3.2.3 if Xcode.app was renamed to space ...
https://redmine.ruby-lang.org/issues/20283
2024-02-20T06:41:28Z
watson1978 (Shizuo Fujita)
watson1978@gmail.com
<p>When I renamed Xcode.app to space contained name (like <code>Xcode 15.2.0.app</code>), then I met build error with Ruby 3.2.3 and Ruby 3.3.0.<br>
(Ruby 3.2.2 can be built with successfully.)</p>
<a name="How-to-reproduce"></a>
<h2 >How to reproduce<a href="#How-to-reproduce" class="wiki-anchor">¶</a></h2>
<pre><code>$ sudo mv /Applications/Xcode.app '/Applications/Xcode 15.2.app'
$ sudo xcode-select --switch '/Applications/Xcode 15.2.app'
$ tar xzf ruby-3.2.3.tar.xz
$ cd ruby-3.2.3
$ ./configure
$ make V=1
:
clang -fdeclspec -O3 -fno-fast-math -ggdb3 -Wall -Wextra -Wextra-tokens -Wdeprecated-declarations -Wdivision-by-zero -Wdiv-by-zero -Wimplicit-function-declaration -Wimplicit-int -Wmisleading-indentation -Wpointer-arith -Wshorten-64-to-32 -Wwrite-strings -Wold-style-definition -Wmissing-noreturn -Wno-cast-function-type -Wno-constant-logical-operand -Wno-long-long -Wno-missing-field-initializers -Wno-overlength-strings -Wno-parentheses-equality -Wno-self-assign -Wno-tautological-compare -Wno-unused-parameter -Wno-unused-value -Wunused-variable -Wundef -pipe -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-strong -fno-strict-overflow -fvisibility=hidden -DRUBY_EXPORT -fPIE -I. -I.ext/include/arm64-darwin23 -I./include -I. -I./enc/unicode/15.0.0 -I/opt/homebrew/include -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -D_DARWIN_UNLIMITED_SELECT -D_REENTRANT -o dmyenc.o -c dmyenc.c
rustc --crate-name=yjit --crate-type=staticlib --edition=2021 -g -C opt-level=3 -C overflow-checks=on '--out-dir=/Users/watson/prj/ruby-3.2.3/yjit/target/release/' ./yjit/src/lib.rs
touch yjit/target/release/libyjit.a
clang -fdeclspec -O3 -fno-fast-math -ggdb3 -Wall -Wextra -Wextra-tokens -Wdeprecated-declarations -Wdivision-by-zero -Wdiv-by-zero -Wimplicit-function-declaration -Wimplicit-int -Wmisleading-indentation -Wpointer-arith -Wshorten-64-to-32 -Wwrite-strings -Wold-style-definition -Wmissing-noreturn -Wno-cast-function-type -Wno-constant-logical-operand -Wno-long-long -Wno-missing-field-initializers -Wno-overlength-strings -Wno-parentheses-equality -Wno-self-assign -Wno-tautological-compare -Wno-unused-parameter -Wno-unused-value -Wunused-variable -Wundef -pipe -L. -L/opt/homebrew/lib -fstack-protector-strong -fstack-protector-strong -Wl,-pie -framework CoreFoundation main.o dmydln.o miniinit.o dmyext.o array.o ast.o bignum.o class.o compar.o compile.o complex.o cont.o debug.o debug_counter.o dir.o dln_find.o encoding.o enum.o enumerator.o error.o eval.o file.o gc.o hash.o inits.o io.o io_buffer.o iseq.o load.o marshal.o math.o memory_view.o mjit.o mjit_c.o node.o numeric.o object.o pack.o parse.o proc.o process.o ractor.o random.o range.o rational.o re.o regcomp.o regenc.o regerror.o regexec.o regparse.o regsyntax.o ruby.o scheduler.o shape.o signal.o sprintf.o st.o strftime.o string.o struct.o symbol.o thread.o time.o transcode.o transient_heap.o util.o variable.o version.o vm.o vm_backtrace.o vm_dump.o vm_sync.o vm_trace.o yjit.o coroutine/arm64/Context.o enc/ascii.o enc/us_ascii.o enc/unicode.o enc/utf_8.o enc/trans/newline.o explicit_bzero.o setproctitle.o addr2line.o yjit/target/release/libyjit.a -lgmp -ldl -lobjc -lpthread -lpthread -o miniruby
ld: warning: ignoring duplicate libraries: '-lpthread'
ld: Undefined symbols:
_coroutine_transfer, referenced from:
_fiber_setcontext in cont.o
clang: error: linker command failed with exit code 1 (use -v to see invocation)
</code></pre>
<a name="Environment"></a>
<h2 >Environment<a href="#Environment" class="wiki-anchor">¶</a></h2>
<ul>
<li>Apple M1 Max</li>
<li>macOS 14.3.1</li>
<li>clang 15.0.0 (clang-1500.1.0.2.5)</li>
<li>rustc 1.75.0</li>
</ul>
<a name="Note"></a>
<h2 >Note<a href="#Note" class="wiki-anchor">¶</a></h2>
<p>This problem occurs on Intel Mac and Apple M1 Mac both.</p>
Ruby master - Bug #20271 (Open): Issue with moving embedded string across ractors
https://redmine.ruby-lang.org/issues/20271
2024-02-16T16:29:35Z
luke-gru (Luke Gruber)
luke.gru@gmail.com
<p>When embedded strings are moved, not all the embedded bytes are copied over to the new embedded string. This shows itself when<br>
an embedded string has more than 16 characters.</p>
<p>For example:</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="n">r</span> <span class="o">=</span> <span class="no">Ractor</span><span class="p">.</span><span class="nf">new</span> <span class="p">{</span>
<span class="n">foo</span> <span class="o">=</span> <span class="n">receive</span>
<span class="nb">puts</span> <span class="n">foo</span>
<span class="n">foo</span>
<span class="p">}</span>
<span class="n">obj</span> <span class="o">=</span> <span class="s2">"12345678"</span> <span class="o">*</span> <span class="mi">3</span>
<span class="nb">puts</span> <span class="n">obj</span>
<span class="n">r</span><span class="p">.</span><span class="nf">send</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="ss">move: </span><span class="kp">true</span><span class="p">)</span>
<span class="n">r</span><span class="p">.</span><span class="nf">take</span>
</code></pre>
<pre><code>123456781234567812345678
1234567812345678
</code></pre>
Ruby master - Bug #20269 (Open): bignum too big to convert into `long' when running String#bytesl...
https://redmine.ruby-lang.org/issues/20269
2024-02-15T16:22:39Z
simpliandy (Andy Pfister)
andy.pfister@simplificator.com
<p>Running <code>String#byteslice</code> on Ruby 3.3 on Windows results in an error when using any number bigger than 32 bits:</p>
<pre><code>"".byteslice(0, 2547483647)
(irb):1:in `byteslice': bignum too big to convert into `long' (RangeError)
from (irb):1:in `<main>'
from <internal:kernel>:187:in `loop'
from C:/Ruby33-x64/lib/ruby/gems/3.3.0/gems/irb-1.11.0/exe/irb:9:in `<top (required)>'
from C:/Ruby33-x64/bin/irb:33:in `load'
from C:/Ruby33-x64/bin/irb:33:in `<main>'
</code></pre>
<p>It works fine on MacOS:</p>
<pre><code>irb(main):001> "".byteslice(0, 2547483647)
=> ""
irb(main):002> exit
Andys-MBP:project apf$ ruby -v
ruby 3.3.0 (2023-12-25 revision 5124f9ac75) [x86_64-darwin23]
</code></pre>
Ruby master - Bug #20267 (Open): Hashes that use ar_table aren't moved properly across ractors
https://redmine.ruby-lang.org/issues/20267
2024-02-15T15:56:49Z
luke-gru (Luke Gruber)
luke.gru@gmail.com
<p>This crashes in debug build and gives weird results in non debug build, because the ar_table values aren't copied over to the new "embedded" hash during a move across ractors.</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="n">r</span> <span class="o">=</span> <span class="no">Ractor</span><span class="p">.</span><span class="nf">new</span> <span class="p">{</span>
<span class="nb">hash</span> <span class="o">=</span> <span class="n">receive</span>
<span class="nb">puts</span> <span class="nb">hash</span>
<span class="p">}</span>
<span class="n">obj</span> <span class="o">=</span> <span class="p">{</span>
<span class="s2">"1"</span> <span class="o">=></span> <span class="mi">1</span><span class="p">,</span>
<span class="s2">"2"</span> <span class="o">=></span> <span class="mi">2</span><span class="p">,</span>
<span class="s2">"3"</span> <span class="o">=></span> <span class="mi">3</span><span class="p">,</span>
<span class="p">}</span>
<span class="nb">puts</span> <span class="n">obj</span>
<span class="n">r</span><span class="p">.</span><span class="nf">send</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="ss">move: </span><span class="kp">true</span><span class="p">)</span>
<span class="n">r</span><span class="p">.</span><span class="nf">take</span>
</code></pre>
<p>Crash log:</p>
<pre><code>/home/lukeg/workspace/ruby-build/miniruby(sigsegv+0x4d) [0x5641e67d105d] ../ruby/signal.c:926
/lib/x86_64-linux-gnu/libc.so.6(0x7fb4baa42520) [0x7fb4baa42520]
/home/lukeg/workspace/ruby-build/miniruby(RB_BUILTIN_TYPE+0x0) [0x5641e6778db0] ../ruby/ractor.c:3128
/home/lukeg/workspace/ruby-build/miniruby(rbimpl_RB_TYPE_P_fastpath) ../ruby/include/ruby/internal/value_type.h:351
/home/lukeg/workspace/ruby-build/miniruby(RB_TYPE_P) ../ruby/include/ruby/internal/value_type.h:378
/home/lukeg/workspace/ruby-build/miniruby(RB_FL_ABLE) ../ruby/include/ruby/internal/fl_type.h:449
/home/lukeg/workspace/ruby-build/miniruby(RB_FL_TEST_RAW) ../ruby/include/ruby/internal/fl_type.h:471
/home/lukeg/workspace/ruby-build/miniruby(rb_ractor_shareable_p) ../ruby/include/ruby/ractor.h:256
/home/lukeg/workspace/ruby-build/miniruby(reset_belonging_enter) ../ruby/ractor.c:3121
</code></pre>
Ruby master - Bug #20262 (Open): Regex mismatch between Ruby 3.2.2 and 3.3.0
https://redmine.ruby-lang.org/issues/20262
2024-02-13T06:28:11Z
weilandia (Nick Weiland)
<p>This might be a duplicate of <a href="https://bugs.ruby-lang.org/issues/20098" class="external">https://bugs.ruby-lang.org/issues/20098</a>, but I cannot make it match with the backref so maybe not.</p>
<p>Below example matches in 3.2.2 but not in 3.3.0</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="n">str</span> <span class="o">=</span> <span class="s2">"------------abcdefg------------#3895912"</span>
<span class="n">re</span> <span class="o">=</span> <span class="sr">/()\1\b\w*[a-zA-Z-]*\d+[\w-]{3,}\w+\b/</span>
<span class="n">re</span><span class="p">.</span><span class="nf">match?</span><span class="p">(</span><span class="n">str</span><span class="p">)</span>
</code></pre>
Ruby master - Bug #20255 (Open): Embedded arrays aren't moved correctly across ractors
https://redmine.ruby-lang.org/issues/20255
2024-02-10T17:31:30Z
luke-gru (Luke Gruber)
luke.gru@gmail.com
<p><code>ractor.send(ary, move: true)</code> works incorrectly because if <code>ary</code> is embedded, the new moved object doesn't populate its own embedded space, it uses the MovedObject's embedded space.</p>
<p>example:</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="n">r</span> <span class="o">=</span> <span class="no">Ractor</span><span class="p">.</span><span class="nf">new</span> <span class="p">{</span>
<span class="n">inner_ary</span> <span class="o">=</span> <span class="n">receive</span>
<span class="n">values</span> <span class="o">=</span> <span class="p">{}</span>
<span class="n">values</span><span class="p">[</span><span class="ss">:equal</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">inner_ary</span> <span class="o">==</span> <span class="p">[</span><span class="s2">""</span><span class="p">,{},</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">6</span><span class="p">])</span>
<span class="n">values</span><span class="p">[</span><span class="ss">:string</span><span class="p">]</span> <span class="o">=</span> <span class="n">inner_ary</span><span class="p">.</span><span class="nf">to_s</span>
<span class="n">values</span>
<span class="p">}</span>
<span class="n">ary</span> <span class="o">=</span> <span class="p">[</span><span class="no">String</span><span class="p">.</span><span class="nf">new</span><span class="p">,</span><span class="no">Hash</span><span class="p">.</span><span class="nf">new</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">6</span><span class="p">]</span>
<span class="n">r</span><span class="p">.</span><span class="nf">send</span><span class="p">(</span><span class="n">ary</span><span class="p">,</span> <span class="ss">move: </span><span class="kp">true</span><span class="p">)</span>
<span class="n">r_values</span> <span class="o">=</span> <span class="n">r</span><span class="p">.</span><span class="nf">take</span>
<span class="nb">p</span> <span class="n">r_values</span><span class="p">[</span><span class="ss">:equal</span><span class="p">]</span>
<span class="nb">p</span> <span class="n">r_values</span><span class="p">[</span><span class="ss">:string</span><span class="p">]</span>
<span class="c1"># => false</span>
<span class="c1"># => "[\"\", {}, 2, 2.0, 21747991570, String, 3]"</span>
</code></pre>
Ruby master - Bug #20243 (Open): M:N threading VM_ASSERT failure in rb_current_execution_context ...
https://redmine.ruby-lang.org/issues/20243
2024-02-07T09:18:09Z
kjtsanaktsidis (KJ Tsanaktsidis)
kjtsanaktsidis@gmail.com
<p>When building with Clang 17 and <code>-DVM_CHECK_MODE=1</code> (with the following configure)</p>
<pre><code>optflags="-ggdb3 -fno-omit-frame-pointer -fno-optimize-sibling-calls -O3" cflags="-DVM_CHECK_MODE=1" CC=clang ../configure --prefix=/home/kj/ruby/installed --enable-yjit=dev --disable-install-doc
</code></pre>
<p>And then running the following script with the built <code>./miniruby</code> (which is actually from <code>bootstraptest/test_ractor.rb</code>):</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="n">counts</span> <span class="o">=</span> <span class="p">[]</span>
<span class="n">counts</span> <span class="o"><<</span> <span class="no">Ractor</span><span class="p">.</span><span class="nf">count</span>
<span class="n">ractors</span> <span class="o">=</span> <span class="p">(</span><span class="mi">1</span><span class="o">..</span><span class="mi">3</span><span class="p">).</span><span class="nf">map</span> <span class="p">{</span> <span class="no">Ractor</span><span class="p">.</span><span class="nf">new</span> <span class="p">{</span> <span class="no">Ractor</span><span class="p">.</span><span class="nf">receive</span> <span class="p">}</span> <span class="p">}</span>
<span class="n">counts</span> <span class="o"><<</span> <span class="no">Ractor</span><span class="p">.</span><span class="nf">count</span>
<span class="n">ractors</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nf">send</span><span class="p">(</span><span class="s1">'End 0'</span><span class="p">).</span><span class="nf">take</span>
<span class="nb">sleep</span> <span class="mf">0.1</span> <span class="k">until</span> <span class="n">ractors</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nf">inspect</span> <span class="o">=~</span> <span class="sr">/terminated/</span>
<span class="n">counts</span> <span class="o"><<</span> <span class="no">Ractor</span><span class="p">.</span><span class="nf">count</span>
<span class="n">ractors</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="nf">send</span><span class="p">(</span><span class="s1">'End 1'</span><span class="p">).</span><span class="nf">take</span>
<span class="nb">sleep</span> <span class="mf">0.1</span> <span class="k">until</span> <span class="n">ractors</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="nf">inspect</span> <span class="o">=~</span> <span class="sr">/terminated/</span>
<span class="n">counts</span> <span class="o"><<</span> <span class="no">Ractor</span><span class="p">.</span><span class="nf">count</span>
<span class="n">ractors</span><span class="p">[</span><span class="mi">2</span><span class="p">].</span><span class="nf">send</span><span class="p">(</span><span class="s1">'End 2'</span><span class="p">).</span><span class="nf">take</span>
<span class="nb">sleep</span> <span class="mf">0.1</span> <span class="k">until</span> <span class="n">ractors</span><span class="p">[</span><span class="mi">2</span><span class="p">].</span><span class="nf">inspect</span> <span class="o">=~</span> <span class="sr">/terminated/</span>
<span class="n">counts</span> <span class="o"><<</span> <span class="no">Ractor</span><span class="p">.</span><span class="nf">count</span>
<span class="n">counts</span><span class="p">.</span><span class="nf">inspect</span>
</code></pre>
<p>I get the following crash:</p>
<pre><code>Assertion Failed: ../vm_core.h:1957:rb_current_execution_context:ec == rb_current_ec_noinline()
ruby 3.4.0dev (2024-02-07T07:52:06Z ktsanaktsidis/igno.. 5cc6d944c2) [x86_64-linux]
-- Control frame information -----------------------------------------------
c:0003 p:0003 s:0010 e:000009 METHOD <internal:ractor>:431
c:0002 p:0004 s:0006 e:000005 BLOCK ractor_crash.rb:3 [FINISH]
c:0001 p:---- s:0003 e:000002 DUMMY [FINISH]
-- Ruby level backtrace information ----------------------------------------
ractor_crash.rb:3:in `block (2 levels) in <main>'
<internal:ractor>:431:in `receive'
-- Threading information ---------------------------------------------------
Total ractor count: 2
Ruby thread count for this ractor: 1
-- C level backtrace information -------------------------------------------
/home/kj/ruby/build/miniruby(rb_print_backtrace+0x14) [0x55faa97a4ebd] ../vm_dump.c:820
/home/kj/ruby/build/miniruby(rb_vm_bugreport) ../vm_dump.c:1151
/home/kj/ruby/build/miniruby(rb_assert_failure+0x81) [0x55faa94d2719] ../error.c:1131
./miniruby(thread_sched_wait_running_turn+0x2e9) [0x55faa9726f59]
/home/kj/ruby/build/miniruby(rb_ractor_sched_sleep+0x10b) [0x55faa972687b] ../thread_pthread.c:1348
/home/kj/ruby/build/miniruby(ractor_check_ints+0x0) [0x55faa968b328] ../ractor.c:683
/home/kj/ruby/build/miniruby(ractor_sleep_with_cleanup) ../ractor.c:684
/home/kj/ruby/build/miniruby(ractor_sleep+0x15) [0x55faa968adf4] ../ractor.c:701
/home/kj/ruby/build/miniruby(ractor_wait_receive) ../ractor.c:748
/home/kj/ruby/build/miniruby(ractor_receive+0x1f) [0x55faa968768e] ../ractor.c:762
/home/kj/ruby/build/miniruby(builtin_inline_class_431) ../ractor.rb:432
/home/kj/ruby/build/miniruby(builtin_invoker0+0x6) [0x55faa978fc66] ../vm_insnhelper.c:6746
/home/kj/ruby/build/miniruby(invoke_bf+0x39) [0x55faa979816e] ../vm_insnhelper.c:6886
/home/kj/ruby/build/miniruby(vm_invoke_builtin_delegate) ../vm_insnhelper.c:6909
/home/kj/ruby/build/miniruby(rb_vm_check_ints+0x0) [0x55faa9771fac] ../insns.def:1533
/home/kj/ruby/build/miniruby(vm_pop_frame) ../vm_insnhelper.c:419
/home/kj/ruby/build/miniruby(vm_exec_core) ../insns.def:1537
/home/kj/ruby/build/miniruby(vm_exec_loop+0x0) [0x55faa9767f02] ../vm.c:2489
/home/kj/ruby/build/miniruby(rb_vm_exec) ../vm.c:2492
/home/kj/ruby/build/miniruby(invoke_block+0x6f) [0x55faa9781a58] ../vm.c:1512
/home/kj/ruby/build/miniruby(invoke_iseq_block_from_c) ../vm.c:1582
/home/kj/ruby/build/miniruby(invoke_block_from_c_proc) ../vm.c:1680
/home/kj/ruby/build/miniruby(vm_invoke_proc) ../vm.c:1710
/home/kj/ruby/build/miniruby(rb_vm_invoke_proc_with_self+0x5a) [0x55faa9781eaa] ../vm.c:1745
/home/kj/ruby/build/miniruby(thread_do_start_proc+0x199) [0x55faa9739e19] ../thread.c:574
/home/kj/ruby/build/miniruby(thread_do_start+0x6c) [0x55faa973933f] ../thread.c:618
/home/kj/ruby/build/miniruby(thread_start_func_2) ../thread.c:668
/home/kj/ruby/build/miniruby(rb_native_mutex_lock+0x0) [0x55faa973a141] ../thread_pthread.c:2234
/home/kj/ruby/build/miniruby(thread_sched_lock_) ../thread_pthread.c:387
/home/kj/ruby/build/miniruby(call_thread_start_func_2) ../thread_pthread_mn.c:436
/home/kj/ruby/build/miniruby(co_start) ../thread_pthread_mn.c:434
</code></pre>
<p>The failing assertion is this one in vm_core.h: <a href="https://github.com/ruby/ruby/blob/42c36269403baac67b0d5dc1d6d6e31168cf6a1f/vm_core.h#L1957" class="external">https://github.com/ruby/ruby/blob/42c36269403baac67b0d5dc1d6d6e31168cf6a1f/vm_core.h#L1957</a>. It actually has a very helpful comment.</p>
<pre><code> /* On the shared objects, `__tls_get_addr()` is used to access the TLS
* and the address of the `ruby_current_ec` can be stored on a function
* frame. However, this address can be mis-used after native thread
* migration of a coroutine.
* 1) Get `ptr =&ruby_current_ec` op NT1 and store it on the frame.
* 2) Context switch and resume it on the NT2.
* 3) `ptr` is used on NT2 but it accesses to the TLS on NT1.
* This assertion checks such misusage.
*
* To avoid accidents, `GET_EC()` should be called once on the frame.
* Note that inlining can produce the problem.
*/
VM_ASSERT(ec == rb_current_ec_noinline());
</code></pre>
<p>What seems to be happening is exactly that. This is a disassembly of the relevant bits of <code>thread_sched_wait_running_turn</code>:</p>
<pre><code>........
# This is the only bits of the entire function which access the TLS base register %fs.
# It seems to have spilled the value of ruby_current_ec into %r13.
0x000055603d2e1cf8 <+136>: mov $0xffffffffffffff90,%rax
0x000055603d2e1cff <+143>: mov %fs:0x0,%r12
0x000055603d2e1d08 <+152>: add %rax,%r12
0x000055603d2e1d0b <+155>: mov %fs:(%rax),%r13
........
# There's a call to coroutine_transfer, so after this point we're returned to on a
# different thread
0x000055603d2e1e90 <+544>: call 0x55603d7fce84 <coroutine_transfer>
# But nothing ever loads the address of ruby_current_ec from %fs again (i didn't trace
# exactly the data flow from %r13 at 0x000055603d2e1d0b to here, but i assume it spilled
# somewhere and now got loaded back into %r15 here). In any case, that means %r15 here
# contains the value of ruby_current_ec from the _old_ thread, not the current one.
0x000055603d2e1e95 <+549>: mov %rbx,0x28(%r14)
0x000055603d2e1e99 <+553>: mov (%r12),%r15
0x000055603d2e1e9d <+557>: call 0x55603d33a010 <rb_current_ec_noinline>
0x000055603d2e1ea2 <+562>: cmp %rax,%r15
=> 0x000055603d2e1ea5 <+565>: jne 0x55603d2e1f3a <thread_sched_wait_running_turn+714>
........
# assertion failure code path.
0x000055603d2e1f3a <+714>: lea 0x542c0c(%rip),%rdi # 0x55603d824b4d
0x000055603d2e1f41 <+721>: lea 0x542c12(%rip),%rdx # 0x55603d824b5a
0x000055603d2e1f48 <+728>: lea 0x542c28(%rip),%rcx # 0x55603d824b77
0x000055603d2e1f4f <+735>: mov $0x7a5,%esi
0x000055603d2e1f54 <+740>: call 0x55603d08d698 <rb_assert_failure>
</code></pre>
<p>if we look at the register values from <code>0x000055603d2e1ea2</code>:</p>
<pre><code>(rr) print/x $rax
$2 = 0x55603e159ad0
(rr) print/x $r15
$3 = 0x0
</code></pre>
<p>So the value from <code>%rax</code> which came from <code>ruby_current_ec_noinline</code> is correctly the value of <code>ruby_current_ec</code> for this thread, and <code>%r15</code> contains a stale value from a previous thread.</p>
<ul>
<li>
</ul>
<p>Now, what can we <em>do</em> about this, is a different question :/ There's a really good stackoverflow answer about it here: <a href="https://stackoverflow.com/questions/75592038/how-to-disable-clang-expression-elimination-for-thread-local-variable" class="external">https://stackoverflow.com/questions/75592038/how-to-disable-clang-expression-elimination-for-thread-local-variable</a>, but to summarise</p>
<ul>
<li>longstanding GCC and Clang bugs for this exist and have been marked as WONTFIX (<a href="https://gcc.gnu.org/bugzilla/show_bug.cgi?id=26461" class="external">https://gcc.gnu.org/bugzilla/show_bug.cgi?id=26461</a>, <a href="https://github.com/llvm/llvm-project/issues/19551" class="external">https://github.com/llvm/llvm-project/issues/19551</a>)</li>
<li>It's even worse than this EC problem - things like <code>errno</code> also might be incorrectly persisted across coroutine switches (so e.g. an inlined C library function could in theory set <code>errno</code> in another thread, for example)</li>
<li>C++ actually has coroutines now, so this <em>must</em> work for those. Clang at least has fixed some TLS problems in their C++ coroutine implementation (<a href="https://github.com/llvm/llvm-project/issues/47179" class="external">https://github.com/llvm/llvm-project/issues/47179</a>)</li>
</ul>
<p>Other than reimplementing all of our coroutine stuff on top of C++ coroutines, I'm not sure what else we can do. AFAICT there's no way to tell the compiler that we clobbered the <code>%fs</code> register because that's just not a thing in its model (<a href="https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66631" class="external">https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66631</a>, but i assume clang is similar).</p>
<p>Thoughts? For now I think my workaround is to disable M:N at build time when building with ASAN (or turn optimizations down). At least this isn't a problem with <code>Fiber</code> because we never move them across threads (probably for this reason in part).</p>
Ruby master - Bug #20225 (Open): Inconsistent behavior of regex matching for a regex has a null loop
https://redmine.ruby-lang.org/issues/20225
2024-01-30T02:53:03Z
make_now_just (Hiroya Fujinami)
make.just.on@gmail.com
<p>Usually, in Ruby (Onigmo), when a null loop (a loop consuming no characters) occurs on regex matching, this loop is terminated. But, if a loop has a capture and some complex condition is satisfied, this causes backtracking. This behavior invokes unexpected results, for example,</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="nb">p</span> <span class="sr">/(?:.B.(?<a>(?:[C-Z]|.)*)+){2}/</span> <span class="o">=~</span> <span class="s2">"ABCABC"</span> <span class="c1"># => nil</span>
<span class="nb">p</span> <span class="sr">/(?:.B.(?:(?:[C-Z]|.)*)+){2}/</span> <span class="o">=~</span> <span class="s2">"ABCABC"</span> <span class="c1"># => 0</span>
</code></pre>
<p>Because the above regex has a capture and the below does not, different matching results are returned. It is not very intuitive that the presence of a capture changes the matching result.</p>
<p>The detailed condition for changing the null-loop behavior is 1) a previous capture in this loop holds the empty string, and 2) this capture's position is different from the current matching position. This condition is checked in <code>STACK_NULL_CHECK_MEMST</code> (<a href="https://github.com/ruby/ruby/blob/bbb7ab906ec64b963bd4b5d37e47b14796d64371/regexec.c#L1766-L1778" class="external">https://github.com/ruby/ruby/blob/bbb7ab906ec64b963bd4b5d37e47b14796d64371/regexec.c#L1766-L1778</a>).</p>
<p>Perhaps, you cannot understand what this condition means. Don't worry, I also cannot understand. This condition has been introduced for at least 20 years, and no one may remember the reason for this necessity. (If you know, please tell me!) Even if there is a reason, I believe that there is no reasonable authority for allowing counter-intuitive behavior, such as the above example.</p>
<p>This behavior can also cause memoization to be buggy. Memoization relies on the fact that backtracking only depends on positions and states (byte-code offsets of a regex). However, this condition additionally refers to captures, and the memoization is broken.</p>
<p>My proposal is to <strong>correct this inconsistent behavior</strong>. Specifically, a null loop should be determined solely on the basis of whether the matching position has changed, without referring to captures.</p>
<p>This fix changes the behavior of regex matching, but I believe that the probability that this will actually cause backward compatibility problems is remarkably low. This is because I have never seen any mention of this puzzling behavior before.</p>
Ruby master - Bug #20203 (Open): `TestEnumerable` test failures with GCC 14
https://redmine.ruby-lang.org/issues/20203
2024-01-22T17:10:42Z
vo.x (Vit Ondruch)
v.ondruch@tiscali.cz
<p>There is ongoing mass rebuild in Fedora and that is first time GCC 14 is used and we observe test failures in <code>TestEnumerable</code>. Here are a few examples:</p>
<pre><code>[ 3000/26419] TestEnumerable#test_transient_heap_sort_bymalloc_consolidate(): unaligned fastbin chunk detected
</code></pre>
<pre><code>[ 2455/26535] TestEnumerable#test_transient_heap_sort_bycorrupted size vs. prev_size in fastbins
</code></pre>
<pre><code>[ 9716/26532] TestEnumerable#test_any_with_unused_blockdouble free or corruption (fasttop)
</code></pre>
<p>The full logs are accessible <a href="https://koji.fedoraproject.org/koji/taskinfo?taskID=112176941" class="external">here</a>. Please drill through <code>Descendants</code> and <code>build.log</code></p>
Ruby master - Bug #20189 (Open): `rb_str_resize` does not clear coderange when expanding
https://redmine.ruby-lang.org/issues/20189
2024-01-16T12:56:47Z
tompng (tomoya ishida)
tomoyapenguin@gmail.com
<p>Expanding string in some encoding (utf16 utf32) can change coderange to either valid or broken, but rb_str_resize does not clear coderange.</p>
<p>This will cause a bug in c-extension libraries that use rb_str_resize.</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="c1"># Example for stringio</span>
<span class="n">s</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="s2">"</span><span class="se">\0</span><span class="s2">"</span><span class="p">.</span><span class="nf">encode</span><span class="p">(</span><span class="s1">'UTF-16LE'</span><span class="p">))</span>
<span class="n">s</span><span class="p">.</span><span class="nf">truncate</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span> <span class="n">s</span><span class="p">.</span><span class="nf">truncate</span><span class="p">(</span><span class="mi">2</span><span class="p">);</span> <span class="n">s</span><span class="p">.</span><span class="nf">string</span><span class="p">.</span><span class="nf">valid_encoding?</span>
<span class="c1">#=> true</span>
<span class="n">s</span><span class="p">.</span><span class="nf">truncate</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span> <span class="n">s</span><span class="p">.</span><span class="nf">string</span><span class="p">.</span><span class="nf">valid_encoding?</span><span class="p">;</span> <span class="n">s</span><span class="p">.</span><span class="nf">truncate</span><span class="p">(</span><span class="mi">2</span><span class="p">);</span> <span class="n">s</span><span class="p">.</span><span class="nf">string</span><span class="p">.</span><span class="nf">valid_encoding?</span>
<span class="c1">#=> false (expect to be true)</span>
</code></pre>
Ruby master - Bug #20186 (Open): Ripper does not generate AST for some keywords in Ruby 3.3
https://redmine.ruby-lang.org/issues/20186
2024-01-16T06:39:52Z
kzkn (Kazuki Nishikawa)
<p>Ripper does not generate AST for the below keyword:</p>
<ul>
<li>break</li>
<li>next</li>
<li>redo</li>
<li>retry</li>
<li>yield</li>
</ul>
<p>Ruby 3.2</p>
<pre><code>$ ruby -v
ruby 3.2.2 (2023-03-30 revision e51014f9c0) [x86_64-linux]
$ ruby -rripper -e "p Ripper.sexp('break')"
[:program, [[:break, []]]]
$ ruby -rripper -e "p Ripper.sexp('next')"
[:program, [[:next, []]]]
$ ruby -rripper -e "p Ripper.sexp('redo')"
[:program, [[:redo]]]
$ ruby -rripper -e "p Ripper.sexp('retry')"
[:program, [[:retry]]]
$ ruby -rripper -e "p Ripper.sexp('yield')"
[:program, [[:yield0]]]
</code></pre>
<p>Ruby 3.3</p>
<pre><code>$ ruby -v
ruby 3.3.0 (2023-12-25 revision 5124f9ac75) [x86_64-linux]
$ ruby -rripper -e "p Ripper.sexp('break')"
nil
$ ruby -rripper -e "p Ripper.sexp('next')"
nil
$ ruby -rripper -e "p Ripper.sexp('redo')"
nil
$ ruby -rripper -e "p Ripper.sexp('retry')"
nil
$ ruby -rripper -e "p Ripper.sexp('yield')"
nil
</code></pre>
<p>EDIT)<br>
Here is a case of real-world problem: <a href="https://github.com/ruby-formatter/rufo/issues/319" class="external">https://github.com/ruby-formatter/rufo/issues/319</a></p>
Ruby master - Bug #20179 (Open): `--with-ruby-version` configure option is not correctly applied ...
https://redmine.ruby-lang.org/issues/20179
2024-01-12T13:18:55Z
vo.x (Vit Ondruch)
v.ondruch@tiscali.cz
<p>I am trying to configure ruby using <code>--with-ruby-version=ruby3.3</code>. Here is the configure output:</p>
<pre><code>$ /builddir/build/BUILD/ruby-3.3.0/configure --build=x86_64-redhat-linux-gnu --host=x86_64-redhat-linux-gnu --program-prefix= --disable-dependency-tracking --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib64 --libexecdir=/usr/libexec --localstatedir=/var --runstatedir=/run --sharedstatedir=/var/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-compress-debug-sections=no --disable-rpath --enable-mkmf-verbose --enable-shared --with-ruby-version=ruby3.3 --enable-yjit
... snip ...
---
Configuration summary for ruby version 3.3.0
* Installation prefix: /usr
* exec prefix: /usr
* arch: x86_64-linux
* site arch: ${arch}
* RUBY_BASE_NAME: ruby
* enable shared: yes
* ruby lib prefix: ${libdir}/${RUBY_BASE_NAME}
* site libraries path: ${rubylibprefix}/${sitearch}
* vendor path: ${rubylibprefix}/vendor_ruby
* target OS: linux
* compiler: gcc
* with thread: pthread
* with coroutine: amd64
* enable shared libs: yes
* dynamic library ext: so
* CFLAGS: ${optflags} ${debugflags} ${warnflags}
* LDFLAGS: -L. -Wl,-z,relro -Wl,--as-needed \
-Wl,-z,pack-relative-relocs -Wl,-z,now \
-specs=/usr/lib/rpm/redhat/redhat-hardened-ld \
-specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 \
-Wl,--build-id=sha1 -fstack-protector-strong \
-rdynamic -Wl,-export-dynamic -Wl,--no-as-needed
* DLDFLAGS: -Wl,-z,relro -Wl,--as-needed \
-Wl,-z,pack-relative-relocs -Wl,-z,now \
-specs=/usr/lib/rpm/redhat/redhat-hardened-ld \
-specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 \
-Wl,--build-id=sha1
* optflags: -O3 -fno-fast-math
* debugflags: -ggdb3
* warnflags: -Wall -Wextra -Wdeprecated-declarations \
-Wdiv-by-zero -Wduplicated-cond \
-Wimplicit-function-declaration -Wimplicit-int \
-Wpointer-arith -Wwrite-strings \
-Wold-style-definition -Wimplicit-fallthrough=0 \
-Wmissing-noreturn -Wno-cast-function-type \
-Wno-constant-logical-operand -Wno-long-long \
-Wno-missing-field-initializers \
-Wno-overlength-strings \
-Wno-packed-bitfield-compat \
-Wno-parentheses-equality -Wno-self-assign \
-Wno-tautological-compare -Wno-unused-parameter \
-Wno-unused-value -Wsuggest-attribute=format \
-Wsuggest-attribute=noreturn -Wunused-variable \
-Wmisleading-indentation -Wundef
* strip command: strip -S -x
* install doc: rdoc
* YJIT support: yes
* RJIT support: yes
* man page type: doc
---
</code></pre>
<p>However, the option is not applied consistently, especially the <code>rubyhdrdir</code> stands out:</p>
<pre><code>$ find . -name \*ruby3.3\*
./usr/lib64/ruby/ruby3.3
./usr/lib64/ruby/site_ruby/ruby3.3
./usr/lib64/ruby/vendor_ruby/ruby3.3
./usr/lib64/ruby/gems/ruby3.3
./usr/lib64/ruby/gems/ruby3.3/extensions/x86_64-linux/ruby3.3
./usr/include/ruby-ruby3.3
./usr/share/ri/ruby3.3
</code></pre>
<p>The correct path should be IMHO <code>./usr/include/ruby3.3</code>. I can likely workaround it by <code>--with-rubyhdrdir</code>, but I think this should behave consistently.</p>
Ruby master - Bug #20171 (Open): ri -i ruby interactive pressing tab does not autocomplete
https://redmine.ruby-lang.org/issues/20171
2024-01-09T17:45:34Z
Mystorium (Josh Goldfarb)
<p>When typing a Object or Object with a method, the tab button does not pull up autocomplete options.</p>
<p>This issue is not present in ruby 3.2.2</p>
<p>Ex</p>
<p>Type</p>
<ul>
<li>
<p>ri - i</p>
</li>
<li>
<p>String.cap</p>
</li>
</ul>
<p>Press.</p>
<ul>
<li>"Tab"</li>
</ul>
<p>What is expected</p>
<ul>
<li>autocomplete options to populate</li>
</ul>
<p>What is happening</p>
<ul>
<li>Nothing Happens when pressing tab.</li>
</ul>
Ruby master - Bug #20168 (Open): Process won't exit when Ractor.select waiting a Ractor
https://redmine.ruby-lang.org/issues/20168
2024-01-09T09:29:43Z
shia (Sangyong Sim)
<a name="Reproduction-code"></a>
<h2 >Reproduction code<a href="#Reproduction-code" class="wiki-anchor">¶</a></h2>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="nb">trap</span><span class="p">(</span><span class="ss">:INT</span><span class="p">)</span> <span class="k">do</span>
<span class="nb">puts</span> <span class="s2">"SIGINT"</span>
<span class="nb">exit</span>
<span class="k">end</span>
<span class="nb">trap</span><span class="p">(</span><span class="ss">:TERM</span><span class="p">)</span> <span class="k">do</span>
<span class="nb">puts</span> <span class="s2">"SIGTERM"</span>
<span class="nb">exit</span>
<span class="k">end</span>
<span class="n">r</span> <span class="o">=</span> <span class="no">Ractor</span><span class="p">.</span><span class="nf">new</span> <span class="k">do</span>
<span class="kp">loop</span> <span class="k">do</span>
<span class="nb">sleep</span> <span class="mi">1</span>
<span class="k">end</span>
<span class="k">end</span>
<span class="no">Ractor</span><span class="p">.</span><span class="nf">select</span><span class="p">(</span><span class="n">r</span><span class="p">)</span> <span class="c1"># stucked.</span>
<span class="c1"># SIGINT/SIGTERM sent to Ruby process(confirmed by trap),</span>
<span class="c1"># but process won't exit.</span>
</code></pre>
<a name="Expected-behavior"></a>
<h2 >Expected behavior<a href="#Expected-behavior" class="wiki-anchor">¶</a></h2>
<p>Process killed successfully with exit code 0.</p>
<a name="Affected-Ruby-version"></a>
<h2 >Affected Ruby version<a href="#Affected-Ruby-version" class="wiki-anchor">¶</a></h2>
<p>3.3.0<br>
3.2.x works as expected.</p>
Ruby master - Bug #20167 (Open): Code execution isn't recorded in Ractor
https://redmine.ruby-lang.org/issues/20167
2024-01-09T09:08:58Z
shia (Sangyong Sim)
<a name="reproduction-code"></a>
<h2 >reproduction code<a href="#reproduction-code" class="wiki-anchor">¶</a></h2>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="c1"># frozen-string-literal: true</span>
<span class="nb">require</span> <span class="s2">"coverage"</span>
<span class="no">Coverage</span><span class="p">.</span><span class="nf">start</span>
<span class="nb">require_relative</span> <span class="s2">"./some_lib"</span>
<span class="c1"># # some_lib.rb</span>
<span class="c1"># class C</span>
<span class="c1"># def hoge(i)</span>
<span class="c1"># i</span>
<span class="c1"># end</span>
<span class="c1"># end</span>
<span class="n">r</span> <span class="o">=</span> <span class="no">Ractor</span><span class="p">.</span><span class="nf">new</span> <span class="k">do</span>
<span class="kp">loop</span> <span class="k">do</span>
<span class="n">v</span> <span class="o">=</span> <span class="no">Ractor</span><span class="p">.</span><span class="nf">receive</span>
<span class="n">ret_v</span> <span class="o">=</span> <span class="no">C</span><span class="p">.</span><span class="nf">new</span><span class="p">.</span><span class="nf">hoge</span><span class="p">(</span><span class="n">v</span><span class="p">)</span>
<span class="no">Ractor</span><span class="p">.</span><span class="nf">yield</span> <span class="n">ret_v</span>
<span class="k">end</span>
<span class="k">end</span>
<span class="mi">2</span><span class="p">.</span><span class="nf">times</span> <span class="k">do</span> <span class="o">|</span><span class="n">i</span><span class="o">|</span>
<span class="n">r</span> <span class="o"><<</span> <span class="n">i</span>
<span class="n">r</span><span class="p">.</span><span class="nf">take</span>
<span class="k">end</span>
<span class="no">Coverage</span><span class="p">.</span><span class="nf">result</span><span class="p">.</span><span class="nf">each</span> <span class="k">do</span> <span class="o">|</span><span class="n">file</span><span class="p">,</span> <span class="n">lines</span><span class="o">|</span>
<span class="k">if</span> <span class="n">file</span><span class="p">.</span><span class="nf">include?</span><span class="p">(</span><span class="s2">"some_ractor_lib"</span><span class="p">)</span>
<span class="k">if</span> <span class="n">lines</span> <span class="o">==</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="kp">nil</span><span class="p">,</span> <span class="kp">nil</span><span class="p">]</span>
<span class="nb">puts</span> <span class="s2">"OK"</span>
<span class="k">else</span>
<span class="nb">puts</span> <span class="s2">"expected: [1, 1, 2, nil, nil]"</span>
<span class="nb">puts</span> <span class="s2">"actual: </span><span class="si">#{</span><span class="n">lines</span><span class="p">.</span><span class="nf">inspect</span><span class="si">}</span><span class="s2">"</span>
<span class="k">end</span>
<span class="k">end</span>
<span class="k">end</span>
</code></pre>
<a name="Target-ruby-version"></a>
<h2 >Target ruby version<a href="#Target-ruby-version" class="wiki-anchor">¶</a></h2>
<p>3.2.0+ affected</p>
Ruby master - Bug #20165 (Open): Ractors moving a Struct breaks beyond the first 3 fields
https://redmine.ruby-lang.org/issues/20165
2024-01-08T21:02:19Z
codekitchen (Brian Palmer)
<p>Experimenting with Ractors on ruby 3.3.0, and I'm seeing a bug where if you move a struct between ractors, all but the first 3 fields are set to nil.</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="no">Foo</span> <span class="o">=</span> <span class="no">Struct</span><span class="p">.</span><span class="nf">new</span><span class="p">(</span><span class="ss">:a</span><span class="p">,</span><span class="ss">:b</span><span class="p">,</span><span class="ss">:c</span><span class="p">,</span><span class="ss">:d</span><span class="p">,</span><span class="ss">:e</span><span class="p">,</span><span class="ss">:f</span><span class="p">)</span>
<span class="n">r</span> <span class="o">=</span> <span class="no">Ractor</span><span class="p">.</span><span class="nf">new</span> <span class="p">{</span>
<span class="n">foo</span> <span class="o">=</span> <span class="no">Foo</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">]</span>
<span class="nb">p</span> <span class="n">foo</span>
<span class="no">Ractor</span><span class="p">.</span><span class="nf">yield</span><span class="p">(</span><span class="n">foo</span><span class="p">,</span> <span class="ss">move: </span><span class="kp">true</span><span class="p">)</span>
<span class="p">}</span>
<span class="nb">p</span> <span class="n">r</span><span class="p">.</span><span class="nf">take</span>
</code></pre>
<pre><code>❯ ruby -v
ruby 3.3.0 (2023-12-25 revision 5124f9ac75) [arm64-darwin23]
❯ ruby rbug.rb
rbug.rb:3: warning: Ractor is experimental, and the behavior may change in future versions of Ruby! Also there are many implementation issues.
#<struct Foo a=0, b=0, c=0, d=0, e=0, f=0>
#<struct Foo a=0, b=0, c=0, d=nil, e=nil, f=nil>
</code></pre>
<p>This seems specific to moving, if I set <code>move: false</code> the struct makes it across OK.</p>
Ruby master - Bug #20154 (Open): aarch64: configure overrides `-mbranch-protection` if it was set...
https://redmine.ruby-lang.org/issues/20154
2024-01-05T21:25:03Z
jprokop (Jarek Prokop)
<p>Recently a GH PR was merged <a href="https://github.com/ruby/ruby/pull/9306" class="external">https://github.com/ruby/ruby/pull/9306</a> For PAC/BTI support on ARM CPUs for Coroutine.S.</p>
<p>Without proper compilation support in configure.ac it segfaults Ruby with fibers on CPUs where PAC is supported: <a href="https://bugs.ruby-lang.org/issues/20085" class="external">https://bugs.ruby-lang.org/issues/20085</a></p>
<p>At the time of writing, configure.ac appends the first option from a list for flag <code>-mbranch-protection</code> that successfully compiles a program <a href="https://github.com/ruby/ruby/blob/master/configure.ac#L829" class="external">https://github.com/ruby/ruby/blob/master/configure.ac#L829</a>,<br>
to XCFLAGS and now also ASFLAGS to fix issue 20085 for Ruby master.</p>
<p>This is suboptimal for Fedora as we set -mbranch-protection=standard by default in C{,XX}FLAGS:</p>
<pre><code>CFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Werror=implicit-function-declaration -Werror=implicit-int -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -mbranch-protection=standard -fasynchronous-unwind-tables -fstack-clash-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer '
export CFLAGS
CXXFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -mbranch-protection=standard -fasynchronous-unwind-tables -fstack-clash-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer'
export CXXFLAGS
</code></pre>
<p>And the appended flag overrides distribution's compilation configuration, which in this case ends up omitting BTI instructions and only using PAC.</p>
<p>Would it make sense to check if such flags exist and not overwrite them if they do?</p>
<p>Serious proposals:</p>
<ol>
<li>Simplest fix that does not overwrite what is set in the distribution and results in higher security is simply prepending the list of options with <code>-mbranch-protection=standard</code>, it should cause no problems on ARMv8 CPUs and forward, BTI similarly to PAC instructions result into NOP, it is only extending the capability.</li>
</ol>
<p>See attached 0001-aarch64-Check-mbranch-protection-standard-first-to-u.patch</p>
<ol start="2">
<li>Other fix that sounds more sane IMO and dodges this kind of guessing where are all the correct places for the flag is what another Fedora contributor Florian Weimer suggested: <a href="https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/message/CVTNF2OQCL3XZHUUFNYMDK6ZEF2SWUEN/" class="external">https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/message/CVTNF2OQCL3XZHUUFNYMDK6ZEF2SWUEN/</a>
</li>
</ol>
<p>"The reliable way to do this would be to compile a C file and check<br>
whether that enables __ARM_FEATURE_PAC_DEFAULT, and if that's the case,<br>
define a <em>different</em> macro for use in the assembler implementation.<br>
This way, you don't need to care about the exact name of the option."</p>
<p>IOW instead of using _<em>ARM_FEATURE</em>* directly in that code, define a macro in the style of "USE_PAC" with value of the feature if it is defined, I think that way we shouldn't need to append ASFLAGS anymore.</p>
<p>However it's also important to catch the value of those macros as their values have meaning, I have an idea how to do that but I'd get on that monday earliest.</p>
Ruby master - Bug #20151 (Open): Can't build Ruby 3.1 on FreeBSD 14.0
https://redmine.ruby-lang.org/issues/20151
2024-01-05T03:14:58Z
hsbt (Hiroshi SHIBATA)
hsbt@ruby-lang.org
<p>I couldn't install Ruby 3.1.3 on FreeBSD 14.0.</p>
<pre><code>compiling util.c
util.c:255:1: error: expected identifier or '('
ruby_qsort(void* base, const size_t nel, const size_t size, cmpfunc_t *cmp, void *d)
^
./include/ruby/util.h:124:21: note: expanded from macro 'ruby_qsort'
# define ruby_qsort qsort_r
^
/usr/include/stdlib.h:356:5: note: expanded from macro 'qsort_r'
__generic(arg5, int (*)(void *, const void *, const void *), \
^
/usr/include/sys/cdefs.h:322:2: note: expanded from macro '__generic'
_Generic(expr, t: yes, default: no)
^
1 error generated.
*** Error code 1
Stop.
</code></pre>
<p>Compiler version is here:</p>
<pre><code>FreeBSD clang version 16.0.6 (https://github.com/llvm/llvm-project.git llvmorg-16.0.6-0-g7cbf1a259152)
</code></pre>
<p>I could install Ruby 3.2.2.</p>
Ruby master - Bug #20147 (Open): FreeBSD libyaml
https://redmine.ruby-lang.org/issues/20147
2024-01-04T13:09:45Z
kaiquekandykoga (Kaíque Koga)
<p>I use ruby-install to manage multiple Ruby versions. Some time ago I had issues installing Ruby 3.2.2 <a href="https://github.com/postmodern/ruby-install/issues/463" class="external">https://github.com/postmodern/ruby-install/issues/463</a>, and the same issue was open for ruby-build in <a href="https://github.com/rbenv/ruby-build/issues/2184" class="external">https://github.com/rbenv/ruby-build/issues/2184</a>. I am trying to install Ruby 3.3.0 using ruby-install, and the same behaviour is occurring. Please, take a look in the links I have provided for detailed information.</p>
<pre><code class="shell syntaxhl" data-language="shell">/usr/home/kandy/src/ruby-3.3.0/lib/yaml.rb:3: warning: It seems your ruby installation is missing psych <span class="o">(</span><span class="k">for </span>YAML output<span class="o">)</span><span class="nb">.</span>
To eliminate this warning, please <span class="nb">install </span>libyaml and reinstall your ruby.
uh-oh! RDoc had a problem:
cannot load such file <span class="nt">--</span> psych
run with <span class="nt">--debug</span> <span class="k">for </span>full backtrace
<span class="k">***</span> Error code 1
Stop.
make: stopped <span class="k">in</span> /usr/home/kandy/src/ruby-3.3.0
<span class="o">!!!</span> Compiling ruby 3.3.0 failed!
</code></pre>
<p>Thank you.</p>
Ruby master - Bug #20103 (Open): rb_internal_thread_remove_event_hook() hangs when called from wi...
https://redmine.ruby-lang.org/issues/20103
2023-12-28T15:46:51Z
osyoyu (Daisuke Aritomo)
<a name="Problem"></a>
<h2 >Problem<a href="#Problem" class="wiki-anchor">¶</a></h2>
<p>The Ruby process hangs when <code>rb_internal_thread_remove_event_hook()</code> is called from within a Thread hook registered by <code>rb_internal_thread_add_event_hook()</code>.<br>
The thread is waiting for the thread event execution lock (<code>pthread_rwlock_wrlock(&rb_internal_thread_event_hooks_rw_lock))</code>), which is acquired by its caller, <code>rb_thread_execute_hooks()</code>.<br>
<a href="https://github.com/ruby/ruby/blob/e81a5453e3c76c4348da042d86debde7689254fe/thread_pthread.c#L3323" class="external">https://github.com/ruby/ruby/blob/e81a5453e3c76c4348da042d86debde7689254fe/thread_pthread.c#L3323</a></p>
<p>This situation would occur when one wants to register a <em>oneshot</em> hook that performs something on a Thread for only a single time. The hook would remove itself after its main procedure.<br>
In my case, I'm doing a timer_create(3) on each pthread for profiling purposes.</p>
<a name="Expected-behavior"></a>
<h2 >Expected behavior<a href="#Expected-behavior" class="wiki-anchor">¶</a></h2>
<p>The process won't hang, or at least print some kind of warning.</p>
<p>I think there some options here:</p>
<ol>
<li>Discourage this kind of definition. Thread hooks should not add/remove other Thread hooks, or otherwise do so through other async methods, such as postponed jobs.</li>
<li>Find a way to make this work. Maybe inner calls to add/remove_event_hook() can share locks with the outer call, but I'm not sure if that's possible as I'm not familiar with pthread_rwlocks.</li>
</ol>
<a name="Repro"></a>
<h2 >Repro<a href="#Repro" class="wiki-anchor">¶</a></h2>
<pre><code class="c syntaxhl" data-language="c"><span class="cp">#include</span> <span class="cpf">"ruby.h"</span><span class="cp">
#include</span> <span class="cpf">"ruby/thread.h"</span><span class="cp">
</span>
<span class="n">rb_internal_thread_event_hook_t</span> <span class="o">*</span><span class="n">hook</span><span class="p">;</span>
<span class="kt">void</span>
<span class="nf">event_hook_callback</span><span class="p">(</span><span class="n">rb_event_flag_t</span> <span class="n">flag</span><span class="p">,</span> <span class="k">const</span> <span class="n">rb_internal_thread_event_data_t</span> <span class="o">*</span><span class="n">data</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">custom_data</span><span class="p">)</span>
<span class="p">{</span>
<span class="n">rb_internal_thread_remove_event_hook</span><span class="p">(</span><span class="n">hook</span><span class="p">);</span> <span class="c1">// hangs</span>
<span class="p">}</span>
<span class="n">RUBY_FUNC_EXPORTED</span> <span class="kt">void</span>
<span class="nf">Init_mycext</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span>
<span class="p">{</span>
<span class="n">hook</span> <span class="o">=</span> <span class="n">rb_internal_thread_add_event_hook</span><span class="p">(</span>
<span class="n">event_hook_callback</span><span class="p">,</span>
<span class="n">RUBY_INTERNAL_THREAD_EVENT_RESUMED</span><span class="p">,</span>
<span class="nb">NULL</span>
<span class="p">);</span>
<span class="p">}</span>
</code></pre>
<pre><code>ruby -rmycext -e 'Thread.new { loop { 1 + 1 } }'
</code></pre>
Ruby master - Bug #20097 (Open): Regexp#match? with empty capture group repeat is inconsistent
https://redmine.ruby-lang.org/issues/20097
2023-12-27T10:56:46Z
tompng (tomoya ishida)
tomoyapenguin@gmail.com
<p>It sometimes matches and sometimes does not, depend on repeat quantifier number.</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="c1"># empty capture group repeat</span>
<span class="nb">p</span> <span class="sr">/(a(){1,4}){2}/</span><span class="p">.</span><span class="nf">match?</span><span class="p">(</span><span class="s1">'aa'</span><span class="p">)</span> <span class="c1">#=> true</span>
<span class="nb">p</span> <span class="sr">/(a(){1,5}){2}/</span><span class="p">.</span><span class="nf">match?</span><span class="p">(</span><span class="s1">'aa'</span><span class="p">)</span> <span class="c1">#=> false</span>
<span class="c1"># repeat of capture group that match to empty string</span>
<span class="nb">p</span> <span class="sr">/(a(|){1,2}){2}/</span><span class="p">.</span><span class="nf">match?</span><span class="p">(</span><span class="s1">'aa'</span><span class="p">)</span> <span class="c1">#=> true</span>
<span class="nb">p</span> <span class="sr">/(a(|){1,3}){2}/</span><span class="p">.</span><span class="nf">match?</span><span class="p">(</span><span class="s1">'aa'</span><span class="p">)</span> <span class="c1">#=> false</span>
<span class="nb">p</span> <span class="sr">/(a(x?y?|z){1,2}){2}/</span><span class="p">.</span><span class="nf">match?</span><span class="p">(</span><span class="s1">'aa'</span><span class="p">)</span> <span class="c1">#=> false</span>
</code></pre>
<p>non-capturing group seems ok.</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="nb">p</span> <span class="sr">/(a(?:){1,4}){2}/</span><span class="p">.</span><span class="nf">match?</span><span class="p">(</span><span class="s1">'aa'</span><span class="p">)</span> <span class="c1">#=> true</span>
<span class="nb">p</span> <span class="sr">/(a(?:){1,5}){2}/</span><span class="p">.</span><span class="nf">match?</span><span class="p">(</span><span class="s1">'aa'</span><span class="p">)</span> <span class="c1">#=> true</span>
<span class="nb">p</span> <span class="sr">/(a(?:|){1,2}){2}/</span><span class="p">.</span><span class="nf">match?</span><span class="p">(</span><span class="s1">'aa'</span><span class="p">)</span> <span class="c1">#=> true</span>
<span class="nb">p</span> <span class="sr">/(a(?:|){1,3}){2}/</span><span class="p">.</span><span class="nf">match?</span><span class="p">(</span><span class="s1">'aa'</span><span class="p">)</span> <span class="c1">#=> true</span>
<span class="nb">p</span> <span class="sr">/(a(?:x?y?|z){1,2}){2}/</span><span class="p">.</span><span class="nf">match?</span><span class="p">(</span><span class="s1">'aa'</span><span class="p">)</span> <span class="c1">#=> true</span>
</code></pre>
<p>Same behavior in ruby 3.0, 3.1, 3.2</p>
Ruby master - Bug #20089 (Open): Fiber#kill transfers to root fiber
https://redmine.ruby-lang.org/issues/20089
2023-12-26T16:46:04Z
rmosolgo (Robert Mosolgo)
rdmosolgo@gmail.com
<p>I was hoping to use <code>Fiber#kill</code> to clean up formerly <code>.transfer</code>-d Fibers and work around <a href="https://bugs.ruby-lang.org/issues/20081" class="external">https://bugs.ruby-lang.org/issues/20081</a>, but I found that <code>Fiber#kill</code> has a similar control flow jump behavior. Is this on purpose, or a bug?</p>
<p>Here's a script to test the behavior:</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="n">manager</span> <span class="o">=</span> <span class="no">Fiber</span><span class="p">.</span><span class="nf">new</span> <span class="k">do</span>
<span class="n">worker</span> <span class="o">=</span> <span class="no">Fiber</span><span class="p">.</span><span class="nf">new</span> <span class="k">do</span>
<span class="nb">puts</span> <span class="s2">"2. Begin Worker"</span>
<span class="n">manager</span><span class="p">.</span><span class="nf">transfer</span>
<span class="nb">puts</span> <span class="s2">"This should never print -- killed"</span>
<span class="k">end</span>
<span class="nb">puts</span> <span class="s2">"1. Transfer to Worker"</span>
<span class="n">worker</span><span class="p">.</span><span class="nf">transfer</span>
<span class="nb">puts</span> <span class="s2">"3. Killing Worker"</span>
<span class="n">worker</span><span class="p">.</span><span class="nf">kill</span>
<span class="nb">puts</span> <span class="s2">"4. Finished manager"</span>
<span class="k">end</span>
<span class="n">manager</span><span class="p">.</span><span class="nf">transfer</span>
<span class="nb">puts</span> <span class="s2">"5. Finished script"</span>
</code></pre>
<p>I expected items <code>1</code> through <code>5</code> to be printed in order, but in fact, <code>4</code> is never printed:</p>
<pre><code>$ ruby fiber_transfer_test.rb
1. Transfer to Worker
2. Begin Worker
3. Killing Worker
5. Finished script
</code></pre>
<p>It seems like <code>worker.kill</code> is transferring control to the top-level fiber instead of giving it back to <code>manager</code>.</p>
<p>I also tried having the thread kill <em>itself</em>, hoping it would return to the fiber that originally <code>.transfer</code>ed to it, but it also seems to jump out:</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="n">manager</span> <span class="o">=</span> <span class="no">Fiber</span><span class="p">.</span><span class="nf">new</span> <span class="k">do</span>
<span class="n">worker</span> <span class="o">=</span> <span class="no">Fiber</span><span class="p">.</span><span class="nf">new</span> <span class="k">do</span>
<span class="nb">puts</span> <span class="s2">"2. Begin Worker"</span>
<span class="n">manager</span><span class="p">.</span><span class="nf">transfer</span>
<span class="no">Fiber</span><span class="p">.</span><span class="nf">current</span><span class="p">.</span><span class="nf">kill</span>
<span class="nb">puts</span> <span class="s2">"This should never print -- killed"</span>
<span class="k">end</span>
<span class="nb">puts</span> <span class="s2">"1. Transfer to Worker"</span>
<span class="n">worker</span><span class="p">.</span><span class="nf">transfer</span>
<span class="nb">puts</span> <span class="s2">"3. Killing Worker"</span>
<span class="n">worker</span><span class="p">.</span><span class="nf">transfer</span>
<span class="nb">puts</span> <span class="s2">"4. Finished manager"</span>
<span class="k">end</span>
<span class="n">manager</span><span class="p">.</span><span class="nf">transfer</span>
<span class="nb">puts</span> <span class="s2">"5. Finished script"</span>
</code></pre>
<p>Prints:</p>
<pre><code>1. Transfer to Worker
2. Begin Worker
3. Killing Worker
5. Finished script
</code></pre>
Ruby master - Bug #20088 (Open): Ruby 3.3.0 does not cross-complie on arm64-darwin
https://redmine.ruby-lang.org/issues/20088
2023-12-26T15:33:49Z
stanhu (Stan Hu)
<p>To reproduce:</p>
<pre><code class="shell syntaxhl" data-language="shell">docker run <span class="nt">-it</span> ghcr.io/rake-compiler/rake-compiler-dock-image:1.4.0.rc2-mri-arm64-darwin bash
<span class="nb">cd</span> /tmp
<span class="nb">export </span><span class="nv">CPPFLAGS</span><span class="o">=</span><span class="s1">''</span>
<span class="nb">export </span><span class="nv">CFLAGS</span><span class="o">=</span><span class="s1">'-O1 -fno-omit-frame-pointer -fno-fast-math -fstack-protector-strong '</span>
<span class="nb">export </span><span class="nv">LDFLAGS</span><span class="o">=</span><span class="s1">'-pipe '</span>
<span class="nb">export </span><span class="nv">CC</span><span class="o">=</span>aarch64-apple-darwin-clang
<span class="nb">export </span><span class="nv">MAKE</span><span class="o">=</span><span class="s1">'make V=1'</span>
rake-compiler cross-ruby <span class="nv">VERSION</span><span class="o">=</span>3.3.0 <span class="nv">HOST</span><span class="o">=</span>aarch64-apple-darwin
</code></pre>
<p>This errors out with:</p>
<pre><code class="shell syntaxhl" data-language="shell">aarch64-apple-darwin-clang <span class="nt">-O1</span> <span class="nt">-fno-omit-frame-pointer</span> <span class="nt">-fno-fast-math</span> <span class="nt">-fstack-protector-strong</span> <span class="nt">-fdeclspec</span> <span class="nt">-O3</span> <span class="nt">-fno-fast-math</span> <span class="nt">-ggdb3</span> <span class="nt">-Wall</span> <span class="nt">-Wextra</span> <span class="nt">-Wextra-tokens</span> <span class="nt">-Wdeprecated-declarations</span> <span class="nt">-Wdivision-by-zero</span> <span class="nt">-Wdiv-by-zero</span> <span class="nt">-Wimplicit-function-declaration</span> <span class="nt">-Wimplicit-int</span> <span class="nt">-Wpointer-arith</span> <span class="nt">-Wshorten-64-to-32</span> <span class="nt">-Wwrite-strings</span> <span class="nt">-Wold-style-definition</span> <span class="nt">-Wmissing-noreturn</span> <span class="nt">-Wno-constant-logical-operand</span> <span class="nt">-Wno-long-long</span> <span class="nt">-Wno-missing-field-initializers</span> <span class="nt">-Wno-overlength-strings</span> <span class="nt">-Wno-parentheses-equality</span> <span class="nt">-Wno-self-assign</span> <span class="nt">-Wno-tautological-compare</span> <span class="nt">-Wno-unused-parameter</span> <span class="nt">-Wno-unused-value</span> <span class="nt">-Wunused-variable</span> <span class="nt">-Wmisleading-indentation</span> <span class="nt">-Wundef</span> <span class="nt">-pipe</span> <span class="nt">-march</span><span class="o">=</span>arm64 <span class="nt">-U_FORTIFY_SOURCE</span> <span class="nt">-D_FORTIFY_SOURCE</span><span class="o">=</span>2 <span class="nt">-fstack-protector-strong</span> <span class="nt">-fno-strict-overflow</span> <span class="nt">-fvisibility</span><span class="o">=</span>hidden <span class="nt">-DRUBY_EXPORT</span> <span class="nt">-fPIE</span> <span class="nt">-I</span><span class="nb">.</span> <span class="nt">-I</span>.ext/include/arm64-darwin <span class="nt">-I</span>/usr/local/rake-compiler/sources/ruby-3.3.0/include <span class="nt">-I</span>/usr/local/rake-compiler/sources/ruby-3.3.0 <span class="nt">-I</span>/usr/local/rake-compiler/sources/ruby-3.3.0/prism <span class="nt">-I</span>/usr/local/rake-compiler/sources/ruby-3.3.0/enc/unicode/15.0.0 <span class="nt">-D_XOPEN_SOURCE</span> <span class="nt">-D_DARWIN_C_SOURCE</span> <span class="nt">-D_DARWIN_UNLIMITED_SELECT</span> <span class="nt">-D_REENTRANT</span> <span class="nt">-o</span> main.o <span class="nt">-c</span> /usr/local/rake-compiler/sources/ruby-3.3.0/main.c
clang: error: the clang compiler does not support <span class="s1">'-march=arm64'</span>
make: <span class="k">***</span> <span class="o">[</span>uncommon.mk:1291: main.o] Error 1
</code></pre>
<p>This appears to be a regression due to <a href="https://github.com/ruby/ruby/pull/9250" class="external">https://github.com/ruby/ruby/pull/9250</a>. <code>RUBY_DEFAULT_ARCH("$target_cpu")</code> is called, and this <code>case</code> statement is hit:</p>
<pre><code data-language="ac">AS_CASE([$build_os],
[darwin*], [ARCH_FLAG="-arch "$1],
[ARCH_FLAG=-march=$1]
</code></pre>
<p>I'm not sure this test is correct, since <code>$build_os</code> appears to be <code>linux-gnu</code>. This results in <code>-march=arm64</code> being used, which is not a valid option even in <code>clang</code> 15.0.0.</p>
<p>Should <code>$target_cpu</code> and <code>$target_os</code> be considered instead?</p>
<p>The <code>configure</code> output shows:</p>
<pre><code>Configuration summary for ruby version 3.3.0
* Installation prefix: /usr/local/rake-compiler/ruby/aarch64-apple-darwin/ruby-3.3.0
* exec prefix: ${prefix}
* arch: arm64-darwin
* site arch: ${arch}
* RUBY_BASE_NAME: ruby
* enable shared: no
* ruby lib prefix: ${libdir}/${RUBY_BASE_NAME}
* site libraries path: ${rubylibprefix}/${sitearch}
* vendor path: ${rubylibprefix}/vendor_ruby
* target OS: darwin
* compiler: aarch64-apple-darwin-clang
* with thread: pthread
* with coroutine: arm64
* enable shared libs: no
* dynamic library ext: bundle
* CFLAGS: -fdeclspec ${optflags} ${debugflags} ${warnflags}
* LDFLAGS: -L. -pipe -fstack-protector-strong
* DLDFLAGS: -pipe -Wl,-multiply_defined,suppress -Wl,-undefined,dynamic_lookup
* optflags: -O3 -fno-fast-math
* debugflags: -ggdb3
* warnflags: -Wall -Wextra -Wextra-tokens -Wdeprecated-declarations -Wdivision-by-zero -Wdiv-by-zero -Wimplicit-function-declaration -Wimplicit-int -Wpointer-arith -Wshorten-64-to-32 -Wwrite-strings -Wold-style-definition \
-Wmissing-noreturn -Wno-constant-logical-operand -Wno-long-long -Wno-missing-field-initializers -Wno-overlength-strings -Wno-parentheses-equality -Wno-self-assign -Wno-tautological-compare -Wno-unused-parameter \
-Wno-unused-value -Wunused-variable -Wmisleading-indentation -Wundef
* strip command: aarch64-apple-darwin-strip -A -n
* install doc: no
* YJIT support: no
* RJIT support: no
* man page type: man
* BASERUBY -v: ruby 3.1.3p185 (2022-11-24 revision 1a6b16756e) [x86_64-linux]
</code></pre>
<p>The <code>configure</code> statement for reference:</p>
<pre><code>./configure --host=aarch64-apple-darwin --target=aarch64-apple-darwin --build=x86_64-pc-linux-gnu --enable-install-static-library --disable-jit-support --disable-install-doc --with-ext= --enable-static --disable-shared --prefix=/usr/local/rake-compiler/ruby/aarch64-apple-darwin/ruby-3.3.0
</code></pre>
<p>This was first reported in a CI failure in <a href="https://github.com/rake-compiler/rake-compiler-dock/pull/112#issuecomment-1869367367" class="external">https://github.com/rake-compiler/rake-compiler-dock/pull/112#issuecomment-1869367367</a>.</p>
Ruby master - Bug #20082 (Open): Killing fibers across threads: unexpected exception
https://redmine.ruby-lang.org/issues/20082
2023-12-23T21:15:27Z
zverok (Victor Shepelev)
zverok.offline@gmail.com
<p>For providing the example in a changelog, I tried to imitate killing fibers belonging to other threads.<br>
Documentation <a href="https://docs.ruby-lang.org/en/master/Fiber.html#method-i-kill" class="external">claims</a></p>
<blockquote>
<p>Raises FiberError if called on a fiber belonging to another thread.</p>
</blockquote>
<p>So, I created this artificial example to check how it works:</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="n">fibers</span> <span class="o">=</span> <span class="p">[]</span>
<span class="no">Thread</span><span class="p">.</span><span class="nf">new</span> <span class="p">{</span>
<span class="n">f</span> <span class="o">=</span> <span class="no">Fiber</span><span class="p">.</span><span class="nf">new</span> <span class="p">{</span> <span class="p">(</span><span class="mi">1</span><span class="o">..</span><span class="p">).</span><span class="nf">each</span> <span class="p">{</span> <span class="nb">sleep</span><span class="p">(</span><span class="mf">0.1</span><span class="p">)</span> <span class="p">}</span> <span class="p">}</span>
<span class="n">fibers</span> <span class="o"><<</span> <span class="n">f</span>
<span class="n">f</span><span class="p">.</span><span class="nf">resume</span>
<span class="p">}</span>
<span class="nb">sleep</span><span class="p">(</span><span class="mf">0.1</span><span class="p">)</span> <span class="c1"># to make sure the thread has started</span>
<span class="n">fibers</span><span class="p">.</span><span class="nf">last</span><span class="p">.</span><span class="nf">kill</span>
</code></pre>
<p>The example indeed fails with <code>FiberError</code>, but the error message is confusing:</p>
<pre><code>in `kill': attempt to resume a resumed fiber (double resume) (FiberError)
</code></pre>
<p>Is this an expected message for such case? Or am I misunderstanding something?</p>
Ruby master - Bug #20081 (Open): Transfered Fiber doesn't return to Fiber that started it
https://redmine.ruby-lang.org/issues/20081
2023-12-23T17:44:10Z
rmosolgo (Robert Mosolgo)
rdmosolgo@gmail.com
<p>Hi! I'm trying to figure out how to make sure that Fibers started with <code>.transfer</code> end up <em>terminated</em>, not just suspended. (If they're suspended, Rails thinks they're still alive, and they continue to hold onto database connections, see: <a href="https://github.com/rmosolgo/graphql-ruby/issues/4739#issuecomment-1866930914" class="external">https://github.com/rmosolgo/graphql-ruby/issues/4739#issuecomment-1866930914</a>.)</p>
<p>So, I'm looking for way to make sure that any Fiber I start with <code>.transfer</code> will be properly terminated. But what I noticed is that when a transfer-based Fiber terminates, it gives control back to the top-most Fiber, not the Fiber which transfered to it. Is this intended? Here's a script to replicate the issue:</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="n">manager</span> <span class="o">=</span> <span class="no">Fiber</span><span class="p">.</span><span class="nf">new</span> <span class="k">do</span>
<span class="n">parent</span> <span class="o">=</span> <span class="no">Fiber</span><span class="p">.</span><span class="nf">current</span>
<span class="n">worker</span> <span class="o">=</span> <span class="no">Fiber</span><span class="p">.</span><span class="nf">new</span> <span class="k">do</span>
<span class="nb">puts</span> <span class="s2">"2. Begin Worker"</span>
<span class="n">parent</span><span class="p">.</span><span class="nf">transfer</span>
<span class="nb">puts</span> <span class="s2">"4. End Worker"</span>
<span class="k">end</span>
<span class="nb">puts</span> <span class="s2">"1. Transfer 1"</span>
<span class="n">worker</span><span class="p">.</span><span class="nf">transfer</span>
<span class="nb">puts</span> <span class="s2">"3. Transfer 2"</span>
<span class="n">worker</span><span class="p">.</span><span class="nf">transfer</span>
<span class="nb">puts</span> <span class="s2">"5. Finished manager"</span>
<span class="k">end</span>
<span class="n">manager</span><span class="p">.</span><span class="nf">transfer</span>
<span class="nb">puts</span> <span class="s2">"6. Finished script"</span>
</code></pre>
<p>I expect the steps to print in order:</p>
<pre><code>1. Transfer 1
2. Begin Worker
3. Transfer 2
4. End Worker
5. Finished manager
6. Finished script
</code></pre>
<p>But instead, <code>5. ...</code> is skipped:</p>
<pre><code>1. Transfer 1
2. Begin Worker
3. Transfer 2
4. End Worker
6. Finished script
</code></pre>
<p>I think that's because my <code>worker</code> fiber terminates and passes control back to the top-level Fiber.</p>
<p>Should it have passed control back to the <code>manager</code>? Or is there another way to make sure <code>worker</code> is terminated, and <code>manager</code> gets control?</p>
Ruby master - Bug #20079 (Open): alexandria testsuite began to segfault recently
https://redmine.ruby-lang.org/issues/20079
2023-12-22T03:59:59Z
mtasaka (Mamoru TASAKA)
mtasaka@fedoraproject.org
<p>Looks like Fedora alexandria-0.7.9-4 testsuite began to segfault with recent ruby3.3.0dev.<br>
It does not always segfault, but with about 20-30%? probability the testsuite segfaults, so it may be GC related?</p>
<p>And looks like:<br>
OKAY: <a class="changeset" title="Make the SHAPE_TOO_COMPLEX performance warning more actionable As suggested by Mame, we should t..." href="https://redmine.ruby-lang.org/projects/ruby-master/repository/git/revisions/ba1d1522d35a7dd2595603ead57cd0fa8b21ba8b">ba1d1522d3</a><br>
BAD: <a class="changeset" title="Fix flaky test test_stat_heap The test sometimes fails with: 1) Failure: TestGc#test_st..." href="https://redmine.ruby-lang.org/projects/ruby-master/repository/git/revisions/ce436ff3e3cbd6810d7cf83fedbd2b55995ca0b1">ce436ff3e3</a></p>
<p>Comparison: <a href="https://github.com/ruby/ruby/compare/ba1d1522d3...ce436ff3e3" class="external">https://github.com/ruby/ruby/compare/ba1d1522d3...ce436ff3e3</a></p>
<p>alexandria means <a href="https://github.com/mvz/alexandria-book-collection-manager" class="external">https://github.com/mvz/alexandria-book-collection-manager</a></p>
<p>Backtrace is:</p>
<pre><code>+ xvfb-run -s '-screen 0 640x480x24' rake spec:unit
/usr/bin/ruby -rbundler/setup -rsimplecov -Ilib -w -I/usr/share/gems/gems/rspec-support-3.12.1/lib:/usr/share/gems/gems/rspec-core-3.12.2/lib /usr/share/gems/gems/rspec-core-3.12.2/exe/rspec --pattern spec/alexandria/\*\*/\*_spec.rb
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:61: warning: assigned but unused variable - e
/usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/version/info.rb:76: warning: statement not reached
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/ui/ui_manager.rb:728: warning: assigned but unused variable - book
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/ui/ui_manager.rb:728: warning: assigned but unused variable - isbn
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/ui/ui_manager.rb:728: warning: assigned but unused variable - library
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/ui/ui_manager.rb:714: warning: assigned but unused variable - books_to_add
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/ui/ui_manager.rb:701: warning: assigned but unused variable - title
*****...*....../builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
./builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
./builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
./builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
./builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
./builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
./builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
./builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
./builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
.........../builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
./builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
./builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
./builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
./builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
./builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
./builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
./builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb:222:in `regularize_book_from_yaml': YAML.unescape is deprecated
................**....../usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/tree-model.rb:105: [BUG] Segmentation fault at 0x0000000000000000
ruby 3.3.0dev (2023-12-22 master 68bcca4c2b) [x86_64-linux]
-- Control frame information -----------------------------------------------
c:0041 p:0020 s:0220 e:000214 METHOD /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/tree-model.rb:105
c:0040 p:0007 s:0210 e:000209 METHOD /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/tree-iter.rb:33
c:0039 p:0014 s:0202 e:000201 METHOD /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/ui/libraries_combo.rb:79
c:0038 p:0075 s:0194 e:000193 METHOD /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/ui/libraries_combo.rb:41
c:0037 p:0062 s:0186 e:000185 METHOD /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/ui/acquire_dialog.rb:58 [FINISH]
c:0036 p:---- s:0178 e:000177 CFUNC :new
c:0035 p:0015 s:0173 e:000172 BLOCK /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/spec/alexandria/ui/acquire_dialog_spec.rb:12 [FINISH]
c:0034 p:---- s:0169 e:000168 CFUNC :instance_exec
c:0033 p:0022 s:0164 e:000163 BLOCK /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:263
c:0032 p:0002 s:0159 e:000158 BLOCK /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:511
c:0031 p:0002 s:0156 e:000155 BLOCK /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:468
c:0030 p:0002 s:0153 e:000152 BLOCK /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:486
c:0029 p:0002 s:0150 e:000149 BLOCK /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:626
c:0028 p:0018 s:0147 e:000146 METHOD /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:352
c:0027 p:0004 s:0141 e:000140 BLOCK /usr/share/gems/gems/webmock-3.18.1/lib/webmock/rspec.rb:37 [FINISH]
c:0026 p:---- s:0137 e:000136 CFUNC :instance_exec
c:0025 p:0013 s:0132 e:000131 METHOD /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:457
c:0024 p:0010 s:0126 e:000125 METHOD /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:390
c:0023 p:0009 s:0120 e:000119 BLOCK /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:628
c:0022 p:0018 s:0117 e:000116 METHOD /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:352
c:0021 p:0037 s:0111 E:0026b8 METHOD /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:629
c:0020 p:0104 s:0104 E:002648 METHOD /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:486
c:0019 p:0018 s:0097 E:0025c8 METHOD /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:468
c:0018 p:0019 s:0092 E:000bb8 METHOD /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:511
c:0017 p:0076 s:0087 E:002578 METHOD /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:259
c:0016 p:0037 s:0080 e:000079 BLOCK /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/example_group.rb:646 [FINISH]
c:0015 p:---- s:0074 e:000073 CFUNC :map
c:0014 p:0011 s:0070 e:000069 METHOD /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/example_group.rb:642
c:0013 p:0052 s:0065 e:000064 METHOD /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/example_group.rb:607
c:0012 p:0007 s:0056 e:000055 BLOCK /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/runner.rb:121 [FINISH]
c:0011 p:---- s:0052 e:000051 CFUNC :map
c:0010 p:0030 s:0048 e:000047 BLOCK /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/runner.rb:121
c:0009 p:0026 s:0045 e:000044 METHOD /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/configuration.rb:2070
c:0008 p:0007 s:0041 e:000040 BLOCK /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/runner.rb:116
c:0007 p:0009 s:0037 e:000036 METHOD /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/reporter.rb:74
c:0006 p:0019 s:0032 e:000031 METHOD /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/runner.rb:115
c:0005 p:0035 s:0025 e:000024 METHOD /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/runner.rb:89
c:0004 p:0058 s:0019 e:000018 METHOD /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/runner.rb:71
c:0003 p:0013 s:0011 e:000010 METHOD /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/runner.rb:45
c:0002 p:0010 s:0006 e:000005 EVAL /usr/share/gems/gems/rspec-core-3.12.2/exe/rspec:4 [FINISH]
c:0001 p:0000 s:0003 E:000030 DUMMY [FINISH]
-- Ruby level backtrace information ----------------------------------------
/usr/share/gems/gems/rspec-core-3.12.2/exe/rspec:4:in `<main>'
/usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/runner.rb:45:in `invoke'
/usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/runner.rb:71:in `run'
/usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/runner.rb:89:in `run'
/usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/runner.rb:115:in `run_specs'
/usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/reporter.rb:74:in `report'
/usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/runner.rb:116:in `block in run_specs'
/usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/configuration.rb:2070:in `with_suite_hooks'
/usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/runner.rb:121:in `block (2 levels) in run_specs'
/usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/runner.rb:121:in `map'
/usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/runner.rb:121:in `block (3 levels) in run_specs'
/usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/example_group.rb:607:in `run'
/usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/example_group.rb:642:in `run_examples'
/usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/example_group.rb:642:in `map'
/usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/example_group.rb:646:in `block in run_examples'
/usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:259:in `run'
/usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:511:in `with_around_and_singleton_context_hooks'
/usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:468:in `with_around_example_hooks'
/usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:486:in `run'
/usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:629:in `run_around_example_hooks_for'
/usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:352:in `call'
/usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:628:in `block (2 levels) in run_around_example_hooks_for'
/usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:390:in `execute_with'
/usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:457:in `instance_exec'
/usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:457:in `instance_exec'
/usr/share/gems/gems/webmock-3.18.1/lib/webmock/rspec.rb:37:in `block (2 levels) in <top (required)>'
/usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:352:in `call'
/usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:626:in `block in run_around_example_hooks_for'
/usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:486:in `block in run'
/usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:468:in `block in with_around_example_hooks'
/usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:511:in `block in with_around_and_singleton_context_hooks'
/usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:263:in `block in run'
/usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:263:in `instance_exec'
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/spec/alexandria/ui/acquire_dialog_spec.rb:12:in `block (2 levels) in <top (required)>'
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/spec/alexandria/ui/acquire_dialog_spec.rb:12:in `new'
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/ui/acquire_dialog.rb:58:in `initialize'
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/ui/libraries_combo.rb:41:in `populate_with_libraries'
/builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/ui/libraries_combo.rb:79:in `append_entry'
/usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/tree-iter.rb:33:in `set_value'
/usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/tree-model.rb:105:in `get_column_type'
-- Threading information ---------------------------------------------------
Total ractor count: 1
Ruby thread count for this ractor: 1
-- Machine register context ------------------------------------------------
RIP: 0x00007f6a3121a817 RBP: 0x00007ffdbecf5770 RSP: 0x00007ffdbecf5708
RAX: 0x0000000000000091 RBX: 0x0000009100100003 RCX: 0x00007f6a30b356f0
RDX: 0x00007ffdbecf5728 RDI: 0x6c2f322e32312e33 RSI: 0x0000000000000091
R8: 0x000055e2d391aae8 R9: 0x00000000000006e8 R10: 0x000000000000000c
R11: 0x0000000000077813 R12: 0x00007f6a13a63040 R13: 0x6c2f322e32312e33
R14: 0x000055e2d264ea80 R15: 0x0000000000000091 EFL: 0x0000000000010206
-- C level backtrace information -------------------------------------------
/lib64/libruby.so.3.3(rb_print_backtrace+0x21) [0x7f6a3127ea21] /usr/src/debug/ruby-3.3.0~20231222.0241git68bcca4c2b-184.fc40.391.x86_64/vm_dump.c:820
/lib64/libruby.so.3.3(rb_vm_bugreport+0x9aa) [0x7f6a3128132a] /usr/src/debug/ruby-3.3.0~20231222.0241git68bcca4c2b-184.fc40.391.x86_64/vm_dump.c:1151
/lib64/libruby.so.3.3(rb_bug_for_fatal_signal+0x110) [0x7f6a310d81c0] /usr/src/debug/ruby-3.3.0~20231222.0241git68bcca4c2b-184.fc40.391.x86_64/error.c:1065
/lib64/libruby.so.3.3(sigsegv+0x56) [0x7f6a311f4966] /usr/src/debug/ruby-3.3.0~20231222.0241git68bcca4c2b-184.fc40.391.x86_64/signal.c:926
/lib64/libc.so.6(__restore_rt+0x0) [0x7f6a30cd49a0]
/lib64/libruby.so.3.3(rb_id_table_lookup+0x7) [0x7f6a3121a817] /usr/src/debug/ruby-3.3.0~20231222.0241git68bcca4c2b-184.fc40.391.x86_64/symbol.h:72
/lib64/libruby.so.3.3(vm_search_cc.lto_priv.0+0x58) [0x7f6a31255318] /usr/src/debug/ruby-3.3.0~20231222.0241git68bcca4c2b-184.fc40.391.x86_64/vm_insnhelper.c:2046
/lib64/libruby.so.3.3(vm_search_method_slowpath0.lto_priv.0+0x39) [0x7f6a31255799] /usr/src/debug/ruby-3.3.0~20231222.0241git68bcca4c2b-184.fc40.391.x86_64/vm_insnhelper.c:2142
/lib64/libruby.so.3.3(vm_exec_core.lto_priv.0+0x129) [0x7f6a31264499] /usr/src/debug/ruby-3.3.0~20231222.0241git68bcca4c2b-184.fc40.391.x86_64/vm_insnhelper.c:2224
/lib64/libruby.so.3.3(rb_vm_exec+0x17d) [0x7f6a3127cfdd] /usr/src/debug/ruby-3.3.0~20231222.0241git68bcca4c2b-184.fc40.391.x86_64/vm.c:2486
/lib64/libruby.so.3.3(rb_call0+0x378) [0x7f6a31270868] /usr/src/debug/ruby-3.3.0~20231222.0241git68bcca4c2b-184.fc40.391.x86_64/vm_eval.c:110
/lib64/libruby.so.3.3(rb_funcallv_kw+0x5f) [0x7f6a31270daf] /usr/src/debug/ruby-3.3.0~20231222.0241git68bcca4c2b-184.fc40.391.x86_64/vm_eval.c:899
/lib64/libruby.so.3.3(rb_class_new_instance_pass_kw+0x45) [0x7f6a31163235] /usr/src/debug/ruby-3.3.0~20231222.0241git68bcca4c2b-184.fc40.391.x86_64/object.c:2130
/lib64/libruby.so.3.3(vm_call_cfunc_with_frame_+0x117) [0x7f6a3125c417] /usr/src/debug/ruby-3.3.0~20231222.0241git68bcca4c2b-184.fc40.391.x86_64/vm_insnhelper.c:3490
/lib64/libruby.so.3.3(vm_exec_core.lto_priv.0+0x16c) [0x7f6a312644dc] /usr/src/debug/ruby-3.3.0~20231222.0241git68bcca4c2b-184.fc40.391.x86_64/vm_insnhelper.c:5581
/lib64/libruby.so.3.3(rb_vm_exec+0x17d) [0x7f6a3127cfdd] /usr/src/debug/ruby-3.3.0~20231222.0241git68bcca4c2b-184.fc40.391.x86_64/vm.c:2486
/lib64/libruby.so.3.3(yield_under+0x19a) [0x7f6a312710fa] /usr/src/debug/ruby-3.3.0~20231222.0241git68bcca4c2b-184.fc40.391.x86_64/vm.c:1634
/lib64/libruby.so.3.3(vm_call_cfunc_with_frame_+0x117) [0x7f6a3125c417] /usr/src/debug/ruby-3.3.0~20231222.0241git68bcca4c2b-184.fc40.391.x86_64/vm_insnhelper.c:3490
/lib64/libruby.so.3.3(vm_sendish.lto_priv.0+0xb9) [0x7f6a3125d909] /usr/src/debug/ruby-3.3.0~20231222.0241git68bcca4c2b-184.fc40.391.x86_64/vm_insnhelper.c:5585
/lib64/libruby.so.3.3(vm_exec_core.lto_priv.0+0x1daf) [0x7f6a3126611f] /usr/src/debug/ruby-3.3.0~20231222.0241git68bcca4c2b-184.fc40.391.x86_64/redhat-linux-build/insns.def:814
/lib64/libruby.so.3.3(rb_vm_exec+0x17d) [0x7f6a3127cfdd] /usr/src/debug/ruby-3.3.0~20231222.0241git68bcca4c2b-184.fc40.391.x86_64/vm.c:2486
/lib64/libruby.so.3.3(yield_under+0x19a) [0x7f6a312710fa] /usr/src/debug/ruby-3.3.0~20231222.0241git68bcca4c2b-184.fc40.391.x86_64/vm.c:1634
/lib64/libruby.so.3.3(vm_call_cfunc_with_frame_+0x117) [0x7f6a3125c417] /usr/src/debug/ruby-3.3.0~20231222.0241git68bcca4c2b-184.fc40.391.x86_64/vm_insnhelper.c:3490
/lib64/libruby.so.3.3(vm_sendish.lto_priv.0+0xb9) [0x7f6a3125d909] /usr/src/debug/ruby-3.3.0~20231222.0241git68bcca4c2b-184.fc40.391.x86_64/vm_insnhelper.c:5585
/lib64/libruby.so.3.3(vm_exec_core.lto_priv.0+0x1daf) [0x7f6a3126611f] /usr/src/debug/ruby-3.3.0~20231222.0241git68bcca4c2b-184.fc40.391.x86_64/redhat-linux-build/insns.def:814
/lib64/libruby.so.3.3(rb_vm_exec+0x17d) [0x7f6a3127cfdd] /usr/src/debug/ruby-3.3.0~20231222.0241git68bcca4c2b-184.fc40.391.x86_64/vm.c:2486
/lib64/libruby.so.3.3(rb_yield+0x77) [0x7f6a3126a787] /usr/src/debug/ruby-3.3.0~20231222.0241git68bcca4c2b-184.fc40.391.x86_64/vm.c:1634
/lib64/libruby.so.3.3(rb_ary_collect.lto_priv.0+0x5c) [0x7f6a31065f6c] /usr/src/debug/ruby-3.3.0~20231222.0241git68bcca4c2b-184.fc40.391.x86_64/array.c:3632
/lib64/libruby.so.3.3(vm_call_cfunc_with_frame_+0x117) [0x7f6a3125c417] /usr/src/debug/ruby-3.3.0~20231222.0241git68bcca4c2b-184.fc40.391.x86_64/vm_insnhelper.c:3490
/lib64/libruby.so.3.3(vm_sendish.lto_priv.0+0xb9) [0x7f6a3125d909] /usr/src/debug/ruby-3.3.0~20231222.0241git68bcca4c2b-184.fc40.391.x86_64/vm_insnhelper.c:5585
/lib64/libruby.so.3.3(vm_exec_core.lto_priv.0+0x1daf) [0x7f6a3126611f] /usr/src/debug/ruby-3.3.0~20231222.0241git68bcca4c2b-184.fc40.391.x86_64/redhat-linux-build/insns.def:814
/lib64/libruby.so.3.3(rb_vm_exec+0x17d) [0x7f6a3127cfdd] /usr/src/debug/ruby-3.3.0~20231222.0241git68bcca4c2b-184.fc40.391.x86_64/vm.c:2486
/lib64/libruby.so.3.3(rb_yield+0x77) [0x7f6a3126a787] /usr/src/debug/ruby-3.3.0~20231222.0241git68bcca4c2b-184.fc40.391.x86_64/vm.c:1634
/lib64/libruby.so.3.3(rb_ary_collect.lto_priv.0+0x5c) [0x7f6a31065f6c] /usr/src/debug/ruby-3.3.0~20231222.0241git68bcca4c2b-184.fc40.391.x86_64/array.c:3632
/lib64/libruby.so.3.3(vm_call_cfunc_with_frame_+0x117) [0x7f6a3125c417] /usr/src/debug/ruby-3.3.0~20231222.0241git68bcca4c2b-184.fc40.391.x86_64/vm_insnhelper.c:3490
/lib64/libruby.so.3.3(vm_sendish.lto_priv.0+0xb9) [0x7f6a3125d909] /usr/src/debug/ruby-3.3.0~20231222.0241git68bcca4c2b-184.fc40.391.x86_64/vm_insnhelper.c:5585
/lib64/libruby.so.3.3(vm_exec_core.lto_priv.0+0x1daf) [0x7f6a3126611f] /usr/src/debug/ruby-3.3.0~20231222.0241git68bcca4c2b-184.fc40.391.x86_64/redhat-linux-build/insns.def:814
/lib64/libruby.so.3.3(rb_vm_exec+0x17d) [0x7f6a3127cfdd] /usr/src/debug/ruby-3.3.0~20231222.0241git68bcca4c2b-184.fc40.391.x86_64/vm.c:2486
/lib64/libruby.so.3.3(rb_ec_exec_node+0xaa) [0x7f6a310e124a] /usr/src/debug/ruby-3.3.0~20231222.0241git68bcca4c2b-184.fc40.391.x86_64/eval.c:287
/lib64/libruby.so.3.3(ruby_run_node+0x93) [0x7f6a310e8cd3] /usr/src/debug/ruby-3.3.0~20231222.0241git68bcca4c2b-184.fc40.391.x86_64/eval.c:328
/usr/bin/ruby-mri(0x55e2cf058197) [0x55e2cf058197]
/lib64/libc.so.6(__libc_start_call_main+0x7a) [0x7f6a30cbe14a]
/lib64/libc.so.6(__libc_start_main+0x8b) [0x7f6a30cbe20b]
/usr/bin/ruby-mri(_start+0x25) [0x55e2cf0581e5] /usr/src/debug/ruby-3.3.0~20231222.0241git68bcca4c2b-184.fc40.391.x86_64/main.c:59
-- Other runtime information -----------------------------------------------
* Loaded script: /usr/share/gems/gems/rspec-core-3.12.2/exe/rspec
* Loaded features:
0 enumerator.so
1 thread.rb
2 fiber.so
3 rational.so
4 complex.so
5 ruby2_keywords.rb
6 /usr/lib64/ruby/enc/encdb.so
7 /usr/lib64/ruby/enc/trans/transdb.so
8 /usr/lib64/ruby/rbconfig.rb
9 /usr/share/rubygems/rubygems/compatibility.rb
10 /usr/share/rubygems/rubygems/defaults.rb
11 /usr/share/rubygems/rubygems/deprecate.rb
12 /usr/share/rubygems/rubygems/errors.rb
13 /usr/share/rubygems/rubygems/unknown_command_spell_checker.rb
14 /usr/share/rubygems/rubygems/exceptions.rb
15 /usr/share/rubygems/rubygems/basic_specification.rb
16 /usr/share/rubygems/rubygems/stub_specification.rb
17 /usr/share/rubygems/rubygems/platform.rb
18 /usr/share/rubygems/rubygems/util/list.rb
19 /usr/share/rubygems/rubygems/version.rb
20 /usr/share/rubygems/rubygems/requirement.rb
21 /usr/share/rubygems/rubygems/specification.rb
22 /usr/share/rubygems/rubygems/defaults/operating_system.rb
23 /usr/share/rubygems/rubygems/util.rb
24 /usr/share/rubygems/rubygems/dependency.rb
25 /usr/share/rubygems/rubygems/core_ext/kernel_gem.rb
26 /usr/lib64/ruby/monitor.so
27 /usr/share/ruby/monitor.rb
28 /usr/share/rubygems/rubygems.rb
29 /usr/share/ruby/bundled_gems.rb
30 /usr/share/rubygems/rubygems/path_support.rb
31 /usr/share/ruby/error_highlight/version.rb
32 /usr/share/ruby/error_highlight/base.rb
33 /usr/share/ruby/error_highlight/formatter.rb
34 /usr/share/ruby/error_highlight/core_ext.rb
35 /usr/share/ruby/error_highlight.rb
36 /usr/share/ruby/did_you_mean/version.rb
37 /usr/share/ruby/did_you_mean/core_ext/name_error.rb
38 /usr/share/ruby/did_you_mean/levenshtein.rb
39 /usr/share/ruby/did_you_mean/jaro_winkler.rb
40 /usr/share/ruby/did_you_mean/spell_checker.rb
41 /usr/share/ruby/did_you_mean/spell_checkers/name_error_checkers/class_name_checker.rb
42 /usr/share/ruby/did_you_mean/spell_checkers/name_error_checkers/variable_name_checker.rb
43 /usr/share/ruby/did_you_mean/spell_checkers/name_error_checkers.rb
44 /usr/share/ruby/did_you_mean/spell_checkers/method_name_checker.rb
45 /usr/share/ruby/did_you_mean/spell_checkers/key_error_checker.rb
46 /usr/share/ruby/did_you_mean/spell_checkers/null_checker.rb
47 /usr/share/ruby/did_you_mean/tree_spell_checker.rb
48 /usr/share/ruby/did_you_mean/spell_checkers/require_path_checker.rb
49 /usr/share/ruby/did_you_mean/spell_checkers/pattern_key_name_checker.rb
50 /usr/share/ruby/did_you_mean/formatter.rb
51 /usr/share/ruby/did_you_mean.rb
52 /usr/share/ruby/syntax_suggest/core_ext.rb
53 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/FAKE/bundler/setup.rb
54 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/FAKE/simplecov.rb
55 /usr/share/gems/gems/rspec-support-3.12.1/lib/rspec/support/version.rb
56 /usr/share/gems/gems/rspec-support-3.12.1/lib/rspec/support/comparable_version.rb
57 /usr/share/gems/gems/rspec-support-3.12.1/lib/rspec/support/ruby_features.rb
58 /usr/share/gems/gems/rspec-support-3.12.1/lib/rspec/support.rb
59 /usr/share/gems/gems/rspec-support-3.12.1/lib/rspec/support/caller_filter.rb
60 /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/version.rb
61 /usr/share/gems/gems/rspec-support-3.12.1/lib/rspec/support/warnings.rb
62 /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/warnings.rb
63 /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/set.rb
64 /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/flat_map.rb
65 /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/filter_manager.rb
66 /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/dsl.rb
67 /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/formatters/console_codes.rb
68 /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/formatters/snippet_extractor.rb
69 /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/formatters/syntax_highlighter.rb
70 /usr/share/gems/gems/rspec-support-3.12.1/lib/rspec/support/encoded_string.rb
71 /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/formatters/exception_presenter.rb
72 /usr/share/ruby/shellwords.rb
73 /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/shell_escape.rb
74 /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/formatters/helpers.rb
75 /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/notifications.rb
76 /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/reporter.rb
77 /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb
78 /usr/share/gems/gems/rspec-support-3.12.1/lib/rspec/support/reentrant_mutex.rb
79 /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/memoized_helpers.rb
80 /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/metadata.rb
81 /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/metadata_filter.rb
82 /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/pending.rb
83 /usr/share/gems/gems/rspec-support-3.12.1/lib/rspec/support/directory_maker.rb
84 /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/formatters.rb
85 /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/ordering.rb
86 /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/world.rb
87 /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/backtrace_formatter.rb
88 /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/ruby_project.rb
89 /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/formatters/deprecation_formatter.rb
90 /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/output_wrapper.rb
91 /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/configuration.rb
92 /usr/share/ruby/optparse.rb
93 /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/option_parser.rb
94 /usr/lib64/ruby/cgi/escape.so
95 /usr/share/ruby/cgi/util.rb
96 /usr/share/ruby/erb/version.rb
97 /usr/lib64/ruby/strscan.so
98 /usr/share/ruby/erb/compiler.rb
99 /usr/share/ruby/erb/def_method.rb
100 /usr/lib64/ruby/erb/escape.so
101 /usr/share/ruby/erb/util.rb
102 /usr/share/ruby/erb.rb
103 /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/configuration_options.rb
104 /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/runner.rb
105 /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/invocations.rb
106 /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/example.rb
107 /usr/share/gems/gems/rspec-support-3.12.1/lib/rspec/support/matcher_definition.rb
108 /usr/share/gems/gems/rspec-support-3.12.1/lib/rspec/support/method_signature_verifier.rb
109 /usr/share/gems/gems/rspec-support-3.12.1/lib/rspec/support/with_keywords_when_needed.rb
110 /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/shared_example_group.rb
111 /usr/share/gems/gems/rspec-support-3.12.1/lib/rspec/support/recursive_const_methods.rb
112 /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/example_group.rb
113 /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core.rb
114 /usr/share/gems/gems/rspec-3.12.0/lib/rspec/version.rb
115 /usr/share/gems/gems/rspec-3.12.0/lib/rspec.rb
116 /usr/share/gems/gems/locale-2.1.3/lib/locale/tag/simple.rb
117 /usr/share/gems/gems/locale-2.1.3/lib/locale/tag/irregular.rb
118 /usr/share/gems/gems/locale-2.1.3/lib/locale/tag/common.rb
119 /usr/share/gems/gems/locale-2.1.3/lib/locale/tag/rfc.rb
120 /usr/share/gems/gems/locale-2.1.3/lib/locale/tag/cldr.rb
121 /usr/share/gems/gems/locale-2.1.3/lib/locale/tag/posix.rb
122 /usr/share/gems/gems/locale-2.1.3/lib/locale/tag.rb
123 /usr/share/gems/gems/locale-2.1.3/lib/locale/taglist.rb
124 /usr/share/gems/gems/locale-2.1.3/lib/locale/driver.rb
125 /usr/share/gems/gems/locale-2.1.3/lib/locale/version.rb
126 /usr/share/gems/gems/locale-2.1.3/lib/locale.rb
127 /usr/share/gems/gems/gettext-3.4.9/lib/gettext/version.rb
128 /usr/share/gems/gems/gettext-3.4.9/lib/gettext/class_info.rb
129 /usr/lib64/ruby/stringio.so
130 /usr/share/ruby/singleton.rb
131 /usr/share/ruby/forwardable/impl.rb
132 /usr/share/ruby/forwardable.rb
133 /usr/share/gems/gems/prime-0.1.2/lib/prime.rb
134 /usr/share/gems/gems/gettext-3.4.9/lib/gettext/mo.rb
135 /usr/share/gems/gems/gettext-3.4.9/lib/gettext/locale_path.rb
136 /usr/share/gems/gems/gettext-3.4.9/lib/gettext/text_domain.rb
137 /usr/share/gems/gems/gettext-3.4.9/lib/gettext/text_domain_group.rb
138 /usr/share/gems/gems/gettext-3.4.9/lib/gettext/text_domain_manager.rb
139 /usr/share/gems/gems/gettext-3.4.9/lib/gettext.rb
140 /usr/share/ruby/logger/version.rb
141 /usr/share/ruby/logger/formatter.rb
142 /usr/share/ruby/logger/period.rb
143 /usr/share/ruby/logger/log_device.rb
144 /usr/share/ruby/logger/severity.rb
145 /usr/share/ruby/logger/errors.rb
146 /usr/share/ruby/logger.rb
147 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/logging.rb
148 /usr/share/gems/gems/locale-2.1.3/lib/locale/driver/env.rb
149 /usr/share/gems/gems/locale-2.1.3/lib/locale/driver/posix.rb
150 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/about.rb
151 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/config.rb
152 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/version.rb
153 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/models/book.rb
154 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_store.rb
155 /usr/share/ruby/observer.rb
156 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_collection.rb
157 /usr/share/gems/gems/psych-5.1.2/lib/psych/versions.rb
158 /usr/share/gems/gems/psych-5.1.2/lib/psych/exception.rb
159 /usr/share/ruby/psych/syntax_error.rb
160 /usr/lib64/ruby/psych.so
161 /usr/share/gems/gems/psych-5.1.2/lib/psych/omap.rb
162 /usr/share/gems/gems/psych-5.1.2/lib/psych/set.rb
163 /usr/share/gems/gems/psych-5.1.2/lib/psych/class_loader.rb
164 /usr/share/gems/gems/psych-5.1.2/lib/psych/scalar_scanner.rb
165 /usr/share/gems/gems/psych-5.1.2/lib/psych/nodes/node.rb
166 /usr/share/gems/gems/psych-5.1.2/lib/psych/nodes/stream.rb
167 /usr/share/gems/gems/psych-5.1.2/lib/psych/nodes/document.rb
168 /usr/share/gems/gems/psych-5.1.2/lib/psych/nodes/sequence.rb
169 /usr/share/gems/gems/psych-5.1.2/lib/psych/nodes/scalar.rb
170 /usr/share/gems/gems/psych-5.1.2/lib/psych/nodes/mapping.rb
171 /usr/share/gems/gems/psych-5.1.2/lib/psych/nodes/alias.rb
172 /usr/share/gems/gems/psych-5.1.2/lib/psych/nodes.rb
173 /usr/share/gems/gems/psych-5.1.2/lib/psych/streaming.rb
174 /usr/share/gems/gems/psych-5.1.2/lib/psych/visitors/visitor.rb
175 /usr/share/gems/gems/psych-5.1.2/lib/psych/visitors/to_ruby.rb
176 /usr/share/gems/gems/psych-5.1.2/lib/psych/visitors/emitter.rb
177 /usr/share/gems/gems/psych-5.1.2/lib/psych/handler.rb
178 /usr/share/gems/gems/psych-5.1.2/lib/psych/tree_builder.rb
179 /usr/share/gems/gems/psych-5.1.2/lib/psych/visitors/yaml_tree.rb
180 /usr/share/gems/gems/psych-5.1.2/lib/psych/json/ruby_events.rb
181 /usr/share/gems/gems/psych-5.1.2/lib/psych/visitors/json_tree.rb
182 /usr/share/gems/gems/psych-5.1.2/lib/psych/visitors/depth_first.rb
183 /usr/share/gems/gems/psych-5.1.2/lib/psych/visitors.rb
184 /usr/share/gems/gems/psych-5.1.2/lib/psych/parser.rb
185 /usr/share/gems/gems/psych-5.1.2/lib/psych/coder.rb
186 /usr/share/gems/gems/psych-5.1.2/lib/psych/core_ext.rb
187 /usr/share/gems/gems/psych-5.1.2/lib/psych/stream.rb
188 /usr/share/gems/gems/psych-5.1.2/lib/psych/json/yaml_events.rb
189 /usr/share/gems/gems/psych-5.1.2/lib/psych/json/tree_builder.rb
190 /usr/share/gems/gems/psych-5.1.2/lib/psych/json/stream.rb
191 /usr/share/gems/gems/psych-5.1.2/lib/psych/handlers/document_stream.rb
192 /usr/share/ruby/psych.rb
193 /usr/share/ruby/yaml.rb
194 /usr/share/ruby/fileutils.rb
195 /usr/share/gems/gems/rexml-3.2.6/lib/rexml/security.rb
196 /usr/share/gems/gems/rexml-3.2.6/lib/rexml/parseexception.rb
197 /usr/share/gems/gems/rexml-3.2.6/lib/rexml/formatters/default.rb
198 /usr/share/gems/gems/rexml-3.2.6/lib/rexml/formatters/pretty.rb
199 /usr/share/gems/gems/rexml-3.2.6/lib/rexml/node.rb
200 /usr/share/gems/gems/rexml-3.2.6/lib/rexml/child.rb
201 /usr/share/gems/gems/rexml-3.2.6/lib/rexml/parent.rb
202 /usr/share/gems/gems/rexml-3.2.6/lib/rexml/xmltokens.rb
203 /usr/share/gems/gems/rexml-3.2.6/lib/rexml/namespace.rb
204 /usr/share/gems/gems/rexml-3.2.6/lib/rexml/encoding.rb
205 /usr/share/gems/gems/rexml-3.2.6/lib/rexml/source.rb
206 /usr/share/gems/gems/rexml-3.2.6/lib/rexml/entity.rb
207 /usr/share/gems/gems/rexml-3.2.6/lib/rexml/attlistdecl.rb
208 /usr/share/gems/gems/rexml-3.2.6/lib/rexml/doctype.rb
209 /usr/share/gems/gems/rexml-3.2.6/lib/rexml/text.rb
210 /usr/share/gems/gems/rexml-3.2.6/lib/rexml/attribute.rb
211 /usr/share/gems/gems/rexml-3.2.6/lib/rexml/cdata.rb
212 /usr/share/gems/gems/rexml-3.2.6/lib/rexml/functions.rb
213 /usr/share/ruby/prettyprint.rb
214 /usr/share/ruby/pp.rb
215 /usr/share/gems/gems/rexml-3.2.6/lib/rexml/parsers/xpathparser.rb
216 /usr/share/gems/gems/rexml-3.2.6/lib/rexml/xpath_parser.rb
217 /usr/share/gems/gems/rexml-3.2.6/lib/rexml/xpath.rb
218 /usr/share/gems/gems/rexml-3.2.6/lib/rexml/element.rb
219 /usr/share/gems/gems/rexml-3.2.6/lib/rexml/xmldecl.rb
220 /usr/share/gems/gems/rexml-3.2.6/lib/rexml/comment.rb
221 /usr/share/gems/gems/rexml-3.2.6/lib/rexml/instruction.rb
222 /usr/share/gems/gems/rexml-3.2.6/lib/rexml/rexml.rb
223 /usr/share/gems/gems/rexml-3.2.6/lib/rexml/output.rb
224 /usr/share/gems/gems/rexml-3.2.6/lib/rexml/undefinednamespaceexception.rb
225 /usr/share/ruby/set.rb
226 /usr/share/gems/gems/rexml-3.2.6/lib/rexml/parsers/baseparser.rb
227 /usr/share/gems/gems/rexml-3.2.6/lib/rexml/parsers/streamparser.rb
228 /usr/share/gems/gems/rexml-3.2.6/lib/rexml/validation/validationexception.rb
229 /usr/share/gems/gems/rexml-3.2.6/lib/rexml/parsers/treeparser.rb
230 /usr/share/gems/gems/rexml-3.2.6/lib/rexml/document.rb
231 /usr/share/ruby/delegate.rb
232 /usr/lib64/ruby/etc.so
233 /usr/share/ruby/tmpdir.rb
234 /usr/share/ruby/tempfile.rb
235 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/net.rb
236 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/image_fetcher.rb
237 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/models/library.rb
238 /usr/lib64/ruby/date_core.so
239 /usr/share/ruby/date.rb
240 /usr/share/ruby/time.rb
241 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/smart_library.rb
242 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/execution_queue.rb
243 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/import_library.rb
244 /usr/share/ruby/csv/fields_converter.rb
245 /usr/share/ruby/English.rb
246 /usr/share/ruby/csv/input_record_separator.rb
247 /usr/share/ruby/csv/row.rb
248 /usr/share/ruby/csv/table.rb
249 /usr/share/ruby/csv/parser.rb
250 /usr/share/ruby/csv/writer.rb
251 /usr/share/ruby/csv/version.rb
252 /usr/share/ruby/csv/core_ext/array.rb
253 /usr/share/ruby/csv/core_ext/string.rb
254 /usr/share/ruby/csv.rb
255 /usr/share/gems/gems/image_size-3.3.0/lib/image_size/format_error.rb
256 /usr/share/gems/gems/image_size-3.3.0/lib/image_size/isobmff.rb
257 /usr/lib64/ruby/pathname.so
258 /usr/share/ruby/pathname.rb
259 /usr/share/gems/gems/image_size-3.3.0/lib/image_size/reader.rb
260 /usr/share/gems/gems/image_size-3.3.0/lib/image_size/chunky_reader.rb
261 /usr/share/gems/gems/image_size-3.3.0/lib/image_size/seekable_io_reader.rb
262 /usr/share/gems/gems/image_size-3.3.0/lib/image_size/stream_io_reader.rb
263 /usr/share/gems/gems/image_size-3.3.0/lib/image_size/string_reader.rb
264 /usr/share/gems/gems/image_size-3.3.0/lib/image_size.rb
265 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/export_library.rb
266 /usr/share/ruby/cgi/core.rb
267 /usr/share/ruby/cgi/cookie.rb
268 /usr/share/ruby/cgi.rb
269 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/book_providers/douban.rb
270 /usr/lib64/ruby/socket.so
271 /usr/share/ruby/socket.rb
272 /usr/share/ruby/timeout.rb
273 /usr/lib64/ruby/io/wait.so
274 /usr/share/ruby/net/protocol.rb
275 /usr/share/ruby/uri/version.rb
276 /usr/share/ruby/uri/rfc2396_parser.rb
277 /usr/share/ruby/uri/rfc3986_parser.rb
278 /usr/share/ruby/uri/common.rb
279 /usr/share/ruby/uri/generic.rb
280 /usr/share/ruby/uri/file.rb
281 /usr/share/ruby/uri/ftp.rb
282 /usr/share/ruby/uri/http.rb
283 /usr/share/ruby/uri/https.rb
284 /usr/share/ruby/uri/ldap.rb
285 /usr/share/ruby/uri/ldaps.rb
286 /usr/share/ruby/uri/mailto.rb
287 /usr/share/ruby/uri/ws.rb
288 /usr/share/ruby/uri/wss.rb
289 /usr/share/ruby/uri.rb
290 /usr/share/ruby/random/formatter.rb
291 /usr/share/ruby/securerandom.rb
292 /usr/share/ruby/resolv.rb
293 /usr/lib64/ruby/zlib.so
294 /usr/share/ruby/net/http/exceptions.rb
295 /usr/share/ruby/net/http/header.rb
296 /usr/share/ruby/net/http/generic_request.rb
297 /usr/share/ruby/net/http/request.rb
298 /usr/share/ruby/net/http/requests.rb
299 /usr/share/ruby/net/http/response.rb
300 /usr/share/ruby/net/http/responses.rb
301 /usr/share/ruby/net/http/proxy_delta.rb
302 /usr/share/ruby/net/http/backward.rb
303 /usr/share/ruby/net/http.rb
304 /usr/lib64/gems/ruby/nokogiri-1.15.5/nokogiri/nokogiri.so
305 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/extension.rb
306 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/version/constant.rb
307 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/version/info.rb
308 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/version.rb
309 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/class_resolver.rb
310 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/syntax_error.rb
311 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/xml/pp/node.rb
312 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/xml/pp/character_data.rb
313 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/xml/pp.rb
314 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/xml/parse_options.rb
315 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/xml/sax/document.rb
316 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/xml/sax/parser_context.rb
317 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/xml/sax/parser.rb
318 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/xml/sax/push_parser.rb
319 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/xml/sax.rb
320 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/xml/searchable.rb
321 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/xml/node/save_options.rb
322 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/xml/node.rb
323 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/xml/attribute_decl.rb
324 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/xml/element_decl.rb
325 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/xml/element_content.rb
326 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/xml/character_data.rb
327 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/xml/namespace.rb
328 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/xml/attr.rb
329 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/xml/dtd.rb
330 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/xml/cdata.rb
331 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/xml/text.rb
332 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/xml/document.rb
333 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/xml/document_fragment.rb
334 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/xml/processing_instruction.rb
335 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/xml/node_set.rb
336 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/xml/syntax_error.rb
337 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/xml/xpath/syntax_error.rb
338 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/xml/xpath.rb
339 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/xml/xpath_context.rb
340 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/xml/builder.rb
341 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/xml/reader.rb
342 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/xml/notation.rb
343 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/xml/entity_decl.rb
344 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/xml/entity_reference.rb
345 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/xml/schema.rb
346 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/xml/relax_ng.rb
347 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/xml.rb
348 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/xslt/stylesheet.rb
349 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/xslt.rb
350 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/html4/entity_lookup.rb
351 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/html4/document.rb
352 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/html4/document_fragment.rb
353 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/html4/encoding_reader.rb
354 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/html4/sax/parser_context.rb
355 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/html4/sax/parser.rb
356 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/html4/sax/push_parser.rb
357 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/html4/element_description.rb
358 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/html4/element_description_defaults.rb
359 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/html4.rb
360 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/html.rb
361 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/decorators/slop.rb
362 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/css/node.rb
363 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/css/xpath_visitor.rb
364 /usr/share/gems/gems/racc-1.7.3/lib/racc/info.rb
365 /usr/lib64/gems/ruby/racc-1.7.3/racc/cparse.so
366 /usr/share/gems/gems/racc-1.7.3/lib/racc/parser.rb
367 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/css/parser_extras.rb
368 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/css/parser.rb
369 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/css/tokenizer.rb
370 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/css/syntax_error.rb
371 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/css.rb
372 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/html4/builder.rb
373 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/encoding_handler.rb
374 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/html5/document.rb
375 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/html5/document_fragment.rb
376 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/html5/node.rb
377 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/gumbo.rb
378 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri/html5.rb
379 /usr/share/gems/gems/nokogiri-1.15.5/lib/nokogiri.rb
380 /usr/share/gems/gems/htmlentities-4.3.4/lib/htmlentities/mappings/html4.rb
381 /usr/share/gems/gems/htmlentities-4.3.4/lib/htmlentities/mappings/xhtml1.rb
382 /usr/share/gems/gems/htmlentities-4.3.4/lib/htmlentities/mappings/expanded.rb
383 /usr/share/gems/gems/htmlentities-4.3.4/lib/htmlentities/flavors.rb
384 /usr/share/gems/gems/htmlentities-4.3.4/lib/htmlentities/encoder.rb
385 /usr/share/gems/gems/htmlentities-4.3.4/lib/htmlentities/decoder.rb
386 /usr/share/gems/gems/htmlentities-4.3.4/lib/htmlentities/version.rb
387 /usr/share/gems/gems/htmlentities-4.3.4/lib/htmlentities.rb
388 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/book_providers/web.rb
389 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/book_providers/thalia_provider.rb
390 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/book_providers/worldcat.rb
391 /usr/lib64/gems/ruby/zoom-0.5.0/zoom.so
392 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/book_providers/pseudomarc.rb
393 /usr/share/gems/gems/marc-1.2.0/lib/marc/version.rb
394 /usr/share/gems/gems/marc-1.2.0/lib/marc/constants.rb
395 /usr/share/gems/gems/marc-1.2.0/lib/marc/record.rb
396 /usr/share/gems/gems/marc-1.2.0/lib/marc/datafield.rb
397 /usr/share/gems/gems/marc-1.2.0/lib/marc/controlfield.rb
398 /usr/share/gems/gems/marc-1.2.0/lib/marc/subfield.rb
399 /usr/share/gems/gems/scrub_rb-1.0.1/lib/scrub_rb/version.rb
400 /usr/share/gems/gems/scrub_rb-1.0.1/lib/scrub_rb/monkey_patch.rb
401 /usr/share/gems/gems/scrub_rb-1.0.1/lib/scrub_rb.rb
402 /usr/share/gems/gems/marc-1.2.0/lib/marc/reader.rb
403 /usr/share/gems/gems/marc-1.2.0/lib/marc/writer.rb
404 /usr/share/gems/gems/marc-1.2.0/lib/marc/exception.rb
405 /usr/share/gems/gems/marc-1.2.0/lib/marc/xmlwriter.rb
406 /usr/share/gems/gems/marc-1.2.0/lib/marc/unsafe_xmlwriter.rb
407 /usr/share/gems/gems/marc-1.2.0/lib/marc/xml_parsers.rb
408 /usr/share/gems/gems/marc-1.2.0/lib/marc/xmlreader.rb
409 /usr/share/gems/gems/marc-1.2.0/lib/marc/dublincore.rb
410 /usr/share/ruby/json/version.rb
411 /usr/share/ruby/ostruct.rb
412 /usr/share/ruby/json/generic_object.rb
413 /usr/share/ruby/json/common.rb
414 /usr/lib64/ruby/json/ext/parser.so
415 /usr/lib64/ruby/json/ext/generator.so
416 /usr/share/ruby/json/ext.rb
417 /usr/share/ruby/json.rb
418 /usr/share/gems/gems/marc-1.2.0/lib/marc/jsonl_reader.rb
419 /usr/share/gems/gems/marc-1.2.0/lib/marc/jsonl_writer.rb
420 /usr/share/gems/gems/marc-1.2.0/lib/marc.rb
421 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/book_providers/z3950_provider.rb
422 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/book_providers/loc_provider.rb
423 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/book_providers/bl_provider.rb
424 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/book_providers/sbn_provider.rb
425 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/book_providers.rb
426 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/default_preferences.rb
427 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/preferences.rb
428 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/undo_manager.rb
429 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/web_themes.rb
430 /usr/share/gems/gems/glib2-4.2.0/lib/glib2/deprecatable.rb
431 /usr/lib64/gems/ruby/glib2-4.2.0/glib2.so
432 /usr/share/gems/gems/glib2-4.2.0/lib/glib2/version.rb
433 /usr/share/gems/gems/glib2-4.2.0/lib/glib2/deprecated.rb
434 /usr/share/gems/gems/glib2-4.2.0/lib/glib2/date-time.rb
435 /usr/share/gems/gems/glib2-4.2.0/lib/glib2/regex.rb
436 /usr/share/gems/gems/glib2-4.2.0/lib/glib2/variant.rb
437 /usr/share/gems/gems/glib2-4.2.0/lib/glib2.rb
438 /usr/lib64/gems/ruby/gobject-introspection-4.2.0/gobject_introspection.so
439 /usr/share/gems/gems/gobject-introspection-4.2.0/lib/gobject-introspection/arg-info.rb
440 /usr/share/gems/gems/gobject-introspection-4.2.0/lib/gobject-introspection/collection-reader.rb
441 /usr/share/gems/gems/gobject-introspection-4.2.0/lib/gobject-introspection/boxed-info.rb
442 /usr/share/gems/gems/gobject-introspection-4.2.0/lib/gobject-introspection/callable-info.rb
443 /usr/share/gems/gems/gobject-introspection-4.2.0/lib/gobject-introspection/function-info.rb
444 /usr/share/gems/gems/gobject-introspection-4.2.0/lib/gobject-introspection/interface-info.rb
445 /usr/share/gems/gems/gobject-introspection-4.2.0/lib/gobject-introspection/object-info.rb
446 /usr/share/gems/gems/gobject-introspection-4.2.0/lib/gobject-introspection/registered-type-info.rb
447 /usr/share/gems/gems/gobject-introspection-4.2.0/lib/gobject-introspection/repository.rb
448 /usr/share/gems/gems/gobject-introspection-4.2.0/lib/gobject-introspection/struct-info.rb
449 /usr/share/gems/gems/gobject-introspection-4.2.0/lib/gobject-introspection/type-info.rb
450 /usr/share/gems/gems/gobject-introspection-4.2.0/lib/gobject-introspection/type-tag.rb
451 /usr/share/gems/gems/gobject-introspection-4.2.0/lib/gobject-introspection/union-info.rb
452 /usr/share/gems/gems/gobject-introspection-4.2.0/lib/gobject-introspection/version.rb
453 /usr/share/gems/gems/gobject-introspection-4.2.0/lib/gobject-introspection/loader.rb
454 /usr/share/gems/gems/gobject-introspection-4.2.0/lib/gobject-introspection.rb
455 /usr/share/gems/gems/gio2-4.2.0/lib/gio2/loader.rb
456 /usr/lib64/gems/ruby/gio2-4.2.0/gio2.so
457 /usr/share/gems/gems/gio2-4.2.0/lib/gio2/action.rb
458 /usr/share/gems/gems/gio2-4.2.0/lib/gio2/action-map.rb
459 /usr/share/gems/gems/gio2-4.2.0/lib/gio2/application-command-line.rb
460 /usr/share/gems/gems/gio2-4.2.0/lib/gio2/content-type.rb
461 /usr/share/gems/gems/gio2-4.2.0/lib/gio2/file.rb
462 /usr/share/gems/gems/gio2-4.2.0/lib/gio2/icon.rb
463 /usr/share/gems/gems/gio2-4.2.0/lib/gio2/inet-address.rb
464 /usr/share/gems/gems/gio2-4.2.0/lib/gio2/input-stream.rb
465 /usr/share/gems/gems/gio2-4.2.0/lib/gio2/menu-item.rb
466 /usr/share/gems/gems/gio2-4.2.0/lib/gio2/output-stream.rb
467 /usr/share/gems/gems/gio2-4.2.0/lib/gio2/pollable-input-stream.rb
468 /usr/share/gems/gems/gio2-4.2.0/lib/gio2/pollable-output-stream.rb
469 /usr/share/gems/gems/gio2-4.2.0/lib/gio2/resources.rb
470 /usr/lib64/ruby/fiddle.so
471 /usr/share/ruby/fiddle/closure.rb
472 /usr/share/ruby/fiddle/function.rb
473 /usr/share/ruby/fiddle/version.rb
474 /usr/share/ruby/fiddle.rb
475 /usr/share/gems/gems/gio2-4.2.0/lib/gio2/ruby-seekable.rb
476 /usr/share/gems/gems/gio2-4.2.0/lib/gio2/ruby-input-stream.rb
477 /usr/share/gems/gems/gio2-4.2.0/lib/gio2/ruby-output-stream.rb
478 /usr/share/gems/gems/gio2-4.2.0/lib/gio2/settings.rb
479 /usr/share/gems/gems/gio2-4.2.0/lib/gio2/settings-schema-source.rb
480 /usr/share/gems/gems/gio2-4.2.0/lib/gio2/simple-action.rb
481 /usr/share/gems/gems/gio2-4.2.0/lib/gio2/volume.rb
482 /usr/share/gems/gems/gio2-4.2.0/lib/gio2/deprecated.rb
483 /usr/share/gems/gems/gio2-4.2.0/lib/gio2.rb
484 /usr/share/gems/gems/gdk_pixbuf2-4.2.0/lib/gdk_pixbuf2/loader.rb
485 /usr/share/gems/gems/gdk_pixbuf2-4.2.0/lib/gdk_pixbuf2/pixbuf.rb
486 /usr/share/gems/gems/gdk_pixbuf2-4.2.0/lib/gdk_pixbuf2/pixbuf-loader.rb
487 /usr/share/gems/gems/gdk_pixbuf2-4.2.0/lib/gdk_pixbuf2/deprecated.rb
488 /usr/share/gems/gems/gdk_pixbuf2-4.2.0/lib/gdk_pixbuf2/version.rb
489 /usr/share/gems/gems/gdk_pixbuf2-4.2.0/lib/gdk_pixbuf2.rb
490 /usr/share/gems/gems/atk-4.2.0/lib/atk.rb
491 /usr/share/gems/gems/red-colors-0.3.0/lib/colors/utils.rb
492 /usr/share/gems/gems/red-colors-0.3.0/lib/colors/alpha_component.rb
493 /usr/share/gems/gems/matrix-0.4.2/lib/matrix/version.rb
494 /usr/share/gems/gems/matrix-0.4.2/lib/matrix.rb
495 /usr/share/gems/gems/red-colors-0.3.0/lib/colors/convert.rb
496 /usr/share/gems/gems/red-colors-0.3.0/lib/colors/helper.rb
497 /usr/share/gems/gems/red-colors-0.3.0/lib/colors/abstract_color.rb
498 /usr/share/gems/gems/red-colors-0.3.0/lib/colors/hsl.rb
499 /usr/share/gems/gems/red-colors-0.3.0/lib/colors/hsla.rb
500 /usr/share/gems/gems/red-colors-0.3.0/lib/colors/husl.rb
501 /usr/share/gems/gems/red-colors-0.3.0/lib/colors/rgb.rb
502 /usr/share/gems/gems/red-colors-0.3.0/lib/colors/rgba.rb
503 /usr/share/gems/gems/red-colors-0.3.0/lib/colors/xterm256.rb
504 /usr/share/gems/gems/red-colors-0.3.0/lib/colors/xyy.rb
505 /usr/share/gems/gems/red-colors-0.3.0/lib/colors/xyz.rb
506 /usr/share/gems/gems/red-colors-0.3.0/lib/colors/color_data.rb
507 /usr/share/gems/gems/red-colors-0.3.0/lib/colors/named_colors.rb
508 /usr/share/gems/gems/red-colors-0.3.0/lib/colors/colormap.rb
509 /usr/share/gems/gems/red-colors-0.3.0/lib/colors/listed_colormap.rb
510 /usr/share/gems/gems/red-colors-0.3.0/lib/colors/linear_segmented_colormap.rb
511 /usr/share/gems/gems/red-colors-0.3.0/lib/colors/colormap_registry.rb
512 /usr/share/gems/gems/red-colors-0.3.0/lib/colors/colormap_data/matplotlib_builtin.rb
513 /usr/share/gems/gems/red-colors-0.3.0/lib/colors/colormap_data/seaborn_builtin.rb
514 /usr/share/gems/gems/red-colors-0.3.0/lib/colors/colormap_data.rb
515 /usr/share/gems/gems/red-colors-0.3.0/lib/colors.rb
516 /usr/share/gems/gems/cairo-1.17.13/lib/cairo/color.rb
517 /usr/share/gems/gems/cairo-1.17.13/lib/cairo/paper.rb
518 /usr/lib64/gems/ruby/cairo-1.17.13/cairo.so
519 /usr/share/gems/gems/cairo-1.17.13/lib/cairo/constants.rb
520 /usr/share/gems/gems/cairo-1.17.13/lib/cairo/point.rb
521 /usr/share/gems/gems/cairo-1.17.13/lib/cairo/colors.rb
522 /usr/share/gems/gems/cairo-1.17.13/lib/cairo/papers.rb
523 /usr/share/gems/gems/cairo-1.17.13/lib/cairo/context/rectangle.rb
524 /usr/share/gems/gems/cairo-1.17.13/lib/cairo/context/triangle.rb
525 /usr/share/gems/gems/cairo-1.17.13/lib/cairo/context/circle.rb
526 /usr/share/gems/gems/cairo-1.17.13/lib/cairo/context/path.rb
527 /usr/share/gems/gems/cairo-1.17.13/lib/cairo/context/blur.rb
528 /usr/share/gems/gems/cairo-1.17.13/lib/cairo/context/color.rb
529 /usr/share/gems/gems/cairo-1.17.13/lib/cairo/context.rb
530 /usr/share/gems/gems/cairo-1.17.13/lib/cairo/device.rb
531 /usr/share/gems/gems/cairo-1.17.13/lib/cairo/surface.rb
532 /usr/share/gems/gems/cairo-1.17.13/lib/cairo/pattern.rb
533 /usr/share/gems/gems/cairo-1.17.13/lib/cairo/path.rb
534 /usr/share/gems/gems/cairo-1.17.13/lib/cairo/region.rb
535 /usr/share/gems/gems/cairo-1.17.13/lib/cairo.rb
536 /usr/lib64/gems/ruby/cairo-gobject-4.2.0/cairo_gobject.so
537 /usr/share/gems/gems/cairo-gobject-4.2.0/lib/cairo-gobject.rb
538 /usr/share/gems/gems/pango-4.2.0/lib/pango/loader.rb
539 /usr/share/gems/gems/pango-4.2.0/lib/pango/cairo-loader.rb
540 /usr/share/gems/gems/pango-4.2.0/lib/pango/fc-loader.rb
541 /usr/share/gems/gems/pango-4.2.0/lib/pango/ft2-loader.rb
542 /usr/share/gems/gems/pango-4.2.0/lib/pango/ot-loader.rb
543 /usr/lib64/gems/ruby/pango-4.2.0/pango.so
544 /usr/share/gems/gems/pango-4.2.0/lib/pango/attr-list.rb
545 /usr/share/gems/gems/pango-4.2.0/lib/pango/attr-type.rb
546 /usr/share/gems/gems/pango-4.2.0/lib/pango/color.rb
547 /usr/share/gems/gems/pango-4.2.0/lib/pango/font-description.rb
548 /usr/share/gems/gems/pango-4.2.0/lib/pango/language.rb
549 /usr/share/gems/gems/pango-4.2.0/lib/pango/layout.rb
550 /usr/share/gems/gems/pango-4.2.0/lib/pango/rectangle.rb
551 /usr/share/gems/gems/pango-4.2.0/lib/pango/markup.rb
552 /usr/share/gems/gems/pango-4.2.0/lib/pango/matrix.rb
553 /usr/share/gems/gems/pango-4.2.0/lib/pango/version.rb
554 /usr/share/gems/gems/pango-4.2.0/lib/pango/deprecated.rb
555 /usr/share/gems/gems/pango-4.2.0/lib/pango.rb
556 /usr/share/gems/gems/gdk3-4.2.0/lib/gdk3/loader.rb
557 /usr/share/gems/gems/gdk3-4.2.0/lib/gdk3/x11-loader.rb
558 /usr/share/gems/gems/gdk3-4.2.0/lib/gdk3.rb
559 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/loader.rb
560 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3.rb
561 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/ui/icons.rb
562 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/ui/builder_base.rb
563 /usr/share/gems/gems/gdk3-4.2.0/lib/gdk3/event-readers.rb
564 /usr/share/gems/gems/gdk3-4.2.0/lib/gdk3/atom.rb
565 /usr/share/gems/gems/gdk3-4.2.0/lib/gdk3/color.rb
566 /usr/share/gems/gems/gdk3-4.2.0/lib/gdk3/cursor.rb
567 /usr/share/gems/gems/gdk3-4.2.0/lib/gdk3/event.rb
568 /usr/share/gems/gems/gdk3-4.2.0/lib/gdk3/rectangle.rb
569 /usr/share/gems/gems/gdk3-4.2.0/lib/gdk3/rgba.rb
570 /usr/share/gems/gems/gdk3-4.2.0/lib/gdk3/screen.rb
571 /usr/share/gems/gems/gdk3-4.2.0/lib/gdk3/window.rb
572 /usr/share/gems/gems/gdk3-4.2.0/lib/gdk3/window-attr.rb
573 /usr/share/gems/gems/gdk3-4.2.0/lib/gdk3/cairo.rb
574 /usr/share/gems/gems/gdk3-4.2.0/lib/gdk3/deprecated.rb
575 /usr/lib64/gems/ruby/gtk3-4.2.0/gtk3.so
576 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/gdk-drag-context.rb
577 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/gdk-screen.rb
578 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/about-dialog.rb
579 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/action.rb
580 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/action-group.rb
581 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/application.rb
582 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/binding-set.rb
583 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/border.rb
584 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/box.rb
585 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/button.rb
586 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/builder.rb
587 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/calendar.rb
588 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/cell-layout.rb
589 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/check-menu-item.rb
590 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/clipboard.rb
591 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/color-chooser-dialog.rb
592 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/combo-box.rb
593 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/combo-box-text.rb
594 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/container.rb
595 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/css-provider.rb
596 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/dialog.rb
597 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/entry.rb
598 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/entry-buffer.rb
599 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/file-chooser-dialog.rb
600 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/font-chooser-dialog.rb
601 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/gesture-multi-press.rb
602 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/icon-size.rb
603 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/icon-theme.rb
604 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/icon-view.rb
605 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/image.rb
606 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/image-menu-item.rb
607 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/label.rb
608 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/level-bar.rb
609 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/list-store.rb
610 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/menu-item.rb
611 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/message-dialog.rb
612 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/paned.rb
613 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/radio-action.rb
614 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/radio-button.rb
615 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/recent-chooser-dialog.rb
616 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/response-type.rb
617 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/scale-button.rb
618 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/scrolled-window.rb
619 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/search-bar.rb
620 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/selection-data.rb
621 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/spin-button.rb
622 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/show-uri.rb
623 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/stack.rb
624 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/stock.rb
625 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/stock-item.rb
626 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/style-context.rb
627 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/style-properties.rb
628 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/table.rb
629 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/target-list.rb
630 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/target-entry.rb
631 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/text-buffer.rb
632 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/text-iter.rb
633 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/text-tag.rb
634 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/text-tag-table.rb
635 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/text-view.rb
636 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/toggle-action.rb
637 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/toggle-button.rb
638 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/tool-button.rb
639 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/tree-iter.rb
640 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/tree-model.rb
641 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/tree-model-filter.rb
642 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/tree-model-sort.rb
643 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/tree-path.rb
644 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/tree-selection.rb
645 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/tree-store.rb
646 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/tree-view.rb
647 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/tree-view-column.rb
648 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/ui-manager.rb
649 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/version.rb
650 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/widget.rb
651 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/window.rb
652 /usr/share/gems/gems/gtk3-4.2.0/lib/gtk3/deprecated.rb
653 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/ui/completion_models.rb
654 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/ui/libraries_combo.rb
655 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/ui/multi_drag_treeview.rb
656 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/ui/alert_dialog.rb
657 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/ui/about_dialog.rb
658 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/ui/calendar_popup.rb
659 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/ui/error_dialog.rb
660 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/ui/book_properties_dialog_base.rb
661 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/ui/book_properties_dialog.rb
662 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/ui/new_book_dialog_manual.rb
663 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/ui/keep_bad_isbn_dialog.rb
664 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/ui/new_book_dialog.rb
665 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/scanners.rb
666 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/scanners/cue_cat.rb
667 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/scanners/keyboard.rb
668 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/ui/provider_preferences_base_dialog.rb
669 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/ui/provider_preferences_dialog.rb
670 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/ui/new_provider_dialog.rb
671 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/ui/preferences_dialog.rb
672 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/export_format.rb
673 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/ui/confirm_erase_dialog.rb
674 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/ui/export_dialog.rb
675 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/ui/skip_entry_dialog.rb
676 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/ui/import_dialog.rb
677 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/ui/barcode_animation.rb
678 /usr/share/gems/gems/gstreamer-4.2.0/lib/gst/loader.rb
679 /usr/share/gems/gems/gstreamer-4.2.0/lib/gst/base-loader.rb
680 /usr/share/gems/gems/gstreamer-4.2.0/lib/gst/controller-loader.rb
681 /usr/share/gems/gems/gstreamer-4.2.0/lib/gst.rb
682 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/ui/sound.rb
683 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/ui/acquire_dialog.rb
684 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/ui/smart_library_rule_box.rb
685 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/ui/smart_library_properties_dialog_base.rb
686 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/ui/smart_library_properties_dialog.rb
687 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/ui/new_smart_library_dialog.rb
688 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/ui/bad_isbns_dialog.rb
689 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/ui/dndable.rb
690 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/ui/init.rb
691 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/ui/really_delete_dialog.rb
692 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/ui/callbacks.rb
693 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/ui/columns.rb
694 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/ui/conflict_while_copying_dialog.rb
695 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/library_sort_order.rb
696 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/ui/ui_manager.rb
697 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/ui/listview.rb
698 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/ui/iconview_tooltips.rb
699 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/ui/iconview.rb
700 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/ui/sidepane_manager.rb
701 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/ui/main_app.rb
702 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/ui.rb
703 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria/console.rb
704 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/lib/alexandria.rb
705 /usr/share/gems/gems/addressable-2.8.1/lib/addressable/version.rb
706 /usr/share/gems/gems/addressable-2.8.1/lib/addressable/idna/pure.rb
707 /usr/share/gems/gems/addressable-2.8.1/lib/addressable/idna.rb
708 /usr/share/gems/gems/public_suffix-5.0.0/lib/public_suffix/domain.rb
709 /usr/share/gems/gems/public_suffix-5.0.0/lib/public_suffix/version.rb
710 /usr/share/gems/gems/public_suffix-5.0.0/lib/public_suffix/errors.rb
711 /usr/share/gems/gems/public_suffix-5.0.0/lib/public_suffix/rule.rb
712 /usr/share/gems/gems/public_suffix-5.0.0/lib/public_suffix/list.rb
713 /usr/share/gems/gems/public_suffix-5.0.0/lib/public_suffix.rb
714 /usr/share/gems/gems/addressable-2.8.1/lib/addressable/uri.rb
715 /usr/share/gems/gems/addressable-2.8.1/lib/addressable/template.rb
716 /usr/share/gems/gems/rexml-3.2.6/lib/rexml/light/node.rb
717 /usr/lib64/ruby/bigdecimal.so
718 /usr/share/ruby/bigdecimal.rb
719 /usr/share/gems/gems/crack-0.4.5/lib/crack/xml.rb
720 /usr/share/gems/gems/webmock-3.18.1/lib/webmock/deprecation.rb
721 /usr/share/gems/gems/webmock-3.18.1/lib/webmock/version.rb
722 /usr/share/gems/gems/webmock-3.18.1/lib/webmock/errors.rb
723 /usr/share/gems/gems/webmock-3.18.1/lib/webmock/util/query_mapper.rb
724 /usr/share/gems/gems/webmock-3.18.1/lib/webmock/util/uri.rb
725 /usr/share/ruby/base64.rb
726 /usr/share/gems/gems/webmock-3.18.1/lib/webmock/util/headers.rb
727 /usr/share/gems/gems/webmock-3.18.1/lib/webmock/util/hash_counter.rb
728 /usr/share/gems/gems/webmock-3.18.1/lib/webmock/util/hash_keys_stringifier.rb
729 /usr/share/gems/gems/webmock-3.18.1/lib/webmock/util/values_stringifier.rb
730 /usr/share/gems/gems/webmock-3.18.1/lib/webmock/util/json.rb
731 /usr/share/gems/gems/webmock-3.18.1/lib/webmock/util/version_checker.rb
732 /usr/share/gems/gems/webmock-3.18.1/lib/webmock/util/hash_validator.rb
733 /usr/share/gems/gems/webmock-3.18.1/lib/webmock/matchers/hash_argument_matcher.rb
734 /usr/share/gems/gems/webmock-3.18.1/lib/webmock/matchers/hash_excluding_matcher.rb
735 /usr/share/gems/gems/webmock-3.18.1/lib/webmock/matchers/hash_including_matcher.rb
736 /usr/share/gems/gems/webmock-3.18.1/lib/webmock/matchers/any_arg_matcher.rb
737 /usr/share/gems/gems/webmock-3.18.1/lib/webmock/request_pattern.rb
738 /usr/share/gems/gems/webmock-3.18.1/lib/webmock/request_signature.rb
739 /usr/share/gems/gems/webmock-3.18.1/lib/webmock/responses_sequence.rb
740 /usr/share/gems/gems/webmock-3.18.1/lib/webmock/request_stub.rb
741 /usr/share/gems/gems/webmock-3.18.1/lib/webmock/response.rb
742 /usr/share/gems/gems/webmock-3.18.1/lib/webmock/rack_response.rb
743 /usr/share/gems/gems/webmock-3.18.1/lib/webmock/stub_request_snippet.rb
744 /usr/share/gems/gems/webmock-3.18.1/lib/webmock/request_signature_snippet.rb
745 /usr/share/gems/gems/hashdiff-1.0.1/lib/hashdiff/util.rb
746 /usr/share/gems/gems/hashdiff-1.0.1/lib/hashdiff/compare_hashes.rb
747 /usr/share/gems/gems/hashdiff-1.0.1/lib/hashdiff/lcs.rb
748 /usr/share/gems/gems/hashdiff-1.0.1/lib/hashdiff/lcs_compare_arrays.rb
749 /usr/share/gems/gems/hashdiff-1.0.1/lib/hashdiff/linear_compare_array.rb
750 /usr/share/gems/gems/hashdiff-1.0.1/lib/hashdiff/diff.rb
751 /usr/share/gems/gems/hashdiff-1.0.1/lib/hashdiff/patch.rb
752 /usr/share/gems/gems/hashdiff-1.0.1/lib/hashdiff/version.rb
753 /usr/share/gems/gems/hashdiff-1.0.1/lib/hashdiff.rb
754 /usr/share/gems/gems/webmock-3.18.1/lib/webmock/request_body_diff.rb
755 /usr/share/gems/gems/webmock-3.18.1/lib/webmock/assertion_failure.rb
756 /usr/share/gems/gems/webmock-3.18.1/lib/webmock/request_execution_verifier.rb
757 /usr/share/gems/gems/webmock-3.18.1/lib/webmock/config.rb
758 /usr/share/gems/gems/webmock-3.18.1/lib/webmock/callback_registry.rb
759 /usr/share/gems/gems/webmock-3.18.1/lib/webmock/request_registry.rb
760 /usr/share/gems/gems/webmock-3.18.1/lib/webmock/stub_registry.rb
761 /usr/share/gems/gems/webmock-3.18.1/lib/webmock/api.rb
762 /usr/share/gems/gems/webmock-3.18.1/lib/webmock/http_lib_adapters/http_lib_adapter_registry.rb
763 /usr/share/gems/gems/webmock-3.18.1/lib/webmock/http_lib_adapters/http_lib_adapter.rb
764 /usr/share/ruby/digest/version.rb
765 /usr/lib64/ruby/digest.so
766 /usr/share/ruby/digest/loader.rb
767 /usr/share/ruby/digest.rb
768 /usr/lib64/ruby/openssl.so
769 /usr/share/ruby/openssl/bn.rb
770 /usr/share/ruby/openssl/marshal.rb
771 /usr/share/ruby/openssl/pkey.rb
772 /usr/share/ruby/openssl/cipher.rb
773 /usr/share/ruby/openssl/digest.rb
774 /usr/share/ruby/openssl/hmac.rb
775 /usr/share/ruby/openssl/x509.rb
776 /usr/share/ruby/openssl/buffering.rb
777 /usr/lib64/ruby/io/nonblock.so
778 /usr/share/ruby/ipaddr.rb
779 /usr/share/ruby/openssl/ssl.rb
780 /usr/share/ruby/openssl/pkcs5.rb
781 /usr/share/ruby/openssl/version.rb
782 /usr/share/ruby/openssl.rb
783 /usr/share/ruby/net/https.rb
784 /usr/share/gems/gems/webmock-3.18.1/lib/webmock/http_lib_adapters/net_http_response.rb
785 /usr/share/gems/gems/webmock-3.18.1/lib/webmock/http_lib_adapters/net_http.rb
786 /usr/share/gems/gems/webmock-3.18.1/lib/webmock/http_lib_adapters/http_rb_adapter.rb
787 /usr/share/gems/gems/webmock-3.18.1/lib/webmock/http_lib_adapters/httpclient_adapter.rb
788 /usr/share/gems/gems/webmock-3.18.1/lib/webmock/http_lib_adapters/patron_adapter.rb
789 /usr/share/gems/gems/webmock-3.18.1/lib/webmock/http_lib_adapters/curb_adapter.rb
790 /usr/share/gems/gems/webmock-3.18.1/lib/webmock/http_lib_adapters/em_http_request_adapter.rb
791 /usr/share/gems/gems/webmock-3.18.1/lib/webmock/http_lib_adapters/typhoeus_hydra_adapter.rb
792 /usr/share/gems/gems/webmock-3.18.1/lib/webmock/http_lib_adapters/excon_adapter.rb
793 /usr/share/gems/gems/webmock-3.18.1/lib/webmock/http_lib_adapters/manticore_adapter.rb
794 /usr/share/gems/gems/webmock-3.18.1/lib/webmock/http_lib_adapters/async_http_client_adapter.rb
795 /usr/share/gems/gems/webmock-3.18.1/lib/webmock/webmock.rb
796 /usr/share/gems/gems/webmock-3.18.1/lib/webmock.rb
797 /usr/share/gems/gems/rspec-support-3.12.1/lib/rspec/support/object_formatter.rb
798 /usr/share/gems/gems/rspec-expectations-3.12.3/lib/rspec/matchers/english_phrasing.rb
799 /usr/share/gems/gems/rspec-support-3.12.1/lib/rspec/support/fuzzy_matcher.rb
800 /usr/share/gems/gems/rspec-expectations-3.12.3/lib/rspec/matchers/composable.rb
801 /usr/share/gems/gems/rspec-expectations-3.12.3/lib/rspec/matchers/built_in/base_matcher.rb
802 /usr/share/gems/gems/rspec-expectations-3.12.3/lib/rspec/matchers/built_in.rb
803 /usr/share/gems/gems/rspec-expectations-3.12.3/lib/rspec/matchers/generated_descriptions.rb
804 /usr/share/gems/gems/rspec-expectations-3.12.3/lib/rspec/matchers/dsl.rb
805 /usr/share/gems/gems/rspec-expectations-3.12.3/lib/rspec/matchers/matcher_delegator.rb
806 /usr/share/gems/gems/rspec-expectations-3.12.3/lib/rspec/matchers/aliased_matcher.rb
807 /usr/share/gems/gems/rspec-expectations-3.12.3/lib/rspec/matchers/expecteds_for_multiple_diffs.rb
808 /usr/share/gems/gems/rspec-expectations-3.12.3/lib/rspec/matchers.rb
809 /usr/share/gems/gems/rspec-expectations-3.12.3/lib/rspec/expectations/expectation_target.rb
810 /usr/share/gems/gems/rspec-expectations-3.12.3/lib/rspec/expectations/syntax.rb
811 /usr/share/gems/gems/rspec-expectations-3.12.3/lib/rspec/expectations/configuration.rb
812 /usr/share/gems/gems/rspec-expectations-3.12.3/lib/rspec/expectations/fail_with.rb
813 /usr/share/gems/gems/rspec-expectations-3.12.3/lib/rspec/expectations/handler.rb
814 /usr/share/gems/gems/rspec-expectations-3.12.3/lib/rspec/expectations/version.rb
815 /usr/share/gems/gems/rspec-expectations-3.12.3/lib/rspec/expectations.rb
816 /usr/share/gems/gems/webmock-3.18.1/lib/webmock/rspec/matchers/request_pattern_matcher.rb
817 /usr/share/gems/gems/webmock-3.18.1/lib/webmock/rspec/matchers/webmock_matcher.rb
818 /usr/share/gems/gems/webmock-3.18.1/lib/webmock/rspec/matchers.rb
819 /usr/share/gems/gems/webmock-3.18.1/lib/webmock/rspec.rb
820 /usr/share/gems/gems/pry-0.14.1/lib/pry/version.rb
821 /usr/share/gems/gems/pry-0.14.1/lib/pry/last_exception.rb
822 /usr/share/gems/gems/pry-0.14.1/lib/pry/forwardable.rb
823 /usr/share/gems/gems/pry-0.14.1/lib/pry/helpers/base_helpers.rb
824 /usr/share/gems/gems/pry-0.14.1/lib/pry/helpers/documentation_helpers.rb
825 /usr/share/gems/gems/pry-0.14.1/lib/pry/helpers/options_helpers.rb
826 /usr/share/gems/gems/pry-0.14.1/lib/pry/helpers/command_helpers.rb
827 /usr/share/gems/gems/pry-0.14.1/lib/pry/helpers/text.rb
828 /usr/share/gems/gems/pry-0.14.1/lib/pry/helpers/table.rb
829 /usr/share/gems/gems/pry-0.14.1/lib/pry/helpers/platform.rb
830 /usr/share/gems/gems/pry-0.14.1/lib/pry/helpers.rb
831 /usr/share/gems/gems/pry-0.14.1/lib/pry/basic_object.rb
832 /usr/share/gems/gems/pry-0.14.1/lib/pry/prompt.rb
833 /usr/share/gems/gems/pry-0.14.1/lib/pry/code_object.rb
834 /usr/share/gems/gems/pry-0.14.1/lib/pry/exceptions.rb
835 /usr/share/gems/gems/pry-0.14.1/lib/pry/hooks.rb
836 /usr/share/gems/gems/pry-0.14.1/lib/pry/input_completer.rb
837 /usr/share/gems/gems/pry-0.14.1/lib/pry/command.rb
838 /usr/share/gems/gems/pry-0.14.1/lib/pry/class_command.rb
839 /usr/share/gems/gems/pry-0.14.1/lib/pry/block_command.rb
840 /usr/share/gems/gems/pry-0.14.1/lib/pry/command_set.rb
841 /usr/share/gems/gems/coderay-1.1.3/lib/coderay.rb
842 /usr/share/gems/gems/pry-0.14.1/lib/pry/syntax_highlighter.rb
843 /usr/share/gems/gems/pry-0.14.1/lib/pry/editor.rb
844 /usr/share/gems/gems/pry-0.14.1/lib/pry/history.rb
845 /usr/share/gems/gems/coderay-1.1.3/lib/coderay/helpers/plugin_host.rb
846 /usr/share/gems/gems/coderay-1.1.3/lib/coderay/encoders.rb
847 /usr/share/gems/gems/coderay-1.1.3/lib/coderay/encoders/_map.rb
848 /usr/share/gems/gems/coderay-1.1.3/lib/coderay/helpers/plugin.rb
849 /usr/share/gems/gems/coderay-1.1.3/lib/coderay/encoders/encoder.rb
850 /usr/share/gems/gems/coderay-1.1.3/lib/coderay/encoders/terminal.rb
851 /usr/share/gems/gems/pry-0.14.1/lib/pry/color_printer.rb
852 /usr/share/gems/gems/pry-0.14.1/lib/pry/exception_handler.rb
853 /usr/share/gems/gems/pry-0.14.1/lib/pry/system_command_handler.rb
854 /usr/share/gems/gems/pry-0.14.1/lib/pry/control_d_handler.rb
855 /usr/share/gems/gems/pry-0.14.1/lib/pry/command_state.rb
856 /usr/share/gems/gems/pry-0.14.1/lib/pry/warning.rb
857 /usr/share/gems/gems/pry-0.14.1/lib/pry/env.rb
858 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/ls/jruby_hacks.rb
859 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/ls/methods_helper.rb
860 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/ls/interrogatable.rb
861 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/ls/grep.rb
862 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/ls/formatter.rb
863 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/ls/globals.rb
864 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/ls/constants.rb
865 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/ls/methods.rb
866 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/ls/self_methods.rb
867 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/ls/instance_vars.rb
868 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/ls/local_names.rb
869 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/ls/local_vars.rb
870 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/ls/ls_entity.rb
871 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/ls.rb
872 /usr/share/gems/gems/pry-0.14.1/lib/pry/config/attributable.rb
873 /usr/share/gems/gems/pry-0.14.1/lib/pry/config/value.rb
874 /usr/share/gems/gems/pry-0.14.1/lib/pry/config/memoized_value.rb
875 /usr/share/gems/gems/pry-0.14.1/lib/pry/config/lazy_value.rb
876 /usr/share/gems/gems/pry-0.14.1/lib/pry/config.rb
877 /usr/share/gems/gems/pry-0.14.1/lib/pry/pry_class.rb
878 /usr/share/gems/gems/method_source-1.0.0/lib/method_source/version.rb
879 /usr/share/gems/gems/method_source-1.0.0/lib/method_source/source_location.rb
880 /usr/share/gems/gems/method_source-1.0.0/lib/method_source/code_helpers.rb
881 /usr/share/gems/gems/method_source-1.0.0/lib/method_source.rb
882 /usr/share/gems/gems/pry-0.14.1/lib/pry/pry_instance.rb
883 /usr/share/gems/gems/pry-0.14.1/lib/pry/inspector.rb
884 /usr/share/gems/gems/pry-0.14.1/lib/pry/pager.rb
885 /usr/share/gems/gems/pry-0.14.1/lib/pry/indent.rb
886 /usr/share/gems/gems/pry-0.14.1/lib/pry/object_path.rb
887 /usr/share/gems/gems/pry-0.14.1/lib/pry/output.rb
888 /usr/share/gems/gems/pry-0.14.1/lib/pry/input_lock.rb
889 /usr/share/gems/gems/pry-0.14.1/lib/pry/repl.rb
890 /usr/share/gems/gems/pry-0.14.1/lib/pry/code.rb
891 /usr/share/gems/gems/pry-0.14.1/lib/pry/ring.rb
892 /usr/share/gems/gems/pry-0.14.1/lib/pry/method.rb
893 /usr/share/gems/gems/pry-0.14.1/lib/pry/wrapped_module.rb
894 /usr/share/gems/gems/pry-0.14.1/lib/pry/wrapped_module/candidate.rb
895 /usr/share/gems/gems/pry-0.14.1/lib/pry/slop/option.rb
896 /usr/share/gems/gems/pry-0.14.1/lib/pry/slop/commands.rb
897 /usr/share/gems/gems/pry-0.14.1/lib/pry/slop.rb
898 /usr/share/gems/gems/pry-0.14.1/lib/pry/cli.rb
899 /usr/share/gems/gems/pry-0.14.1/lib/pry/core_extensions.rb
900 /usr/share/gems/gems/pry-0.14.1/lib/pry/repl_file_loader.rb
901 /usr/share/gems/gems/pry-0.14.1/lib/pry/code/loc.rb
902 /usr/share/gems/gems/pry-0.14.1/lib/pry/code/code_range.rb
903 /usr/share/gems/gems/pry-0.14.1/lib/pry/code/code_file.rb
904 /usr/share/gems/gems/pry-0.14.1/lib/pry/method/weird_method_locator.rb
905 /usr/share/gems/gems/pry-0.14.1/lib/pry/method/disowned.rb
906 /usr/share/gems/gems/pry-0.14.1/lib/pry/method/patcher.rb
907 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/amend_line.rb
908 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/bang.rb
909 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/bang_pry.rb
910 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/cat.rb
911 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/cat/abstract_formatter.rb
912 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/cat/input_expression_formatter.rb
913 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/cat/exception_formatter.rb
914 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/cat/file_formatter.rb
915 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/cd.rb
916 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/change_inspector.rb
917 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/change_prompt.rb
918 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/clear_screen.rb
919 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/code_collector.rb
920 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/disable_pry.rb
921 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/easter_eggs.rb
922 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/edit.rb
923 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/edit/exception_patcher.rb
924 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/edit/file_and_line_locator.rb
925 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/exit.rb
926 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/exit_all.rb
927 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/exit_program.rb
928 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/find_method.rb
929 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/fix_indent.rb
930 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/help.rb
931 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/hist.rb
932 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/import_set.rb
933 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/jump_to.rb
934 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/list_inspectors.rb
935 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/nesting.rb
936 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/play.rb
937 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/pry_backtrace.rb
938 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/pry_version.rb
939 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/raise_up.rb
940 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/reload_code.rb
941 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/reset.rb
942 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/ri.rb
943 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/save_file.rb
944 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/shell_command.rb
945 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/shell_mode.rb
946 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/show_info.rb
947 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/show_doc.rb
948 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/show_input.rb
949 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/show_source.rb
950 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/stat.rb
951 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/switch_to.rb
952 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/toggle_color.rb
953 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/watch_expression.rb
954 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/watch_expression/expression.rb
955 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/whereami.rb
956 /usr/share/gems/gems/pry-0.14.1/lib/pry/commands/wtf.rb
957 /usr/share/gems/gems/pry-0.14.1/lib/pry.rb
958 /builddir/build/BUILD/alexandria-book-collection-manager-0.7.9/spec/spec_helper.rb
959 /usr/share/gems/gems/rspec-mocks-3.12.6/lib/rspec/mocks/instance_method_stasher.rb
960 /usr/share/gems/gems/rspec-mocks-3.12.6/lib/rspec/mocks/method_double.rb
961 /usr/share/gems/gems/rspec-mocks-3.12.6/lib/rspec/mocks/argument_matchers.rb
962 /usr/share/gems/gems/rspec-mocks-3.12.6/lib/rspec/mocks/object_reference.rb
963 /usr/share/gems/gems/rspec-mocks-3.12.6/lib/rspec/mocks/example_methods.rb
964 /usr/share/gems/gems/rspec-mocks-3.12.6/lib/rspec/mocks/proxy.rb
965 /usr/share/gems/gems/rspec-mocks-3.12.6/lib/rspec/mocks/test_double.rb
966 /usr/share/gems/gems/rspec-mocks-3.12.6/lib/rspec/mocks/argument_list_matcher.rb
967 /usr/share/gems/gems/rspec-support-3.12.1/lib/rspec/support/mutex.rb
968 /usr/share/gems/gems/rspec-mocks-3.12.6/lib/rspec/mocks/message_expectation.rb
969 /usr/share/gems/gems/rspec-mocks-3.12.6/lib/rspec/mocks/order_group.rb
970 /usr/share/gems/gems/rspec-mocks-3.12.6/lib/rspec/mocks/error_generator.rb
971 /usr/share/gems/gems/rspec-mocks-3.12.6/lib/rspec/mocks/space.rb
972 /usr/share/gems/gems/rspec-mocks-3.12.6/lib/rspec/mocks/mutate_const.rb
973 /usr/share/gems/gems/rspec-mocks-3.12.6/lib/rspec/mocks/targets.rb
974 /usr/share/gems/gems/rspec-mocks-3.12.6/lib/rspec/mocks/syntax.rb
975 /usr/share/gems/gems/rspec-mocks-3.12.6/lib/rspec/mocks/configuration.rb
976 /usr/share/gems/gems/rspec-mocks-3.12.6/lib/rspec/mocks/verifying_message_expectation.rb
977 /usr/share/gems/gems/rspec-mocks-3.12.6/lib/rspec/mocks/method_reference.rb
978 /usr/share/gems/gems/rspec-mocks-3.12.6/lib/rspec/mocks/verifying_proxy.rb
979 /usr/share/gems/gems/rspec-mocks-3.12.6/lib/rspec/mocks/verifying_double.rb
980 /usr/share/gems/gems/rspec-mocks-3.12.6/lib/rspec/mocks/version.rb
981 /usr/share/gems/gems/rspec-mocks-3.12.6/lib/rspec/mocks.rb
982 /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/mocking_adapters/rspec.rb
983 /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/example_status_persister.rb
984 /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/formatters/base_formatter.rb
985 /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/formatters/base_text_formatter.rb
986 /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/formatters/progress_formatter.rb
987 /usr/share/gems/gems/rspec-core-3.12.2/lib/rspec/core/profiler.rb
988 /usr/share/gems/gems/rspec-expectations-3.12.3/lib/rspec/matchers/built_in/be_instance_of.rb
989 /usr/share/gems/gems/rspec-expectations-3.12.3/lib/rspec/matchers/built_in/be.rb
990 /usr/share/gems/gems/rspec-expectations-3.12.3/lib/rspec/matchers/built_in/has.rb
991 /usr/share/gems/gems/rspec-expectations-3.12.3/lib/rspec/matchers/built_in/eq.rb
992 /usr/share/gems/gems/rspec-expectations-3.12.3/lib/rspec/matchers/built_in/raise_error.rb
993 /usr/share/gems/gems/syck-1.4.1/lib/syck/encoding.rb
994 /usr/lib64/ruby/enc/utf_16le.so
995 /usr/lib64/ruby/enc/utf_16be.so
996 /usr/share/gems/gems/rspec-expectations-3.12.3/lib/rspec/expectations/failure_aggregator.rb
997 /usr/share/gems/gems/rspec-mocks-3.12.6/lib/rspec/mocks/matchers/expectation_customization.rb
998 /usr/share/gems/gems/rspec-mocks-3.12.6/lib/rspec/mocks/matchers/receive.rb
999 /usr/share/gems/gems/rspec-mocks-3.12.6/lib/rspec/mocks/any_instance/chain.rb
1000 /usr/share/gems/gems/rspec-mocks-3.12.6/lib/rspec/mocks/any_instance/error_generator.rb
1001 /usr/share/gems/gems/rspec-mocks-3.12.6/lib/rspec/mocks/any_instance/stub_chain.rb
1002 /usr/share/gems/gems/rspec-mocks-3.12.6/lib/rspec/mocks/any_instance/stub_chain_chain.rb
1003 /usr/share/gems/gems/rspec-mocks-3.12.6/lib/rspec/mocks/any_instance/expect_chain_chain.rb
1004 /usr/share/gems/gems/rspec-mocks-3.12.6/lib/rspec/mocks/any_instance/expectation_chain.rb
1005 /usr/share/gems/gems/rspec-mocks-3.12.6/lib/rspec/mocks/any_instance/message_chains.rb
1006 /usr/share/gems/gems/rspec-mocks-3.12.6/lib/rspec/mocks/any_instance/recorder.rb
1007 /usr/share/gems/gems/rspec-mocks-3.12.6/lib/rspec/mocks/any_instance/proxy.rb
1008 /usr/share/gems/gems/rspec-mocks-3.12.6/lib/rspec/mocks/any_instance.rb
1009 /usr/share/gems/gems/rspec-expectations-3.12.3/lib/rspec/matchers/built_in/match.rb
* Process memory map:
55e2cf057000-55e2cf058000 r--p 00000000 08:08 7003309 /usr/bin/ruby-mri
55e2cf058000-55e2cf059000 r-xp 00001000 08:08 7003309 /usr/bin/ruby-mri
55e2cf059000-55e2cf05a000 r--p 00002000 08:08 7003309 /usr/bin/ruby-mri
55e2cf05a000-55e2cf05b000 r--p 00002000 08:08 7003309 /usr/bin/ruby-mri
55e2cf05b000-55e2cf05c000 rw-p 00003000 08:08 7003309 /usr/bin/ruby-mri
55e2cfbcf000-55e2d4095000 rw-p 00000000 00:00 0 [heap]
7f69fe200000-7f69fe451000 r--s 00000000 08:08 6979654 /usr/lib64/libc.so.6
7f69fe600000-7f6a00531000 r--s 00000000 08:08 7003543 /usr/lib/debug/usr/lib64/libruby.so.3.3.0-3.3.0~20231222.0241git68bcca4c2b-184.fc40.391.x86_64.debug
7f6a00600000-7f6a02531000 r--s 00000000 08:08 7003543 /usr/lib/debug/usr/lib64/libruby.so.3.3.0-3.3.0~20231222.0241git68bcca4c2b-184.fc40.391.x86_64.debug
7f6a02600000-7f6a02b8a000 r--s 00000000 08:08 6984462 /usr/lib64/libruby.so.3.3.0
7f6a02bf0000-7f6a02c80000 rw-p 00000000 00:00 0
7f6a02c8a000-7f6a02cb0000 r--s 00000000 08:08 7001502 /usr/share/mime/mime.cache
7f6a02cb0000-7f6a02dd0000 rw-p 00000000 00:00 0
7f6a02dd3000-7f6a02dd8000 r--s 00000000 08:08 7003308 /usr/lib/debug/usr/bin/ruby-mri-3.3.0~20231222.0241git68bcca4c2b-184.fc40.391.x86_64.debug
7f6a02dd8000-7f6a02df6000 r--p 00000000 08:08 6982263 /usr/lib64/libssl.so.3.1.4
7f6a02df6000-7f6a02e53000 r-xp 0001e000 08:08 6982263 /usr/lib64/libssl.so.3.1.4
7f6a02e53000-7f6a02e6d000 r--p 0007b000 08:08 6982263 /usr/lib64/libssl.so.3.1.4
7f6a02e6d000-7f6a02e77000 r--p 00094000 08:08 6982263 /usr/lib64/libssl.so.3.1.4
7f6a02e77000-7f6a02e7b000 rw-p 0009e000 08:08 6982263 /usr/lib64/libssl.so.3.1.4
7f6a02e7b000-7f6a02e90000 r--p 00000000 08:08 6984544 /usr/lib64/ruby/openssl.so
7f6a02e90000-7f6a02eca000 r-xp 00015000 08:08 6984544 /usr/lib64/ruby/openssl.so
7f6a02eca000-7f6a02edb000 r--p 0004f000 08:08 6984544 /usr/lib64/ruby/openssl.so
7f6a02edb000-7f6a02edf000 r--p 0005f000 08:08 6984544 /usr/lib64/ruby/openssl.so
7f6a02edf000-7f6a02ee0000 rw-p 00063000 08:08 6984544 /usr/lib64/ruby/openssl.so
7f6a02ee0000-7f6a02fb0000 rw-p 00000000 00:00 0
7f6a02fb4000-7f6a02fb7000 r--p 00000000 08:08 6989071 /usr/lib64/gems/ruby/bigdecimal-3.1.5/bigdecimal.so
7f6a02fb7000-7f6a02fcb000 r-xp 00003000 08:08 6989071 /usr/lib64/gems/ruby/bigdecimal-3.1.5/bigdecimal.so
7f6a02fcb000-7f6a02fce000 r--p 00017000 08:08 6989071 /usr/lib64/gems/ruby/bigdecimal-3.1.5/bigdecimal.so
7f6a02fce000-7f6a02fcf000 r--p 0001a000 08:08 6989071 /usr/lib64/gems/ruby/bigdecimal-3.1.5/bigdecimal.so
7f6a02fcf000-7f6a02fd0000 rw-p 0001b000 08:08 6989071 /usr/lib64/gems/ruby/bigdecimal-3.1.5/bigdecimal.so
7f6a02fd0000-7f6a036c0000 rw-p 00000000 00:00 0
7f6a036c1000-7f6a03702000 r--p 00000000 08:08 6986229 /usr/lib64/libGLdispatch.so.0.0.0
7f6a03702000-7f6a03741000 r-xp 00041000 08:08 6986229 /usr/lib64/libGLdispatch.so.0.0.0
7f6a03741000-7f6a03754000 r--p 00080000 08:08 6986229 /usr/lib64/libGLdispatch.so.0.0.0
7f6a03754000-7f6a03770000 r--p 00093000 08:08 6986229 /usr/lib64/libGLdispatch.so.0.0.0
7f6a03770000-7f6a03771000 rw-p 000af000 08:08 6986229 /usr/lib64/libGLdispatch.so.0.0.0
7f6a03771000-7f6a03779000 rw-p 00000000 00:00 0
7f6a03779000-7f6a037bc000 r--p 00000000 08:08 6993695 /usr/lib64/libGL.so.1.7.0
7f6a037bc000-7f6a037dc000 r-xp 00043000 08:08 6993695 /usr/lib64/libGL.so.1.7.0
7f6a037dc000-7f6a037f0000 r--p 00063000 08:08 6993695 /usr/lib64/libGL.so.1.7.0
7f6a037f0000-7f6a037fe000 r--p 00077000 08:08 6993695 /usr/lib64/libGL.so.1.7.0
7f6a037fe000-7f6a037ff000 rw-p 00085000 08:08 6993695 /usr/lib64/libGL.so.1.7.0
7f6a037ff000-7f6a03800000 rw-p 00000000 00:00 0
7f6a03800000-7f6a03887000 r--p 00000000 08:08 6999115 /usr/lib64/libgtk-3.so.0.2407.32
7f6a03887000-7f6a03c39000 r-xp 00087000 08:08 6999115 /usr/lib64/libgtk-3.so.0.2407.32
7f6a03c39000-7f6a03fb3000 r--p 00439000 08:08 6999115 /usr/lib64/libgtk-3.so.0.2407.32
7f6a03fb3000-7f6a03fc3000 r--p 007b3000 08:08 6999115 /usr/lib64/libgtk-3.so.0.2407.32
7f6a03fc3000-7f6a03fc5000 rw-p 007c3000 08:08 6999115 /usr/lib64/libgtk-3.so.0.2407.32
7f6a03fc5000-7f6a03fca000 rw-p 00000000 00:00 0
7f6a03fcd000-7f6a03fd0000 r--p 00000000 08:08 6993697 /usr/lib64/libGLX.so.0.0.0
7f6a03fd0000-7f6a03feb000 r-xp 00003000 08:08 6993697 /usr/lib64/libGLX.so.0.0.0
7f6a03feb000-7f6a03fee000 r--p 0001e000 08:08 6993697 /usr/lib64/libGLX.so.0.0.0
7f6a03fee000-7f6a03fef000 r--p 00020000 08:08 6993697 /usr/lib64/libGLX.so.0.0.0
7f6a03fef000-7f6a03ff0000 rw-p 00021000 08:08 6993697 /usr/lib64/libGLX.so.0.0.0
7f6a03ff0000-7f6a04021000 rw-p 00000000 00:00 0
7f6a04021000-7f6a08000000 ---p 00000000 00:00 0
7f6a08000000-7f6a08062000 rw-p 00000000 00:00 0
7f6a08062000-7f6a0c000000 ---p 00000000 00:00 0
7f6a0c000000-7f6a0c021000 rw-p 00000000 00:00 0
7f6a0c021000-7f6a10000000 ---p 00000000 00:00 0
7f6a10001000-7f6a10006000 r--s 00000000 08:08 7003308 /usr/lib/debug/usr/bin/ruby-mri-3.3.0~20231222.0241git68bcca4c2b-184.fc40.391.x86_64.debug
7f6a10006000-7f6a10007000 r--p 00000000 08:08 6984524 /usr/lib64/ruby/enc/utf_16be.so
7f6a10007000-7f6a10008000 r-xp 00001000 08:08 6984524 /usr/lib64/ruby/enc/utf_16be.so
7f6a10008000-7f6a10009000 r--p 00002000 08:08 6984524 /usr/lib64/ruby/enc/utf_16be.so
7f6a10009000-7f6a1000a000 r--p 00002000 08:08 6984524 /usr/lib64/ruby/enc/utf_16be.so
7f6a1000a000-7f6a1000b000 rw-p 00000000 00:00 0
7f6a1000b000-7f6a1000c000 r--p 00000000 08:08 6984525 /usr/lib64/ruby/enc/utf_16le.so
7f6a1000c000-7f6a1000d000 r-xp 00001000 08:08 6984525 /usr/lib64/ruby/enc/utf_16le.so
7f6a1000d000-7f6a1000e000 r--p 00002000 08:08 6984525 /usr/lib64/ruby/enc/utf_16le.so
7f6a1000e000-7f6a1000f000 r--p 00002000 08:08 6984525 /usr/lib64/ruby/enc/utf_16le.so
7f6a1000f000-7f6a10020000 rw-p 00000000 00:00 0
7f6a10020000-7f6a10024000 r--s 00000000 08:08 7003309 /usr/bin/ruby-mri
7f6a10024000-7f6a10026000 r--p 00000000 08:08 6984467 /usr/lib64/ruby/digest.so
7f6a10026000-7f6a10028000 r-xp 00002000 08:08 6984467 /usr/lib64/ruby/digest.so
7f6a10028000-7f6a10029000 r--p 00004000 08:08 6984467 /usr/lib64/ruby/digest.so
7f6a10029000-7f6a1002a000 r--p 00004000 08:08 6984467 /usr/lib64/ruby/digest.so
7f6a1002a000-7f6a1002b000 rw-p 00000000 00:00 0
7f6a1002b000-7f6a10030000 r--p 00000000 08:08 6979963 /usr/lib64/libzstd.so.1.5.5
7f6a10030000-7f6a100d8000 r-xp 00005000 08:08 6979963 /usr/lib64/libzstd.so.1.5.5
7f6a100d8000-7f6a100e5000 r--p 000ad000 08:08 6979963 /usr/lib64/libzstd.so.1.5.5
7f6a100e5000-7f6a100e6000 r--p 000b9000 08:08 6979963 /usr/lib64/libzstd.so.1.5.5
7f6a100e6000-7f6a100e7000 rw-p 00000000 00:00 0
7f6a100e7000-7f6a100ea000 r--p 00000000 08:08 6980086 /usr/lib64/liblz4.so.1.9.4
7f6a100ea000-7f6a10105000 r-xp 00003000 08:08 6980086 /usr/lib64/liblz4.so.1.9.4
7f6a10105000-7f6a10107000 r--p 0001e000 08:08 6980086 /usr/lib64/liblz4.so.1.9.4
7f6a10107000-7f6a10108000 r--p 0001f000 08:08 6980086 /usr/lib64/liblz4.so.1.9.4
7f6a10108000-7f6a10109000 rw-p 00000000 00:00 0
7f6a10109000-7f6a10120000 r--p 00000000 08:08 6980237 /usr/lib64/libsystemd.so.0.38.0
7f6a10120000-7f6a101ba000 r-xp 00017000 08:08 6980237 /usr/lib64/libsystemd.so.0.38.0
7f6a101ba000-7f6a101ee000 r--p 000b1000 08:08 6980237 /usr/lib64/libsystemd.so.0.38.0
7f6a101ee000-7f6a101fa000 r--p 000e4000 08:08 6980237 /usr/lib64/libsystemd.so.0.38.0
7f6a101fa000-7f6a101fb000 rw-p 000f0000 08:08 6980237 /usr/lib64/libsystemd.so.0.38.0
7f6a101fb000-7f6a101fc000 rw-p 00000000 00:00 0
7f6a101fc000-7f6a1020d000 r--p 00000000 08:08 6981561 /usr/lib64/libsqlite3.so.0.8.6
7f6a1020d000-7f6a10323000 r-xp 00011000 08:08 6981561 /usr/lib64/libsqlite3.so.0.8.6
7f6a10323000-7f6a10350000 r--p 00127000 08:08 6981561 /usr/lib64/libsqlite3.so.0.8.6
7f6a10350000-7f6a10354000 r--p 00154000 08:08 6981561 /usr/lib64/libsqlite3.so.0.8.6
7f6a10354000-7f6a10358000 rw-p 00158000 08:08 6981561 /usr/lib64/libsqlite3.so.0.8.6
7f6a10358000-7f6a10359000 rw-p 00000000 00:00 0
7f6a10359000-7f6a10362000 r--p 00000000 08:08 6985992 /usr/lib64/libjson-glib-1.0.so.0.800.0
7f6a10362000-7f6a1037a000 r-xp 00009000 08:08 6985992 /usr/lib64/libjson-glib-1.0.so.0.800.0
7f6a1037a000-7f6a10383000 r--p 00021000 08:08 6985992 /usr/lib64/libjson-glib-1.0.so.0.800.0
7f6a10383000-7f6a10384000 r--p 0002a000 08:08 6985992 /usr/lib64/libjson-glib-1.0.so.0.800.0
7f6a10384000-7f6a10385000 rw-p 00000000 00:00 0
7f6a10385000-7f6a10393000 r--p 00000000 08:08 6985167 /usr/lib64/libdbus-1.so.3.32.4
7f6a10393000-7f6a103c6000 r-xp 0000e000 08:08 6985167 /usr/lib64/libdbus-1.so.3.32.4
7f6a103c6000-7f6a103d7000 r--p 00041000 08:08 6985167 /usr/lib64/libdbus-1.so.3.32.4
7f6a103d7000-7f6a103d9000 r--p 00051000 08:08 6985167 /usr/lib64/libdbus-1.so.3.32.4
7f6a103d9000-7f6a103da000 rw-p 00053000 08:08 6985167 /usr/lib64/libdbus-1.so.3.32.4
7f6a103da000-7f6a103ea000 r--p 00000000 08:08 6997756 /usr/lib64/libatspi.so.0.0.1
7f6a103ea000-7f6a10403000 r-xp 00010000 08:08 6997756 /usr/lib64/libatspi.so.0.0.1
7f6a10403000-7f6a10410000 r--p 00029000 08:08 6997756 /usr/lib64/libatspi.so.0.0.1
7f6a10410000-7f6a10414000 r--p 00035000 08:08 6997756 /usr/lib64/libatspi.so.0.0.1
7f6a10414000-7f6a10415000 rw-p 00039000 08:08 6997756 /usr/lib64/libatspi.so.0.0.1
7f6a10415000-7f6a1042e000 r--p 00000000 08:08 6990988 /usr/lib64/libtracker-sparql-3.0.so.0.600.0
7f6a1042e000-7f6a104b2000 r-xp 00019000 08:08 6990988 /usr/lib64/libtracker-sparql-3.0.so.0.600.0
7f6a104b2000-7f6a104e4000 r--p 0009d000 08:08 6990988 /usr/lib64/libtracker-sparql-3.0.so.0.600.0
7f6a104e4000-7f6a104f2000 r--p 000ce000 08:08 6990988 /usr/lib64/libtracker-sparql-3.0.so.0.600.0
7f6a104f2000-7f6a104f3000 rw-p 000dc000 08:08 6990988 /usr/lib64/libtracker-sparql-3.0.so.0.600.0
7f6a104f3000-7f6a104fa000 r--p 00000000 08:08 6986293 /usr/lib64/libcloudproviders.so.0.3.5
7f6a104fa000-7f6a10506000 r-xp 00007000 08:08 6986293 /usr/lib64/libcloudproviders.so.0.3.5
7f6a10506000-7f6a1050b000 r--p 00013000 08:08 6986293 /usr/lib64/libcloudproviders.so.0.3.5
7f6a1050b000-7f6a1050c000 r--p 00018000 08:08 6986293 /usr/lib64/libcloudproviders.so.0.3.5
7f6a1050c000-7f6a1050d000 rw-p 00019000 08:08 6986293 /usr/lib64/libcloudproviders.so.0.3.5
7f6a1050d000-7f6a10519000 r--p 00000000 08:08 6997887 /usr/lib64/libatk-bridge-2.0.so.0.0.0
7f6a10519000-7f6a10533000 r-xp 0000c000 08:08 6997887 /usr/lib64/libatk-bridge-2.0.so.0.0.0
7f6a10533000-7f6a10546000 r--p 00026000 08:08 6997887 /usr/lib64/libatk-bridge-2.0.so.0.0.0
7f6a10546000-7f6a10548000 r--p 00038000 08:08 6997887 /usr/lib64/libatk-bridge-2.0.so.0.0.0
7f6a10548000-7f6a1054a000 rw-p 0003a000 08:08 6997887 /usr/lib64/libatk-bridge-2.0.so.0.0.0
7f6a1054a000-7f6a105f0000 r--p 00000000 08:08 6999100 /usr/lib64/girepository-1.0/Gtk-3.0.typelib
7f6a105f0000-7f6a10690000 rw-p 00000000 00:00 0
7f6a10691000-7f6a106f1000 r--p 00000000 08:08 6991062 /usr/lib64/libepoxy.so.0.0.0
7f6a106f1000-7f6a10757000 r-xp 00060000 08:08 6991062 /usr/lib64/libepoxy.so.0.0.0
7f6a10757000-7f6a107a5000 r--p 000c6000 08:08 6991062 /usr/lib64/libepoxy.so.0.0.0
7f6a107a5000-7f6a107ad000 r--p 00113000 08:08 6991062 /usr/lib64/libepoxy.so.0.0.0
7f6a107ad000-7f6a107b4000 rw-p 0011b000 08:08 6991062 /usr/lib64/libepoxy.so.0.0.0
7f6a107b4000-7f6a107de000 r--p 00000000 08:08 6999113 /usr/lib64/libgdk-3.so.0.2407.32
7f6a107de000-7f6a10862000 r-xp 0002a000 08:08 6999113 /usr/lib64/libgdk-3.so.0.2407.32
7f6a10862000-7f6a108a4000 r--p 000ae000 08:08 6999113 /usr/lib64/libgdk-3.so.0.2407.32
7f6a108a4000-7f6a108ad000 r--p 000ef000 08:08 6999113 /usr/lib64/libgdk-3.so.0.2407.32
7f6a108ad000-7f6a108af000 rw-p 000f8000 08:08 6999113 /usr/lib64/libgdk-3.so.0.2407.32
7f6a108af000-7f6a108b0000 ---p 00000000 00:00 0
7f6a108b0000-7f6a110d0000 rw-p 00000000 00:00 0
7f6a110d1000-7f6a110d2000 r--p 00000000 08:08 6984539 /usr/lib64/ruby/io/nonblock.so
7f6a110d2000-7f6a110d3000 r-xp 00001000 08:08 6984539 /usr/lib64/ruby/io/nonblock.so
7f6a110d3000-7f6a110d4000 r--p 00002000 08:08 6984539 /usr/lib64/ruby/io/nonblock.so
7f6a110d4000-7f6a110d5000 r--p 00002000 08:08 6984539 /usr/lib64/ruby/io/nonblock.so
7f6a110d5000-7f6a110d6000 rw-p 00000000 00:00 0
7f6a110d6000-7f6a110d9000 r--p 00000000 08:08 6999285 /usr/lib64/gems/ruby/gtk3-4.2.0/gtk3.so
7f6a110d9000-7f6a110dd000 r-xp 00003000 08:08 6999285 /usr/lib64/gems/ruby/gtk3-4.2.0/gtk3.so
7f6a110dd000-7f6a110de000 r--p 00007000 08:08 6999285 /usr/lib64/gems/ruby/gtk3-4.2.0/gtk3.so
7f6a110de000-7f6a110df000 r--p 00008000 08:08 6999285 /usr/lib64/gems/ruby/gtk3-4.2.0/gtk3.so
7f6a110df000-7f6a11100000 rw-p 00000000 00:00 0
7f6a11100000-7f6a11103000 r--p 00000000 08:08 6980210 /usr/lib64/libcap.so.2.69
7f6a11103000-7f6a11109000 r-xp 00003000 08:08 6980210 /usr/lib64/libcap.so.2.69
7f6a11109000-7f6a1110b000 r--p 00009000 08:08 6980210 /usr/lib64/libcap.so.2.69
7f6a1110b000-7f6a1110c000 r--p 0000a000 08:08 6980210 /usr/lib64/libcap.so.2.69
7f6a1110c000-7f6a1110d000 rw-p 0000b000 08:08 6980210 /usr/lib64/libcap.so.2.69
7f6a1110d000-7f6a1110e000 r--p 00000000 08:08 6993491 /usr/lib64/libXinerama.so.1.0.0
7f6a1110e000-7f6a1110f000 r-xp 00001000 08:08 6993491 /usr/lib64/libXinerama.so.1.0.0
7f6a1110f000-7f6a11110000 r--p 00002000 08:08 6993491 /usr/lib64/libXinerama.so.1.0.0
7f6a11110000-7f6a11111000 r--p 00002000 08:08 6993491 /usr/lib64/libXinerama.so.1.0.0
7f6a11111000-7f6a11112000 rw-p 00003000 08:08 6993491 /usr/lib64/libXinerama.so.1.0.0
7f6a11112000-7f6a11114000 r--p 00000000 08:08 6993485 /usr/lib64/libXrandr.so.2.2.0
7f6a11114000-7f6a1111b000 r-xp 00002000 08:08 6993485 /usr/lib64/libXrandr.so.2.2.0
7f6a1111b000-7f6a1111d000 r--p 00009000 08:08 6993485 /usr/lib64/libXrandr.so.2.2.0
7f6a1111d000-7f6a1111e000 r--p 0000a000 08:08 6993485 /usr/lib64/libXrandr.so.2.2.0
7f6a1111e000-7f6a1111f000 rw-p 0000b000 08:08 6993485 /usr/lib64/libXrandr.so.2.2.0
7f6a1111f000-7f6a11120000 r--p 00000000 08:08 6993508 /usr/lib64/libXcomposite.so.1.0.0
7f6a11120000-7f6a11121000 r-xp 00001000 08:08 6993508 /usr/lib64/libXcomposite.so.1.0.0
7f6a11121000-7f6a11122000 r--p 00002000 08:08 6993508 /usr/lib64/libXcomposite.so.1.0.0
7f6a11122000-7f6a11123000 r--p 00002000 08:08 6993508 /usr/lib64/libXcomposite.so.1.0.0
7f6a11123000-7f6a11124000 rw-p 00000000 00:00 0
7f6a11124000-7f6a11126000 r--p 00000000 08:08 6993445 /usr/lib64/libXfixes.so.3.1.0
7f6a11126000-7f6a11129000 r-xp 00002000 08:08 6993445 /usr/lib64/libXfixes.so.3.1.0
7f6a11129000-7f6a1112a000 r--p 00005000 08:08 6993445 /usr/lib64/libXfixes.so.3.1.0
7f6a1112a000-7f6a1112b000 r--p 00005000 08:08 6993445 /usr/lib64/libXfixes.so.3.1.0
7f6a1112b000-7f6a1112c000 rw-p 00006000 08:08 6993445 /usr/lib64/libXfixes.so.3.1.0
7f6a1112c000-7f6a1112d000 r--p 00000000 08:08 6993463 /usr/lib64/libXdamage.so.1.1.0
7f6a1112d000-7f6a1112e000 r-xp 00001000 08:08 6993463 /usr/lib64/libXdamage.so.1.1.0
7f6a1112e000-7f6a1112f000 r--p 00002000 08:08 6993463 /usr/lib64/libXdamage.so.1.1.0
7f6a1112f000-7f6a11130000 r--p 00002000 08:08 6993463 /usr/lib64/libXdamage.so.1.1.0
7f6a11130000-7f6a11131000 rw-p 00000000 00:00 0
7f6a11131000-7f6a11134000 r--p 00000000 08:08 6993476 /usr/lib64/libXcursor.so.1.0.2
7f6a11134000-7f6a1113a000 r-xp 00003000 08:08 6993476 /usr/lib64/libXcursor.so.1.0.2
7f6a1113a000-7f6a1113c000 r--p 00009000 08:08 6993476 /usr/lib64/libXcursor.so.1.0.2
7f6a1113c000-7f6a1113d000 r--p 0000a000 08:08 6993476 /usr/lib64/libXcursor.so.1.0.2
7f6a1113d000-7f6a1113e000 rw-p 00000000 00:00 0
7f6a1113e000-7f6a11141000 r--p 00000000 08:08 6993458 /usr/lib64/libXi.so.6.1.0
7f6a11141000-7f6a1114d000 r-xp 00003000 08:08 6993458 /usr/lib64/libXi.so.6.1.0
7f6a1114d000-7f6a1114f000 r--p 0000f000 08:08 6993458 /usr/lib64/libXi.so.6.1.0
7f6a1114f000-7f6a11150000 r--p 00011000 08:08 6993458 /usr/lib64/libXi.so.6.1.0
7f6a11150000-7f6a11151000 rw-p 00012000 08:08 6993458 /usr/lib64/libXi.so.6.1.0
7f6a11151000-7f6a11157000 r--p 00000000 08:08 6985187 /usr/lib64/libwayland-client.so.0.22.0
7f6a11157000-7f6a1115d000 r-xp 00006000 08:08 6985187 /usr/lib64/libwayland-client.so.0.22.0
7f6a1115d000-7f6a1115f000 r--p 0000c000 08:08 6985187 /usr/lib64/libwayland-client.so.0.22.0
7f6a1115f000-7f6a11161000 r--p 0000e000 08:08 6985187 /usr/lib64/libwayland-client.so.0.22.0
7f6a11161000-7f6a11162000 rw-p 00010000 08:08 6985187 /usr/lib64/libwayland-client.so.0.22.0
7f6a11162000-7f6a11167000 r--p 00000000 08:08 6986483 /usr/lib64/libxkbcommon.so.0.0.0
7f6a11167000-7f6a11187000 r-xp 00005000 08:08 6986483 /usr/lib64/libxkbcommon.so.0.0.0
7f6a11187000-7f6a111a8000 r--p 00025000 08:08 6986483 /usr/lib64/libxkbcommon.so.0.0.0
7f6a111a8000-7f6a111aa000 r--p 00045000 08:08 6986483 /usr/lib64/libxkbcommon.so.0.0.0
7f6a111aa000-7f6a111ab000 rw-p 00000000 00:00 0
7f6a111ab000-7f6a111e5000 r--p 00000000 08:08 6999098 /usr/lib64/girepository-1.0/Gdk-3.0.typelib
7f6a111e5000-7f6a111ec000 r--p 00000000 08:08 6997316 /usr/lib64/libpangoft2-1.0.so.0.5100.0
7f6a111ec000-7f6a111f9000 r-xp 00007000 08:08 6997316 /usr/lib64/libpangoft2-1.0.so.0.5100.0
7f6a111f9000-7f6a111fd000 r--p 00014000 08:08 6997316 /usr/lib64/libpangoft2-1.0.so.0.5100.0
7f6a111fd000-7f6a111fe000 r--p 00018000 08:08 6997316 /usr/lib64/libpangoft2-1.0.so.0.5100.0
7f6a111fe000-7f6a111ff000 rw-p 00000000 00:00 0
7f6a111ff000-7f6a11204000 r--p 00000000 08:08 6997314 /usr/lib64/libpangocairo-1.0.so.0.5100.0
7f6a11204000-7f6a1120c000 r-xp 00005000 08:08 6997314 /usr/lib64/libpangocairo-1.0.so.0.5100.0
7f6a1120c000-7f6a1120e000 r--p 0000d000 08:08 6997314 /usr/lib64/libpangocairo-1.0.so.0.5100.0
7f6a1120e000-7f6a1120f000 r--p 0000f000 08:08 6997314 /usr/lib64/libpangocairo-1.0.so.0.5100.0
7f6a1120f000-7f6a11210000 rw-p 00010000 08:08 6997314 /usr/lib64/libpangocairo-1.0.so.0.5100.0
7f6a11210000-7f6a11310000 rw-p 00000000 00:00 0
7f6a11311000-7f6a11313000 r--p 00000000 08:08 6985315 /usr/lib64/libwayland-cursor.so.0.22.0
7f6a11313000-7f6a11315000 r-xp 00002000 08:08 6985315 /usr/lib64/libwayland-cursor.so.0.22.0
7f6a11315000-7f6a11316000 r--p 00004000 08:08 6985315 /usr/lib64/libwayland-cursor.so.0.22.0
7f6a11316000-7f6a11317000 r--p 00004000 08:08 6985315 /usr/lib64/libwayland-cursor.so.0.22.0
7f6a11317000-7f6a1131b000 rw-p 00005000 08:08 6985315 /usr/lib64/libwayland-cursor.so.0.22.0
7f6a1131b000-7f6a1131d000 r--p 00000000 08:08 6991069 /usr/lib64/libdatrie.so.1.4.0
7f6a1131d000-7f6a11321000 r-xp 00002000 08:08 6991069 /usr/lib64/libdatrie.so.1.4.0
7f6a11321000-7f6a11322000 r--p 00006000 08:08 6991069 /usr/lib64/libdatrie.so.1.4.0
7f6a11322000-7f6a11323000 r--p 00006000 08:08 6991069 /usr/lib64/libdatrie.so.1.4.0
7f6a11323000-7f6a11324000 rw-p 00000000 00:00 0
7f6a11324000-7f6a11326000 r--p 00000000 08:08 6991074 /usr/lib64/libthai.so.0.3.1
7f6a11326000-7f6a1132a000 r-xp 00002000 08:08 6991074 /usr/lib64/libthai.so.0.3.1
7f6a1132a000-7f6a1132d000 r--p 00006000 08:08 6991074 /usr/lib64/libthai.so.0.3.1
7f6a1132d000-7f6a1132e000 r--p 00008000 08:08 6991074 /usr/lib64/libthai.so.0.3.1
7f6a1132e000-7f6a1132f000 rw-p 00009000 08:08 6991074 /usr/lib64/libthai.so.0.3.1
7f6a1132f000-7f6a11331000 r--p 00000000 08:08 6986252 /usr/lib64/libfribidi.so.0.4.0
7f6a11331000-7f6a11336000 r-xp 00002000 08:08 6986252 /usr/lib64/libfribidi.so.0.4.0
7f6a11336000-7f6a1134c000 r--p 00007000 08:08 6986252 /usr/lib64/libfribidi.so.0.4.0
7f6a1134c000-7f6a1134d000 r--p 0001d000 08:08 6986252 /usr/lib64/libfribidi.so.0.4.0
7f6a1134d000-7f6a1134e000 rw-p 0001e000 08:08 6986252 /usr/lib64/libfribidi.so.0.4.0
7f6a1134e000-7f6a11360000 r--p 00000000 08:08 6997312 /usr/lib64/libpango-1.0.so.0.5100.0
7f6a11360000-7f6a11399000 r-xp 00012000 08:08 6997312 /usr/lib64/libpango-1.0.so.0.5100.0
7f6a11399000-7f6a113b3000 r--p 0004b000 08:08 6997312 /usr/lib64/libpango-1.0.so.0.5100.0
7f6a113b3000-7f6a113b7000 r--p 00064000 08:08 6997312 /usr/lib64/libpango-1.0.so.0.5100.0
7f6a113b7000-7f6a113b8000 rw-p 00068000 08:08 6997312 /usr/lib64/libpango-1.0.so.0.5100.0
7f6a113b8000-7f6a113dd000 r--p 00000000 08:08 6997144 /usr/lib64/girepository-1.0/HarfBuzz-0.0.typelib
7f6a113dd000-7f6a113f0000 r--p 00000000 08:08 6997305 /usr/lib64/girepository-1.0/Pango-1.0.typelib
7f6a113f0000-7f6a11400000 rw-p 00000000 00:00 0
7f6a11400000-7f6a11401000 r--p 00000000 08:08 6986187 /usr/lib64/libwayland-egl.so.1.22.0
7f6a11401000-7f6a11402000 r-xp 00001000 08:08 6986187 /usr/lib64/libwayland-egl.so.1.22.0
7f6a11402000-7f6a11403000 r--p 00002000 08:08 6986187 /usr/lib64/libwayland-egl.so.1.22.0
7f6a11403000-7f6a11404000 r--p 00002000 08:08 6986187 /usr/lib64/libwayland-egl.so.1.22.0
7f6a11404000-7f6a11405000 rw-p 00000000 00:00 0
7f6a11405000-7f6a11409000 r--p 00000000 08:08 6997286 /usr/lib64/libcairo-gobject.so.2.11800.0
7f6a11409000-7f6a1140b000 r-xp 00004000 08:08 6997286 /usr/lib64/libcairo-gobject.so.2.11800.0
7f6a1140b000-7f6a1140d000 r--p 00006000 08:08 6997286 /usr/lib64/libcairo-gobject.so.2.11800.0
7f6a1140d000-7f6a1140f000 r--p 00008000 08:08 6997286 /usr/lib64/libcairo-gobject.so.2.11800.0
7f6a1140f000-7f6a11550000 rw-p 00000000 00:00 0
7f6a11552000-7f6a11553000 r--p 00000000 08:08 6981694 /usr/lib64/libbrotlicommon.so.1.1.0
7f6a11553000-7f6a11554000 r-xp 00001000 08:08 6981694 /usr/lib64/libbrotlicommon.so.1.1.0
7f6a11554000-7f6a11573000 r--p 00002000 08:08 6981694 /usr/lib64/libbrotlicommon.so.1.1.0
7f6a11573000-7f6a11574000 r--p 00021000 08:08 6981694 /usr/lib64/libbrotlicommon.so.1.1.0
7f6a11574000-7f6a11575000 rw-p 00000000 00:00 0
7f6a11575000-7f6a11578000 r--p 00000000 08:08 6997073 /usr/lib64/libgraphite2.so.3.2.1
7f6a11578000-7f6a11590000 r-xp 00003000 08:08 6997073 /usr/lib64/libgraphite2.so.3.2.1
7f6a11590000-7f6a11593000 r--p 0001b000 08:08 6997073 /usr/lib64/libgraphite2.so.3.2.1
7f6a11593000-7f6a11595000 r--p 0001d000 08:08 6997073 /usr/lib64/libgraphite2.so.3.2.1
7f6a11595000-7f6a11596000 rw-p 00000000 00:00 0
7f6a11596000-7f6a115a2000 r--p 00000000 08:08 6997152 /usr/lib64/libharfbuzz.so.0.60830.0
7f6a115a2000-7f6a11671000 r-xp 0000c000 08:08 6997152 /usr/lib64/libharfbuzz.so.0.60830.0
7f6a11671000-7f6a116a3000 r--p 000db000 08:08 6997152 /usr/lib64/libharfbuzz.so.0.60830.0
7f6a116a3000-7f6a116a4000 r--p 0010d000 08:08 6997152 /usr/lib64/libharfbuzz.so.0.60830.0
7f6a116a4000-7f6a116a5000 rw-p 0010e000 08:08 6997152 /usr/lib64/libharfbuzz.so.0.60830.0
7f6a116a5000-7f6a116a7000 r--p 00000000 08:08 6979917 /usr/lib64/libbz2.so.1.0.8
7f6a116a7000-7f6a116b5000 r-xp 00002000 08:08 6979917 /usr/lib64/libbz2.so.1.0.8
7f6a116b5000-7f6a116b7000 r--p 00010000 08:08 6979917 /usr/lib64/libbz2.so.1.0.8
7f6a116b7000-7f6a116b8000 r--p 00011000 08:08 6979917 /usr/lib64/libbz2.so.1.0.8
7f6a116b8000-7f6a116b9000 rw-p 00012000 08:08 6979917 /usr/lib64/libbz2.so.1.0.8
7f6a116b9000-7f6a116c4000 r--p 00000000 08:08 6985205 /usr/lib64/libpixman-1.so.0.42.2
7f6a116c4000-7f6a11751000 r-xp 0000b000 08:08 6985205 /usr/lib64/libpixman-1.so.0.42.2
7f6a11751000-7f6a11760000 r--p 00098000 08:08 6985205 /usr/lib64/libpixman-1.so.0.42.2
7f6a11760000-7f6a11768000 r--p 000a6000 08:08 6985205 /usr/lib64/libpixman-1.so.0.42.2
7f6a11768000-7f6a11769000 rw-p 000ae000 08:08 6985205 /usr/lib64/libpixman-1.so.0.42.2
7f6a11769000-7f6a1176e000 r--p 00000000 08:08 6985264 /usr/lib64/libxcb-render.so.0.0.0
7f6a1176e000-7f6a11773000 r-xp 00005000 08:08 6985264 /usr/lib64/libxcb-render.so.0.0.0
7f6a11773000-7f6a11776000 r--p 0000a000 08:08 6985264 /usr/lib64/libxcb-render.so.0.0.0
7f6a11776000-7f6a11777000 r--p 0000c000 08:08 6985264 /usr/lib64/libxcb-render.so.0.0.0
7f6a11777000-7f6a11778000 rw-p 0000d000 08:08 6985264 /usr/lib64/libxcb-render.so.0.0.0
7f6a11778000-7f6a11784000 r--p 00000000 08:08 6985294 /usr/lib64/libxcb.so.1.1.0
7f6a11784000-7f6a11798000 r-xp 0000c000 08:08 6985294 /usr/lib64/libxcb.so.1.1.0
7f6a11798000-7f6a117a1000 r--p 00020000 08:08 6985294 /usr/lib64/libxcb.so.1.1.0
7f6a117a1000-7f6a117a2000 r--p 00028000 08:08 6985294 /usr/lib64/libxcb.so.1.1.0
7f6a117a2000-7f6a117a3000 rw-p 00029000 08:08 6985294 /usr/lib64/libxcb.so.1.1.0
7f6a117a3000-7f6a117a7000 r--p 00000000 08:08 6993439 /usr/lib64/libXext.so.6.4.0
7f6a117a7000-7f6a117b2000 r-xp 00004000 08:08 6993439 /usr/lib64/libXext.so.6.4.0
7f6a117b2000-7f6a117b5000 r--p 0000f000 08:08 6993439 /usr/lib64/libXext.so.6.4.0
7f6a117b5000-7f6a117b6000 r--p 00011000 08:08 6993439 /usr/lib64/libXext.so.6.4.0
7f6a117b6000-7f6a117b7000 rw-p 00012000 08:08 6993439 /usr/lib64/libXext.so.6.4.0
7f6a117b7000-7f6a117d3000 r--p 00000000 08:08 6993436 /usr/lib64/libX11.so.6.4.0
7f6a117d3000-7f6a11868000 r-xp 0001c000 08:08 6993436 /usr/lib64/libX11.so.6.4.0
7f6a11868000-7f6a118f7000 r--p 000b1000 08:08 6993436 /usr/lib64/libX11.so.6.4.0
7f6a118f7000-7f6a118fa000 r--p 0013f000 08:08 6993436 /usr/lib64/libX11.so.6.4.0
7f6a118fa000-7f6a118fe000 rw-p 00142000 08:08 6993436 /usr/lib64/libX11.so.6.4.0
7f6a118fe000-7f6a11905000 r--p 00000000 08:08 6997215 /usr/lib64/libfontconfig.so.1.12.0
7f6a11905000-7f6a11934000 r-xp 00007000 08:08 6997215 /usr/lib64/libfontconfig.so.1.12.0
7f6a11934000-7f6a1194a000 r--p 00036000 08:08 6997215 /usr/lib64/libfontconfig.so.1.12.0
7f6a1194a000-7f6a1194c000 r--p 0004b000 08:08 6997215 /usr/lib64/libfontconfig.so.1.12.0
7f6a1194c000-7f6a1194d000 rw-p 0004d000 08:08 6997215 /usr/lib64/libfontconfig.so.1.12.0
7f6a1194d000-7f6a1195b000 r--p 00000000 08:08 6997161 /usr/lib64/libfreetype.so.6.20.0
7f6a1195b000-7f6a119ed000 r-xp 0000e000 08:08 6997161 /usr/lib64/libfreetype.so.6.20.0
7f6a119ed000-7f6a11a14000 r--p 000a0000 08:08 6997161 /usr/lib64/libfreetype.so.6.20.0
7f6a11a14000-7f6a11a1c000 r--p 000c6000 08:08 6997161 /usr/lib64/libfreetype.so.6.20.0
7f6a11a1c000-7f6a11a1d000 rw-p 00000000 00:00 0
7f6a11a1d000-7f6a11a30000 r--p 00000000 08:08 6997130 /usr/lib64/libcairo.so.2.11800.0
7f6a11a30000-7f6a11b1d000 r-xp 00013000 08:08 6997130 /usr/lib64/libcairo.so.2.11800.0
7f6a11b1d000-7f6a11b4d000 r--p 00100000 08:08 6997130 /usr/lib64/libcairo.so.2.11800.0
7f6a11b4d000-7f6a11b51000 r--p 00130000 08:08 6997130 /usr/lib64/libcairo.so.2.11800.0
7f6a11b51000-7f6a11b53000 rw-p 00134000 08:08 6997130 /usr/lib64/libcairo.so.2.11800.0
7f6a11b53000-7f6a11b54000 rw-p 00000000 00:00 0
7f6a11b54000-7f6a11b63000 r--p 00000000 08:08 6997336 /usr/lib64/gems/ruby/cairo-1.17.13/cairo.so
7f6a11b63000-7f6a11b81000 r-xp 0000f000 08:08 6997336 /usr/lib64/gems/ruby/cairo-1.17.13/cairo.so
7f6a11b81000-7f6a11b8c000 r--p 0002d000 08:08 6997336 /usr/lib64/gems/ruby/cairo-1.17.13/cairo.so
7f6a11b8c000-7f6a11b8f000 r--p 00037000 08:08 6997336 /usr/lib64/gems/ruby/cairo-1.17.13/cairo.so
7f6a11b8f000-7f6a11b90000 rw-p 0003a000 08:08 6997336 /usr/lib64/gems/ruby/cairo-1.17.13/cairo.so
7f6a11b90000-7f6a12650000 rw-p 00000000 00:00 0
7f6a12653000-7f6a1265e000 r--p 00000000 08:08 6997875 /usr/lib64/libatk-1.0.so.0.25009.1
7f6a1265e000-7f6a1266e000 r-xp 0000b000 08:08 6997875 /usr/lib64/libatk-1.0.so.0.25009.1
7f6a1266e000-7f6a12679000 r--p 0001b000 08:08 6997875 /usr/lib64/libatk-1.0.so.0.25009.1
7f6a12679000-7f6a1267c000 r--p 00025000 08:08 6997875 /usr/lib64/libatk-1.0.so.0.25009.1
7f6a1267c000-7f6a1267d000 rw-p 00028000 08:08 6997875 /usr/lib64/libatk-1.0.so.0.25009.1
7f6a1267d000-7f6a12690000 r--p 00000000 08:08 6997873 /usr/lib64/girepository-1.0/Atk-1.0.typelib
7f6a12690000-7f6a126b0000 rw-p 00000000 00:00 0
7f6a126b0000-7f6a126b1000 r--p 00000000 08:08 6979639 /usr/lib/locale/C.utf8/LC_NUMERIC
7f6a126b1000-7f6a126b2000 r--p 00000000 08:08 6979642 /usr/lib/locale/C.utf8/LC_TIME
7f6a126b2000-7f6a126b3000 r--p 00000000 08:08 6979631 /usr/lib/locale/C.utf8/LC_COLLATE
7f6a126b3000-7f6a126b4000 r--p 00000000 08:08 6979637 /usr/lib/locale/C.utf8/LC_MONETARY
7f6a126b4000-7f6a126b5000 r--p 00000000 08:08 6979640 /usr/lib/locale/C.utf8/LC_PAPER
7f6a126b5000-7f6a126b6000 r--p 00000000 08:08 6979638 /usr/lib/locale/C.utf8/LC_NAME
7f6a126b6000-7f6a126ba000 r--p 00000000 08:08 6985178 /usr/lib64/libjpeg.so.62.3.0
7f6a126ba000-7f6a12707000 r-xp 00004000 08:08 6985178 /usr/lib64/libjpeg.so.62.3.0
7f6a12707000-7f6a12737000 r--p 00051000 08:08 6985178 /usr/lib64/libjpeg.so.62.3.0
7f6a12737000-7f6a12738000 r--p 00081000 08:08 6985178 /usr/lib64/libjpeg.so.62.3.0
7f6a12738000-7f6a12739000 rw-p 00082000 08:08 6985178 /usr/lib64/libjpeg.so.62.3.0
7f6a12739000-7f6a1273e000 r--p 00000000 08:08 6985172 /usr/lib64/libpng16.so.16.40.0
7f6a1273e000-7f6a12767000 r-xp 00005000 08:08 6985172 /usr/lib64/libpng16.so.16.40.0
7f6a12767000-7f6a12770000 r--p 0002e000 08:08 6985172 /usr/lib64/libpng16.so.16.40.0
7f6a12770000-7f6a12771000 r--p 00037000 08:08 6985172 /usr/lib64/libpng16.so.16.40.0
7f6a12771000-7f6a12772000 rw-p 00000000 00:00 0
7f6a12772000-7f6a1277a000 r--p 00000000 08:08 6986349 /usr/lib64/libgdk_pixbuf-2.0.so.0.4200.10
7f6a1277a000-7f6a12795000 r-xp 00008000 08:08 6986349 /usr/lib64/libgdk_pixbuf-2.0.so.0.4200.10
7f6a12795000-7f6a1279e000 r--p 00023000 08:08 6986349 /usr/lib64/libgdk_pixbuf-2.0.so.0.4200.10
7f6a1279e000-7f6a1279f000 r--p 0002c000 08:08 6986349 /usr/lib64/libgdk_pixbuf-2.0.so.0.4200.10
7f6a1279f000-7f6a127a0000 rw-p 0002d000 08:08 6986349 /usr/lib64/libgdk_pixbuf-2.0.so.0.4200.10
7f6a127a0000-7f6a12930000 rw-p 00000000 00:00 0
7f6a12930000-7f6a12931000 r--p 00000000 08:08 6981696 /usr/lib64/libbrotlidec.so.1.1.0
7f6a12931000-7f6a12939000 r-xp 00001000 08:08 6981696 /usr/lib64/libbrotlidec.so.1.1.0
7f6a12939000-7f6a1293c000 r--p 00009000 08:08 6981696 /usr/lib64/libbrotlidec.so.1.1.0
7f6a1293c000-7f6a1293d000 r--p 0000b000 08:08 6981696 /usr/lib64/libbrotlidec.so.1.1.0
7f6a1293d000-7f6a1293e000 rw-p 00000000 00:00 0
7f6a1293e000-7f6a1293f000 ---p 00000000 00:00 0
7f6a1293f000-7f6a1313f000 rw-p 00000000 00:00 0
7f6a1313f000-7f6a13140000 ---p 00000000 00:00 0
7f6a13140000-7f6a13b90000 rw-p 00000000 00:00 0
7f6a13b90000-7f6a13b91000 r--p 00000000 08:08 6979630 /usr/lib/locale/C.utf8/LC_ADDRESS
7f6a13b91000-7f6a13b92000 r--p 00000000 08:08 6979641 /usr/lib/locale/C.utf8/LC_TELEPHONE
7f6a13b92000-7f6a13bc6000 r--p 00000000 08:08 6985966 /usr/lib64/girepository-1.0/GLib-2.0.typelib
7f6a13bc6000-7f6a13c20000 r--p 00000000 08:08 6985969 /usr/lib64/girepository-1.0/Gio-2.0.typelib
7f6a13c20000-7f6a13c70000 rw-p 00000000 00:00 0
7f6a13c70000-7f6a13c71000 r--p 00000000 08:08 6979634 /usr/lib/locale/C.utf8/LC_MEASUREMENT
7f6a13c71000-7f6a13c76000 r--s 00000000 08:08 6997283 /usr/lib/fontconfig/cache/d63f98f14a274bd69a5425fc33aaac6b-le64.cache-8
7f6a13c76000-7f6a13c7e000 r--p 00000000 08:08 6980026 /usr/lib64/libblkid.so.1.1.0
7f6a13c7e000-7f6a13ca2000 r-xp 00008000 08:08 6980026 /usr/lib64/libblkid.so.1.1.0
7f6a13ca2000-7f6a13cab000 r--p 0002c000 08:08 6980026 /usr/lib64/libblkid.so.1.1.0
7f6a13cab000-7f6a13cb1000 r--p 00034000 08:08 6980026 /usr/lib64/libblkid.so.1.1.0
7f6a13cb1000-7f6a13cb2000 rw-p 0003a000 08:08 6980026 /usr/lib64/libblkid.so.1.1.0
7f6a13cb2000-7f6a13cb9000 r--p 00000000 08:08 6980334 /usr/lib64/libselinux.so.1
7f6a13cb9000-7f6a13cd5000 r-xp 00007000 08:08 6980334 /usr/lib64/libselinux.so.1
7f6a13cd5000-7f6a13cdc000 r--p 00023000 08:08 6980334 /usr/lib64/libselinux.so.1
7f6a13cdc000-7f6a13cdd000 r--p 00029000 08:08 6980334 /usr/lib64/libselinux.so.1
7f6a13cdd000-7f6a13cde000 rw-p 0002a000 08:08 6980334 /usr/lib64/libselinux.so.1
7f6a13cde000-7f6a13ce0000 rw-p 00000000 00:00 0
7f6a13ce0000-7f6a13d1a000 r--p 00000000 08:08 6985833 /usr/lib64/libgio-2.0.so.0.7800.3
7f6a13d1a000-7f6a13e34000 r-xp 0003a000 08:08 6985833 /usr/lib64/libgio-2.0.so.0.7800.3
7f6a13e34000-7f6a13eab000 r--p 00154000 08:08 6985833 /usr/lib64/libgio-2.0.so.0.7800.3
7f6a13eab000-7f6a13eb3000 r--p 001ca000 08:08 6985833 /usr/lib64/libgio-2.0.so.0.7800.3
7f6a13eb3000-7f6a13eb4000 rw-p 001d2000 08:08 6985833 /usr/lib64/libgio-2.0.so.0.7800.3
7f6a13eb4000-7f6a13eb6000 rw-p 00000000 00:00 0
7f6a13eb6000-7f6a13ed4000 r--p 00000000 08:08 6985835 /usr/lib64/libglib-2.0.so.0.7800.3
7f6a13ed4000-7f6a13f75000 r-xp 0001e000 08:08 6985835 /usr/lib64/libglib-2.0.so.0.7800.3
7f6a13f75000-7f6a13ffd000 r--p 000bf000 08:08 6985835 /usr/lib64/libglib-2.0.so.0.7800.3
7f6a13ffd000-7f6a13ffe000 r--p 00147000 08:08 6985835 /usr/lib64/libglib-2.0.so.0.7800.3
7f6a13ffe000-7f6a13fff000 rw-p 00148000 08:08 6985835 /usr/lib64/libglib-2.0.so.0.7800.3
7f6a13fff000-7f6a14000000 rw-p 00000000 00:00 0
7f6a14000000-7f6a140ad000 r--p 00000000 08:08 6982261 /usr/lib64/libcrypto.so.3.1.4
7f6a140ad000-7f6a143c4000 r-xp 000ad000 08:08 6982261 /usr/lib64/libcrypto.so.3.1.4
7f6a143c4000-7f6a1447e000 r--p 003c4000 08:08 6982261 /usr/lib64/libcrypto.so.3.1.4
7f6a1447e000-7f6a144d5000 r--p 0047e000 08:08 6982261 /usr/lib64/libcrypto.so.3.1.4
7f6a144d5000-7f6a144d8000 rw-p 004d5000 08:08 6982261 /usr/lib64/libcrypto.so.3.1.4
7f6a144d8000-7f6a144db000 rw-p 00000000 00:00 0
7f6a144db000-7f6a144de000 r--p 00000000 08:08 6999099 /usr/lib64/girepository-1.0/GdkX11-3.0.typelib
7f6a144de000-7f6a144e2000 r--p 00000000 08:08 6984538 /usr/lib64/ruby/fiddle.so
7f6a144e2000-7f6a144ea000 r-xp 00004000 08:08 6984538 /usr/lib64/ruby/fiddle.so
7f6a144ea000-7f6a144ed000 r--p 0000c000 08:08 6984538 /usr/lib64/ruby/fiddle.so
7f6a144ed000-7f6a144ee000 r--p 0000e000 08:08 6984538 /usr/lib64/ruby/fiddle.so
7f6a144ee000-7f6a144ef000 rw-p 0000f000 08:08 6984538 /usr/lib64/ruby/fiddle.so
7f6a144ef000-7f6a144f9000 r--p 00000000 08:08 6980724 /usr/lib64/libmount.so.1.1.0
7f6a144f9000-7f6a14530000 r-xp 0000a000 08:08 6980724 /usr/lib64/libmount.so.1.1.0
7f6a14530000-7f6a1453d000 r--p 00041000 08:08 6980724 /usr/lib64/libmount.so.1.1.0
7f6a1453d000-7f6a1453f000 r--p 0004e000 08:08 6980724 /usr/lib64/libmount.so.1.1.0
7f6a1453f000-7f6a14540000 rw-p 00050000 08:08 6980724 /usr/lib64/libmount.so.1.1.0
7f6a14540000-7f6a14548000 r--p 00000000 08:08 6985981 /usr/lib64/libgirepository-1.0.so.1.0.0
7f6a14548000-7f6a1455b000 r-xp 00008000 08:08 6985981 /usr/lib64/libgirepository-1.0.so.1.0.0
7f6a1455b000-7f6a14563000 r--p 0001b000 08:08 6985981 /usr/lib64/libgirepository-1.0.so.1.0.0
7f6a14563000-7f6a14564000 r--p 00023000 08:08 6985981 /usr/lib64/libgirepository-1.0.so.1.0.0
7f6a14564000-7f6a14565000 rw-p 00000000 00:00 0
7f6a14565000-7f6a14568000 r--p 00000000 08:08 6980328 /usr/lib64/libpcre2-8.so.0.11.2
7f6a14568000-7f6a145d6000 r-xp 00003000 08:08 6980328 /usr/lib64/libpcre2-8.so.0.11.2
7f6a145d6000-7f6a145fe000 r--p 00071000 08:08 6980328 /usr/lib64/libpcre2-8.so.0.11.2
7f6a145fe000-7f6a145ff000 r--p 00098000 08:08 6980328 /usr/lib64/libpcre2-8.so.0.11.2
7f6a145ff000-7f6a14600000 rw-p 00099000 08:08 6980328 /usr/lib64/libpcre2-8.so.0.11.2
7f6a14600000-7f6a1469c000 r--p 00000000 08:08 6979933 /usr/lib64/libstdc++.so.6.0.32
7f6a1469c000-7f6a147c6000 r-xp 0009c000 08:08 6979933 /usr/lib64/libstdc++.so.6.0.32
7f6a147c6000-7f6a14842000 r--p 001c6000 08:08 6979933 /usr/lib64/libstdc++.so.6.0.32
7f6a14842000-7f6a1484f000 r--p 00242000 08:08 6979933 /usr/lib64/libstdc++.so.6.0.32
7f6a1484f000-7f6a14850000 rw-p 0024f000 08:08 6979933 /usr/lib64/libstdc++.so.6.0.32
7f6a14850000-7f6a14854000 rw-p 00000000 00:00 0
7f6a14854000-7f6a14855000 r--p 00000000 08:08 6979633 /usr/lib/locale/C.utf8/LC_IDENTIFICATION
7f6a14855000-7f6a14856000 r--p 00000000 08:08 6985978 /usr/lib64/girepository-1.0/xlib-2.0.typelib
7f6a14856000-7f6a14858000 r--p 00000000 08:08 6997309 /usr/lib64/girepository-1.0/PangoOT-1.0.typelib
7f6a14858000-7f6a14868000 r--p 00000000 08:08 6985968 /usr/lib64/girepository-1.0/GObject-2.0.typelib
7f6a14868000-7f6a14872000 r--p 00000000 08:08 6990608 /usr/lib64/gems/ruby/gobject-introspection-4.2.0/gobject_introspection.so
7f6a14872000-7f6a14886000 r-xp 0000a000 08:08 6990608 /usr/lib64/gems/ruby/gobject-introspection-4.2.0/gobject_introspection.so
7f6a14886000-7f6a1488d000 r--p 0001e000 08:08 6990608 /usr/lib64/gems/ruby/gobject-introspection-4.2.0/gobject_introspection.so
7f6a1488d000-7f6a1488f000 r--p 00025000 08:08 6990608 /usr/lib64/gems/ruby/gobject-introspection-4.2.0/gobject_introspection.so
7f6a1488f000-7f6a14890000 rw-p 00027000 08:08 6990608 /usr/lib64/gems/ruby/gobject-introspection-4.2.0/gobject_introspection.so
7f6a14890000-7f6a148a0000 rw-p 00000000 00:00 0
7f6a148a0000-7f6a148a2000 r--p 00000000 08:08 6997380 /usr/lib64/gems/ruby/pango-4.2.0/pango.so
7f6a148a2000-7f6a148a4000 r-xp 00002000 08:08 6997380 /usr/lib64/gems/ruby/pango-4.2.0/pango.so
7f6a148a4000-7f6a148a5000 r--p 00004000 08:08 6997380 /usr/lib64/gems/ruby/pango-4.2.0/pango.so
7f6a148a5000-7f6a148a6000 r--p 00004000 08:08 6997380 /usr/lib64/gems/ruby/pango-4.2.0/pango.so
7f6a148a6000-7f6a148a7000 rw-p 00000000 00:00 0
7f6a148a7000-7f6a148a8000 r--p 00000000 08:08 6985210 /usr/lib64/libXau.so.6.0.0
7f6a148a8000-7f6a148aa000 r-xp 00001000 08:08 6985210 /usr/lib64/libXau.so.6.0.0
7f6a148aa000-7f6a148ab000 r--p 00003000 08:08 6985210 /usr/lib64/libXau.so.6.0.0
7f6a148ab000-7f6a148ac000 r--p 00003000 08:08 6985210 /usr/lib64/libXau.so.6.0.0
7f6a148ac000-7f6a148ad000 rw-p 00000000 00:00 0
7f6a148ad000-7f6a148bb000 r--p 00000000 08:08 6985839 /usr/lib64/libgobject-2.0.so.0.7800.3
7f6a148bb000-7f6a148f1000 r-xp 0000e000 08:08 6985839 /usr/lib64/libgobject-2.0.so.0.7800.3
7f6a148f1000-7f6a14909000 r--p 00044000 08:08 6985839 /usr/lib64/libgobject-2.0.so.0.7800.3
7f6a14909000-7f6a1490c000 r--p 0005c000 08:08 6985839 /usr/lib64/libgobject-2.0.so.0.7800.3
7f6a1490c000-7f6a1490d000 rw-p 0005f000 08:08 6985839 /usr/lib64/libgobject-2.0.so.0.7800.3
7f6a1490d000-7f6a14926000 r--p 00000000 08:08 6990590 /usr/lib64/gems/ruby/glib2-4.2.0/glib2.so
7f6a14926000-7f6a14956000 r-xp 00019000 08:08 6990590 /usr/lib64/gems/ruby/glib2-4.2.0/glib2.so
7f6a14956000-7f6a14969000 r--p 00049000 08:08 6990590 /usr/lib64/gems/ruby/glib2-4.2.0/glib2.so
7f6a14969000-7f6a1496f000 r--p 0005b000 08:08 6990590 /usr/lib64/gems/ruby/glib2-4.2.0/glib2.so
7f6a1496f000-7f6a14970000 rw-p 00061000 08:08 6990590 /usr/lib64/gems/ruby/glib2-4.2.0/glib2.so
7f6a14970000-7f6a149a0000 rw-p 00000000 00:00 0
7f6a149a0000-7f6a149a2000 r--p 00000000 08:08 6993452 /usr/lib64/libXrender.so.1.3.0
7f6a149a2000-7f6a149a9000 r-xp 00002000 08:08 6993452 /usr/lib64/libXrender.so.1.3.0
7f6a149a9000-7f6a149aa000 r--p 00009000 08:08 6993452 /usr/lib64/libXrender.so.1.3.0
7f6a149aa000-7f6a149ab000 r--p 00009000 08:08 6993452 /usr/lib64/libXrender.so.1.3.0
7f6a149ab000-7f6a149ac000 rw-p 0000a000 08:08 6993452 /usr/lib64/libXrender.so.1.3.0
7f6a149ac000-7f6a149ae000 r--p 00000000 08:08 6981703 /usr/lib64/libffi.so.8.1.2
7f6a149ae000-7f6a149b8000 r-xp 00002000 08:08 6981703 /usr/lib64/libffi.so.8.1.2
7f6a149b8000-7f6a149ba000 r--p 0000c000 08:08 6981703 /usr/lib64/libffi.so.8.1.2
7f6a149ba000-7f6a149bb000 r--p 0000d000 08:08 6981703 /usr/lib64/libffi.so.8.1.2
7f6a149bb000-7f6a149bc000 rw-p 0000e000 08:08 6981703 /usr/lib64/libffi.so.8.1.2
7f6a149bc000-7f6a149bf000 r--p 00000000 08:08 6979663 /usr/lib64/libresolv.so.2
7f6a149bf000-7f6a149c7000 r-xp 00003000 08:08 6979663 /usr/lib64/libresolv.so.2
7f6a149c7000-7f6a149c9000 r--p 0000b000 08:08 6979663 /usr/lib64/libresolv.so.2
7f6a149c9000-7f6a149ca000 r--p 0000d000 08:08 6979663 /usr/lib64/libresolv.so.2
7f6a149ca000-7f6a149cb000 rw-p 0000e000 08:08 6979663 /usr/lib64/libresolv.so.2
7f6a149cb000-7f6a149cd000 rw-p 00000000 00:00 0
7f6a149cd000-7f6a149d6000 r--p 00000000 08:08 6985769 /usr/lib64/libhogweed.so.6.8
7f6a149d6000-7f6a149eb000 r-xp 00009000 08:08 6985769 /usr/lib64/libhogweed.so.6.8
7f6a149eb000-7f6a14a0d000 r--p 0001e000 08:08 6985769 /usr/lib64/libhogweed.so.6.8
7f6a14a0d000-7f6a14a0f000 r--p 0003f000 08:08 6985769 /usr/lib64/libhogweed.so.6.8
7f6a14a0f000-7f6a14a10000 rw-p 00000000 00:00 0
7f6a14a10000-7f6a14a1e000 r--p 00000000 08:08 6985771 /usr/lib64/libnettle.so.8.8
7f6a14a1e000-7f6a14a4e000 r-xp 0000e000 08:08 6985771 /usr/lib64/libnettle.so.8.8
7f6a14a4e000-7f6a14a65000 r--p 0003e000 08:08 6985771 /usr/lib64/libnettle.so.8.8
7f6a14a65000-7f6a14a67000 r--p 00055000 08:08 6985771 /usr/lib64/libnettle.so.8.8
7f6a14a67000-7f6a14a68000 rw-p 00057000 08:08 6985771 /usr/lib64/libnettle.so.8.8
7f6a14a68000-7f6a14a6b000 r--p 00000000 08:08 6980263 /usr/lib64/libtasn1.so.6.6.3
7f6a14a6b000-7f6a14a79000 r-xp 00003000 08:08 6980263 /usr/lib64/libtasn1.so.6.6.3
7f6a14a79000-7f6a14a7c000 r--p 00011000 08:08 6980263 /usr/lib64/libtasn1.so.6.6.3
7f6a14a7c000-7f6a14a7d000 r--p 00014000 08:08 6980263 /usr/lib64/libtasn1.so.6.6.3
7f6a14a7d000-7f6a14a7e000 rw-p 00000000 00:00 0
7f6a14a7e000-7f6a14a90000 r--p 00000000 08:08 6980273 /usr/lib64/libunistring.so.5.0.0
7f6a14a90000-7f6a14ac9000 r-xp 00012000 08:08 6980273 /usr/lib64/libunistring.so.5.0.0
7f6a14ac9000-7f6a14c29000 r--p 0004b000 08:08 6980273 /usr/lib64/libunistring.so.5.0.0
7f6a14c29000-7f6a14c2d000 r--p 001ab000 08:08 6980273 /usr/lib64/libunistring.so.5.0.0
7f6a14c2d000-7f6a14c2e000 rw-p 001af000 08:08 6980273 /usr/lib64/libunistring.so.5.0.0
7f6a14c2e000-7f6a14c30000 r--p 00000000 08:08 6980284 /usr/lib64/libidn2.so.0.3.8
7f6a14c30000-7f6a14c34000 r-xp 00002000 08:08 6980284 /usr/lib64/libidn2.so.0.3.8
7f6a14c34000-7f6a14c4e000 r--p 00006000 08:08 6980284 /usr/lib64/libidn2.so.0.3.8
7f6a14c4e000-7f6a14c4f000 r--p 0001f000 08:08 6980284 /usr/lib64/libidn2.so.0.3.8
7f6a14c4f000-7f6a14c50000 rw-p 00000000 00:00 0
7f6a14c50000-7f6a14c85000 r--p 00000000 08:08 6981716 /usr/lib64/libp11-kit.so.0.3.1
7f6a14c85000-7f6a14d4d000 r-xp 00035000 08:08 6981716 /usr/lib64/libp11-kit.so.0.3.1
7f6a14d4d000-7f6a14dc7000 r--p 000fd000 08:08 6981716 /usr/lib64/libp11-kit.so.0.3.1
7f6a14dc7000-7f6a14dd3000 r--p 00176000 08:08 6981716 /usr/lib64/libp11-kit.so.0.3.1
7f6a14dd3000-7f6a14de0000 rw-p 00182000 08:08 6981716 /usr/lib64/libp11-kit.so.0.3.1
7f6a14de0000-7f6a14de1000 rw-p 00000000 00:00 0
7f6a14de1000-7f6a14de6000 r--p 00000000 08:08 6981457 /usr/lib64/libsasl2.so.3.0.0
7f6a14de6000-7f6a14df9000 r-xp 00005000 08:08 6981457 /usr/lib64/libsasl2.so.3.0.0
7f6a14df9000-7f6a14dfe000 r--p 00018000 08:08 6981457 /usr/lib64/libsasl2.so.3.0.0
7f6a14dfe000-7f6a14dff000 r--p 0001d000 08:08 6981457 /usr/lib64/libsasl2.so.3.0.0
7f6a14dff000-7f6a14e00000 rw-p 0001e000 08:08 6981457 /usr/lib64/libsasl2.so.3.0.0
7f6a14e00000-7f6a14e38000 r--p 00000000 08:08 6985784 /usr/lib64/libgnutls.so.30.37.0
7f6a14e38000-7f6a14f7c000 r-xp 00038000 08:08 6985784 /usr/lib64/libgnutls.so.30.37.0
7f6a14f7c000-7f6a15012000 r--p 0017c000 08:08 6985784 /usr/lib64/libgnutls.so.30.37.0
7f6a15012000-7f6a15024000 r--p 00211000 08:08 6985784 /usr/lib64/libgnutls.so.30.37.0
7f6a15024000-7f6a15026000 rw-p 00223000 08:08 6985784 /usr/lib64/libgnutls.so.30.37.0
7f6a15026000-7f6a1502a000 rw-p 00000000 00:00 0
7f6a1502a000-7f6a1502d000 r--s 00000000 08:08 6997282 /usr/lib/fontconfig/cache/18f520a508f13854f77176faf7889ae9-le64.cache-8
7f6a1502d000-7f6a1502e000 r--p 00000000 08:08 6997307 /usr/lib64/girepository-1.0/PangoFT2-1.0.typelib
7f6a1502e000-7f6a15031000 r--p 00000000 08:08 6993703 /usr/lib64/libhiredis.so.1.0.0
7f6a15031000-7f6a1503d000 r-xp 00003000 08:08 6993703 /usr/lib64/libhiredis.so.1.0.0
7f6a1503d000-7f6a15040000 r--p 0000f000 08:08 6993703 /usr/lib64/libhiredis.so.1.0.0
7f6a15040000-7f6a15041000 r--p 00012000 08:08 6993703 /usr/lib64/libhiredis.so.1.0.0
7f6a15041000-7f6a15042000 rw-p 00013000 08:08 6993703 /usr/lib64/libhiredis.so.1.0.0
7f6a15042000-7f6a15047000 r--p 00000000 08:08 6991038 /usr/lib64/libmemcached.so.11.0.0
7f6a15047000-7f6a15062000 r-xp 00005000 08:08 6991038 /usr/lib64/libmemcached.so.11.0.0
7f6a15062000-7f6a1506f000 r--p 00020000 08:08 6991038 /usr/lib64/libmemcached.so.11.0.0
7f6a1506f000-7f6a15070000 r--p 0002d000 08:08 6991038 /usr/lib64/libmemcached.so.11.0.0
7f6a15070000-7f6a15071000 rw-p 0002e000 08:08 6991038 /usr/lib64/libmemcached.so.11.0.0
7f6a15071000-7f6a150cf000 r--p 00000000 08:08 6993710 /usr/lib64/libyaz.so.5.0.0
7f6a150cf000-7f6a1514f000 r-xp 0005e000 08:08 6993710 /usr/lib64/libyaz.so.5.0.0
7f6a1514f000-7f6a15175000 r--p 000de000 08:08 6993710 /usr/lib64/libyaz.so.5.0.0
7f6a15175000-7f6a15178000 r--p 00103000 08:08 6993710 /usr/lib64/libyaz.so.5.0.0
7f6a15178000-7f6a1521f000 rw-p 00106000 08:08 6993710 /usr/lib64/libyaz.so.5.0.0
7f6a1521f000-7f6a15250000 rw-p 00000000 00:00 0
7f6a15250000-7f6a15251000 r--p 00000000 08:08 6985972 /usr/lib64/girepository-1.0/fontconfig-2.0.typelib
7f6a15251000-7f6a15252000 r--p 00000000 08:08 6985272 /usr/lib64/libxcb-shm.so.0.0.0
7f6a15252000-7f6a15253000 r-xp 00001000 08:08 6985272 /usr/lib64/libxcb-shm.so.0.0.0
7f6a15253000-7f6a15254000 r--p 00002000 08:08 6985272 /usr/lib64/libxcb-shm.so.0.0.0
7f6a15254000-7f6a15255000 r--p 00002000 08:08 6985272 /usr/lib64/libxcb-shm.so.0.0.0
7f6a15255000-7f6a15256000 rw-p 00003000 08:08 6985272 /usr/lib64/libxcb-shm.so.0.0.0
7f6a15256000-7f6a15257000 r--p 00000000 08:08 6979379 /usr/lib64/gconv/CP932.so
7f6a15257000-7f6a15259000 r-xp 00001000 08:08 6979379 /usr/lib64/gconv/CP932.so
7f6a15259000-7f6a1526e000 r--p 00003000 08:08 6979379 /usr/lib64/gconv/CP932.so
7f6a1526e000-7f6a1526f000 r--p 00017000 08:08 6979379 /usr/lib64/gconv/CP932.so
7f6a1526f000-7f6a15280000 rw-p 00000000 00:00 0
7f6a15280000-7f6a15282000 r--p 00000000 08:08 6997369 /usr/lib64/gems/ruby/cairo-gobject-4.2.0/cairo_gobject.so
7f6a15282000-7f6a15284000 r-xp 00002000 08:08 6997369 /usr/lib64/gems/ruby/cairo-gobject-4.2.0/cairo_gobject.so
7f6a15284000-7f6a15285000 r--p 00004000 08:08 6997369 /usr/lib64/gems/ruby/cairo-gobject-4.2.0/cairo_gobject.so
7f6a15285000-7f6a15286000 r--p 00004000 08:08 6997369 /usr/lib64/gems/ruby/cairo-gobject-4.2.0/cairo_gobject.so
7f6a15286000-7f6a15287000 rw-p 00000000 00:00 0
7f6a15287000-7f6a1528b000 r--p 00000000 08:08 6979912 /usr/lib64/liblzma.so.5.4.5
7f6a1528b000-7f6a152ad000 r-xp 00004000 08:08 6979912 /usr/lib64/liblzma.so.5.4.5
7f6a152ad000-7f6a152b8000 r--p 00026000 08:08 6979912 /usr/lib64/liblzma.so.5.4.5
7f6a152b8000-7f6a152b9000 r--p 00031000 08:08 6979912 /usr/lib64/liblzma.so.5.4.5
7f6a152b9000-7f6a152ba000 rw-p 00000000 00:00 0
7f6a152ba000-7f6a152ee000 r--p 00000000 08:08 6981551 /usr/lib64/libxml2.so.2.12.3
7f6a152ee000-7f6a153da000 r-xp 00034000 08:08 6981551 /usr/lib64/libxml2.so.2.12.3
7f6a153da000-7f6a15419000 r--p 00120000 08:08 6981551 /usr/lib64/libxml2.so.2.12.3
7f6a15419000-7f6a15424000 r--p 0015e000 08:08 6981551 /usr/lib64/libxml2.so.2.12.3
7f6a15424000-7f6a15425000 rw-p 00169000 08:08 6981551 /usr/lib64/libxml2.so.2.12.3
7f6a15425000-7f6a15426000 rw-p 00000000 00:00 0
7f6a15426000-7f6a15430000 r--p 00000000 08:08 6986168 /usr/lib64/libxslt.so.1.1.39
7f6a15430000-7f6a1545a000 r-xp 0000a000 08:08 6986168 /usr/lib64/libxslt.so.1.1.39
7f6a1545a000-7f6a15467000 r--p 00034000 08:08 6986168 /usr/lib64/libxslt.so.1.1.39
7f6a15467000-7f6a15469000 r--p 00040000 08:08 6986168 /usr/lib64/libxslt.so.1.1.39
7f6a15469000-7f6a1546a000 rw-p 00042000 08:08 6986168 /usr/lib64/libxslt.so.1.1.39
7f6a1546a000-7f6a1546e000 r--p 00000000 08:08 6986165 /usr/lib64/libexslt.so.0.8.21
7f6a1546e000-7f6a1547c000 r-xp 00004000 08:08 6986165 /usr/lib64/libexslt.so.0.8.21
7f6a1547c000-7f6a1547f000 r--p 00012000 08:08 6986165 /usr/lib64/libexslt.so.0.8.21
7f6a1547f000-7f6a15480000 r--p 00015000 08:08 6986165 /usr/lib64/libexslt.so.0.8.21
7f6a15480000-7f6a15481000 rw-p 00016000 08:08 6986165 /usr/lib64/libexslt.so.0.8.21
7f6a15481000-7f6a1548f000 r--p 00000000 08:08 7000159 /usr/lib64/gems/ruby/nokogiri-1.15.5/nokogiri/nokogiri.so
7f6a1548f000-7f6a154be000 r-xp 0000e000 08:08 7000159 /usr/lib64/gems/ruby/nokogiri-1.15.5/nokogiri/nokogiri.so
7f6a154be000-7f6a154fb000 r--p 0003d000 08:08 7000159 /usr/lib64/gems/ruby/nokogiri-1.15.5/nokogiri/nokogiri.so
7f6a154fb000-7f6a154ff000 r--p 00079000 08:08 7000159 /usr/lib64/gems/ruby/nokogiri-1.15.5/nokogiri/nokogiri.so
7f6a154ff000-7f6a15500000 rw-p 0007d000 08:08 7000159 /usr/lib64/gems/ruby/nokogiri-1.15.5/nokogiri/nokogiri.so
7f6a15500000-7f6a15510000 rw-p 00000000 00:00 0
7f6a15510000-7f6a15511000 r--p 00000000 08:08 6997308 /usr/lib64/girepository-1.0/PangoFc-1.0.typelib
7f6a15511000-7f6a15513000 r--p 00000000 08:08 6989378 /usr/lib64/gems/ruby/json-2.7.1/json/ext/generator.so
7f6a15513000-7f6a15519000 r-xp 00002000 08:08 6989378 /usr/lib64/gems/ruby/json-2.7.1/json/ext/generator.so
7f6a15519000-7f6a1551b000 r--p 00008000 08:08 6989378 /usr/lib64/gems/ruby/json-2.7.1/json/ext/generator.so
7f6a1551b000-7f6a1551c000 r--p 00009000 08:08 6989378 /usr/lib64/gems/ruby/json-2.7.1/json/ext/generator.so
7f6a1551c000-7f6a1551d000 rw-p 00000000 00:00 0
7f6a1551d000-7f6a15521000 r--p 00000000 08:08 6984554 /usr/lib64/ruby/zlib.so
7f6a15521000-7f6a1552b000 r-xp 00004000 08:08 6984554 /usr/lib64/ruby/zlib.so
7f6a1552b000-7f6a1552e000 r--p 0000e000 08:08 6984554 /usr/lib64/ruby/zlib.so
7f6a1552e000-7f6a1552f000 r--p 00010000 08:08 6984554 /usr/lib64/ruby/zlib.so
7f6a1552f000-7f6a155b0000 rw-p 00000000 00:00 0
7f6a155b0000-7f6a155b5000 r--p 00000000 08:08 6986346 /usr/lib64/girepository-1.0/GdkPixbuf-2.0.typelib
7f6a155b5000-7f6a155b7000 r--p 00000000 08:08 6989379 /usr/lib64/gems/ruby/json-2.7.1/json/ext/parser.so
7f6a155b7000-7f6a155bb000 r-xp 00002000 08:08 6989379 /usr/lib64/gems/ruby/json-2.7.1/json/ext/parser.so
7f6a155bb000-7f6a155bc000 r--p 00006000 08:08 6989379 /usr/lib64/gems/ruby/json-2.7.1/json/ext/parser.so
7f6a155bc000-7f6a155bd000 r--p 00006000 08:08 6989379 /usr/lib64/gems/ruby/json-2.7.1/json/ext/parser.so
7f6a155bd000-7f6a155be000 rw-p 00000000 00:00 0
7f6a155be000-7f6a155c5000 r--p 00000000 08:08 6984550 /usr/lib64/ruby/socket.so
7f6a155c5000-7f6a155e7000 r-xp 00007000 08:08 6984550 /usr/lib64/ruby/socket.so
7f6a155e7000-7f6a155ee000 r--p 00029000 08:08 6984550 /usr/lib64/ruby/socket.so
7f6a155ee000-7f6a155ef000 r--p 00030000 08:08 6984550 /usr/lib64/ruby/socket.so
7f6a155ef000-7f6a155f0000 rw-p 00031000 08:08 6984550 /usr/lib64/ruby/socket.so
7f6a155f0000-7f6a15600000 rw-p 00000000 00:00 0
7f6a15600000-7f6a15602000 r--p 00000000 08:08 6997306 /usr/lib64/girepository-1.0/PangoCairo-1.0.typelib
7f6a15602000-7f6a15606000 r--p 00000000 08:08 6984466 /usr/lib64/ruby/date_core.so
7f6a15606000-7f6a15635000 r-xp 00004000 08:08 6984466 /usr/lib64/ruby/date_core.so
7f6a15635000-7f6a1563d000 r--p 00033000 08:08 6984466 /usr/lib64/ruby/date_core.so
7f6a1563d000-7f6a1563e000 r--p 0003a000 08:08 6984466 /usr/lib64/ruby/date_core.so
7f6a1563e000-7f6a1563f000 rw-p 0003b000 08:08 6984466 /usr/lib64/ruby/date_core.so
7f6a1563f000-7f6a15700000 rw-p 00000000 00:00 0
7f6a15700000-7f6a15702000 r--p 00000000 08:08 6985837 /usr/lib64/libgmodule-2.0.so.0.7800.3
7f6a15702000-7f6a15704000 r-xp 00002000 08:08 6985837 /usr/lib64/libgmodule-2.0.so.0.7800.3
7f6a15704000-7f6a15705000 r--p 00004000 08:08 6985837 /usr/lib64/libgmodule-2.0.so.0.7800.3
7f6a15705000-7f6a15706000 r--p 00004000 08:08 6985837 /usr/lib64/libgmodule-2.0.so.0.7800.3
7f6a15706000-7f6a15707000 rw-p 00005000 08:08 6985837 /usr/lib64/libgmodule-2.0.so.0.7800.3
7f6a15707000-7f6a15709000 r--p 00000000 08:08 6991036 /usr/lib64/libhashkit.so.2.0.0
7f6a15709000-7f6a1570c000 r-xp 00002000 08:08 6991036 /usr/lib64/libhashkit.so.2.0.0
7f6a1570c000-7f6a1570d000 r--p 00005000 08:08 6991036 /usr/lib64/libhashkit.so.2.0.0
7f6a1570d000-7f6a1570e000 r--p 00006000 08:08 6991036 /usr/lib64/libhashkit.so.2.0.0
7f6a1570e000-7f6a1570f000 rw-p 00007000 08:08 6991036 /usr/lib64/libhashkit.so.2.0.0
7f6a1570f000-7f6a15711000 r--p 00000000 08:08 6989049 /usr/lib64/libyaml-0.so.2.0.9
7f6a15711000-7f6a1572a000 r-xp 00002000 08:08 6989049 /usr/lib64/libyaml-0.so.2.0.9
7f6a1572a000-7f6a1572e000 r--p 0001b000 08:08 6989049 /usr/lib64/libyaml-0.so.2.0.9
7f6a1572e000-7f6a1572f000 r--p 0001e000 08:08 6989049 /usr/lib64/libyaml-0.so.2.0.9
7f6a1572f000-7f6a15780000 rw-p 00000000 00:00 0
7f6a15780000-7f6a15782000 r--p 00000000 08:08 6991042 /usr/lib64/libmemcachedutil.so.2.0.0
7f6a15782000-7f6a15784000 r-xp 00002000 08:08 6991042 /usr/lib64/libmemcachedutil.so.2.0.0
7f6a15784000-7f6a15785000 r--p 00004000 08:08 6991042 /usr/lib64/libmemcachedutil.so.2.0.0
7f6a15785000-7f6a15786000 r--p 00004000 08:08 6991042 /usr/lib64/libmemcachedutil.so.2.0.0
7f6a15786000-7f6a15787000 rw-p 00005000 08:08 6991042 /usr/lib64/libmemcachedutil.so.2.0.0
7f6a15787000-7f6a15789000 r--p 00000000 08:08 6984536 /usr/lib64/ruby/etc.so
7f6a15789000-7f6a1578c000 r-xp 00002000 08:08 6984536 /usr/lib64/ruby/etc.so
7f6a1578c000-7f6a1578e000 r--p 00005000 08:08 6984536 /usr/lib64/ruby/etc.so
7f6a1578e000-7f6a1578f000 r--p 00006000 08:08 6984536 /usr/lib64/ruby/etc.so
7f6a1578f000-7f6a158a0000 rw-p 00000000 00:00 0
7f6a158a0000-7f6a158a1000 r--p 00000000 08:08 6985973 /usr/lib64/girepository-1.0/freetype2-2.0.typelib
7f6a158a1000-7f6a158a2000 r--p 00000000 08:08 6990641 /usr/lib64/gems/ruby/gio2-4.2.0/gio2.so
7f6a158a2000-7f6a158a3000 r-xp 00001000 08:08 6990641 /usr/lib64/gems/ruby/gio2-4.2.0/gio2.so
7f6a158a3000-7f6a158a4000 r--p 00002000 08:08 6990641 /usr/lib64/gems/ruby/gio2-4.2.0/gio2.so
7f6a158a4000-7f6a158a5000 r--p 00002000 08:08 6990641 /usr/lib64/gems/ruby/gio2-4.2.0/gio2.so
7f6a158a5000-7f6a158a6000 rw-p 00000000 00:00 0
7f6a158a6000-7f6a158a9000 r--p 00000000 08:08 6989691 /usr/lib64/gems/ruby/psych-5.1.2/psych.so
7f6a158a9000-7f6a158ad000 r-xp 00003000 08:08 6989691 /usr/lib64/gems/ruby/psych-5.1.2/psych.so
7f6a158ad000-7f6a158ae000 r--p 00007000 08:08 6989691 /usr/lib64/gems/ruby/psych-5.1.2/psych.so
7f6a158ae000-7f6a158af000 r--p 00008000 08:08 6989691 /usr/lib64/gems/ruby/psych-5.1.2/psych.so
7f6a158af000-7f6a15940000 rw-p 00000000 00:00 0
7f6a15940000-7f6a15944000 r--p 00000000 08:08 6985971 /usr/lib64/girepository-1.0/cairo-1.0.typelib
7f6a15944000-7f6a15947000 r--p 00000000 08:08 6984551 /usr/lib64/ruby/stringio.so
7f6a15947000-7f6a1594c000 r-xp 00003000 08:08 6984551 /usr/lib64/ruby/stringio.so
7f6a1594c000-7f6a1594e000 r--p 00008000 08:08 6984551 /usr/lib64/ruby/stringio.so
7f6a1594e000-7f6a1594f000 r--p 00009000 08:08 6984551 /usr/lib64/ruby/stringio.so
7f6a1594f000-7f6a15a10000 rw-p 00000000 00:00 0
7f6a15a10000-7f6a15a11000 r--p 00000000 08:08 6985967 /usr/lib64/girepository-1.0/GModule-2.0.typelib
7f6a15a11000-7f6a15a12000 rw-p 00000000 00:00 0
7f6a15a12000-7f6a15a13000 r--p 00000000 08:08 6984535 /usr/lib64/ruby/erb/escape.so
7f6a15a13000-7f6a15a14000 r-xp 00001000 08:08 6984535 /usr/lib64/ruby/erb/escape.so
7f6a15a14000-7f6a15a15000 r--p 00002000 08:08 6984535 /usr/lib64/ruby/erb/escape.so
7f6a15a15000-7f6a15a16000 r--p 00002000 08:08 6984535 /usr/lib64/ruby/erb/escape.so
7f6a15a16000-7f6a15a17000 rw-p 00000000 00:00 0
7f6a15a17000-7f6a15a19000 r--p 00000000 08:08 6984552 /usr/lib64/ruby/strscan.so
7f6a15a19000-7f6a15a1c000 r-xp 00002000 08:08 6984552 /usr/lib64/ruby/strscan.so
7f6a15a1c000-7f6a15a1d000 r--p 00005000 08:08 6984552 /usr/lib64/ruby/strscan.so
7f6a15a1d000-7f6a15a1e000 r--p 00006000 08:08 6984552 /usr/lib64/ruby/strscan.so
7f6a15a1e000-7f6a15a1f000 rw-p 00000000 00:00 0
7f6a15a1f000-7f6a15a20000 ---p 00000000 00:00 0
7f6a15a20000-7f6a15ac1000 rw-p 00000000 00:00 0
7f6a15ac1000-7f6a15ac2000 ---p 00000000 00:00 0
7f6a15ac2000-7f6a15b63000 rw-p 00000000 00:00 0
7f6a15b63000-7f6a15b64000 ---p 00000000 00:00 0
7f6a15b64000-7f6a15c05000 rw-p 00000000 00:00 0
7f6a15c05000-7f6a15c06000 ---p 00000000 00:00 0
7f6a15c06000-7f6a15ca7000 rw-p 00000000 00:00 0
7f6a15ca7000-7f6a15ca8000 ---p 00000000 00:00 0
7f6a15ca8000-7f6a15d49000 rw-p 00000000 00:00 0
7f6a15d49000-7f6a15d4a000 ---p 00000000 00:00 0
7f6a15d4a000-7f6a15deb000 rw-p 00000000 00:00 0
7f6a15deb000-7f6a15dec000 ---p 00000000 00:00 0
7f6a15dec000-7f6a15e8d000 rw-p 00000000 00:00 0
7f6a15e8d000-7f6a15e8e000 ---p 00000000 00:00 0
7f6a15e8e000-7f6a15f2f000 rw-p 00000000 00:00 0
7f6a15f2f000-7f6a15f30000 ---p 00000000 00:00 0
7f6a15f30000-7f6a15fd1000 rw-p 00000000 00:00 0
7f6a15fd1000-7f6a15fd2000 ---p 00000000 00:00 0
7f6a15fd2000-7f6a16073000 rw-p 00000000 00:00 0
7f6a16073000-7f6a16074000 ---p 00000000 00:00 0
7f6a16074000-7f6a16115000 rw-p 00000000 00:00 0
7f6a16115000-7f6a16116000 ---p 00000000 00:00 0
7f6a16116000-7f6a161b7000 rw-p 00000000 00:00 0
7f6a161b7000-7f6a161b8000 ---p 00000000 00:00 0
7f6a161b8000-7f6a16259000 rw-p 00000000 00:00 0
7f6a16259000-7f6a1625a000 ---p 00000000 00:00 0
7f6a1625a000-7f6a162fb000 rw-p 00000000 00:00 0
7f6a162fb000-7f6a162fc000 ---p 00000000 00:00 0
7f6a162fc000-7f6a1639d000 rw-p 00000000 00:00 0
7f6a1639d000-7f6a1639e000 ---p 00000000 00:00 0
7f6a1639e000-7f6a1643f000 rw-p 00000000 00:00 0
7f6a1643f000-7f6a16440000 ---p 00000000 00:00 0
7f6a16440000-7f6a164e1000 rw-p 00000000 00:00 0
7f6a164e1000-7f6a164e2000 ---p 00000000 00:00 0
7f6a164e2000-7f6a16583000 rw-p 00000000 00:00 0
7f6a16583000-7f6a16584000 ---p 00000000 00:00 0
7f6a16584000-7f6a16625000 rw-p 00000000 00:00 0
7f6a16625000-7f6a16626000 ---p 00000000 00:00 0
7f6a16626000-7f6a166c7000 rw-p 00000000 00:00 0
7f6a166c7000-7f6a166c8000 ---p 00000000 00:00 0
7f6a166c8000-7f6a16769000 rw-p 00000000 00:00 0
7f6a16769000-7f6a1676a000 ---p 00000000 00:00 0
7f6a1676a000-7f6a1680b000 rw-p 00000000 00:00 0
7f6a1680b000-7f6a1680c000 ---p 00000000 00:00 0
7f6a1680c000-7f6a168ad000 rw-p 00000000 00:00 0
7f6a168ad000-7f6a168ae000 ---p 00000000 00:00 0
7f6a168ae000-7f6a1694f000 rw-p 00000000 00:00 0
7f6a1694f000-7f6a16950000 ---p 00000000 00:00 0
7f6a16950000-7f6a169f1000 rw-p 00000000 00:00 0
7f6a169f1000-7f6a169f2000 ---p 00000000 00:00 0
7f6a169f2000-7f6a16a93000 rw-p 00000000 00:00 0
7f6a16a93000-7f6a16a94000 ---p 00000000 00:00 0
7f6a16a94000-7f6a16b35000 rw-p 00000000 00:00 0
7f6a16b35000-7f6a16b36000 ---p 00000000 00:00 0
7f6a16b36000-7f6a16bd7000 rw-p 00000000 00:00 0
7f6a16bd7000-7f6a16bd8000 ---p 00000000 00:00 0
7f6a16bd8000-7f6a16c79000 rw-p 00000000 00:00 0
7f6a16c79000-7f6a16c7a000 ---p 00000000 00:00 0
7f6a16c7a000-7f6a16d1b000 rw-p 00000000 00:00 0
7f6a16d1b000-7f6a16d1c000 ---p 00000000 00:00 0
7f6a16d1c000-7f6a16dbd000 rw-p 00000000 00:00 0
7f6a16dbd000-7f6a16dbe000 ---p 00000000 00:00 0
7f6a16dbe000-7f6a16e5f000 rw-p 00000000 00:00 0
7f6a16e5f000-7f6a16e60000 ---p 00000000 00:00 0
7f6a16e60000-7f6a176b0000 rw-p 00000000 00:00 0
7f6a176b0000-7f6a176b1000 r-xp 0000a000 08:08 6981703 /usr/lib64/libffi.so.8.1.2
7f6a176b1000-7f6a176b2000 rw-p 00000000 00:00 0
7f6a176b2000-7f6a176b3000 r--p 00000000 08:08 6979636 /usr/lib/locale/C.utf8/LC_MESSAGES/SYS_LC_MESSAGES
7f6a176b3000-7f6a176b5000 r--p 00000000 08:08 6984463 /usr/lib64/ruby/cgi/escape.so
7f6a176b5000-7f6a176b7000 r-xp 00002000 08:08 6984463 /usr/lib64/ruby/cgi/escape.so
7f6a176b7000-7f6a176b8000 r--p 00004000 08:08 6984463 /usr/lib64/ruby/cgi/escape.so
7f6a176b8000-7f6a176b9000 r--p 00004000 08:08 6984463 /usr/lib64/ruby/cgi/escape.so
7f6a176b9000-7f6a176ba000 rw-p 00000000 00:00 0
7f6a176ba000-7f6a176bb000 r--p 00000000 08:08 6984541 /usr/lib64/ruby/monitor.so
7f6a176bb000-7f6a176bc000 r-xp 00001000 08:08 6984541 /usr/lib64/ruby/monitor.so
7f6a176bc000-7f6a176bd000 r--p 00002000 08:08 6984541 /usr/lib64/ruby/monitor.so
7f6a176bd000-7f6a176be000 r--p 00002000 08:08 6984541 /usr/lib64/ruby/monitor.so
7f6a176be000-7f6a30abf000 rw-p 00000000 00:00 0
7f6a30abf000-7f6a30ac1000 r--p 00000000 08:08 6999731 /usr/lib64/gems/ruby/zoom-0.5.0/zoom.so
7f6a30ac1000-7f6a30ac5000 r-xp 00002000 08:08 6999731 /usr/lib64/gems/ruby/zoom-0.5.0/zoom.so
7f6a30ac5000-7f6a30ac6000 r--p 00006000 08:08 6999731 /usr/lib64/gems/ruby/zoom-0.5.0/zoom.so
7f6a30ac6000-7f6a30ac7000 r--p 00007000 08:08 6999731 /usr/lib64/gems/ruby/zoom-0.5.0/zoom.so
7f6a30ac7000-7f6a30ac8000 rw-p 00000000 00:00 0
7f6a30ac8000-7f6a30aca000 r--p 00000000 08:08 7003637 /usr/lib64/gems/ruby/racc-1.7.3/racc/cparse.so
7f6a30aca000-7f6a30acd000 r-xp 00002000 08:08 7003637 /usr/lib64/gems/ruby/racc-1.7.3/racc/cparse.so
7f6a30acd000-7f6a30ace000 r--p 00005000 08:08 7003637 /usr/lib64/gems/ruby/racc-1.7.3/racc/cparse.so
7f6a30ace000-7f6a30acf000 r--p 00005000 08:08 7003637 /usr/lib64/gems/ruby/racc-1.7.3/racc/cparse.so
7f6a30acf000-7f6a30b00000 rw-p 00000000 00:00 0
7f6a30b00000-7f6a30b01000 r--p 00000000 08:08 6984540 /usr/lib64/ruby/io/wait.so
7f6a30b01000-7f6a30b02000 r-xp 00001000 08:08 6984540 /usr/lib64/ruby/io/wait.so
7f6a30b02000-7f6a30b03000 r--p 00002000 08:08 6984540 /usr/lib64/ruby/io/wait.so
7f6a30b03000-7f6a30b04000 r--p 00002000 08:08 6984540 /usr/lib64/ruby/io/wait.so
7f6a30b04000-7f6a30b05000 rw-p 00000000 00:00 0
7f6a30b05000-7f6a30b07000 r--p 00000000 08:08 6984545 /usr/lib64/ruby/pathname.so
7f6a30b07000-7f6a30b0c000 r-xp 00002000 08:08 6984545 /usr/lib64/ruby/pathname.so
7f6a30b0c000-7f6a30b0e000 r--p 00007000 08:08 6984545 /usr/lib64/ruby/pathname.so
7f6a30b0e000-7f6a30b0f000 r--p 00008000 08:08 6984545 /usr/lib64/ruby/pathname.so
7f6a30b0f000-7f6a30b30000 rw-p 00000000 00:00 0
7f6a30b30000-7f6a30b31000 r--p 00000000 08:08 6984521 /usr/lib64/ruby/enc/trans/transdb.so
7f6a30b31000-7f6a30b32000 r-xp 00001000 08:08 6984521 /usr/lib64/ruby/enc/trans/transdb.so
7f6a30b32000-7f6a30b33000 r--p 00002000 08:08 6984521 /usr/lib64/ruby/enc/trans/transdb.so
7f6a30b33000-7f6a30b34000 r--p 00002000 08:08 6984521 /usr/lib64/ruby/enc/trans/transdb.so
7f6a30b34000-7f6a30c36000 rw-p 00000000 00:00 0
7f6a30c36000-7f6a30c3d000 r--s 00000000 08:08 6979736 /usr/lib64/gconv/gconv-modules.cache
7f6a30c3d000-7f6a30c96000 r--p 00000000 08:08 6979632 /usr/lib/locale/C.utf8/LC_CTYPE
7f6a30c96000-7f6a30cbc000 r--p 00000000 08:08 6979654 /usr/lib64/libc.so.6
7f6a30cbc000-7f6a30e1d000 r-xp 00026000 08:08 6979654 /usr/lib64/libc.so.6
7f6a30e1d000-7f6a30e6b000 r--p 00187000 08:08 6979654 /usr/lib64/libc.so.6
7f6a30e6b000-7f6a30e6f000 r--p 001d4000 08:08 6979654 /usr/lib64/libc.so.6
7f6a30e6f000-7f6a30e71000 rw-p 001d8000 08:08 6979654 /usr/lib64/libc.so.6
7f6a30e71000-7f6a30e79000 rw-p 00000000 00:00 0
7f6a30e79000-7f6a30e89000 r--p 00000000 08:08 6979657 /usr/lib64/libm.so.6
7f6a30e89000-7f6a30eff000 r-xp 00010000 08:08 6979657 /usr/lib64/libm.so.6
7f6a30eff000-7f6a30f59000 r--p 00086000 08:08 6979657 /usr/lib64/libm.so.6
7f6a30f59000-7f6a30f5a000 r--p 000df000 08:08 6979657 /usr/lib64/libm.so.6
7f6a30f5a000-7f6a30f5b000 rw-p 000e0000 08:08 6979657 /usr/lib64/libm.so.6
7f6a30f5b000-7f6a30f6c000 r--p 00000000 08:08 6980033 /usr/lib64/libgmp.so.10.4.1
7f6a30f6c000-7f6a30fe8000 r-xp 00011000 08:08 6980033 /usr/lib64/libgmp.so.10.4.1
7f6a30fe8000-7f6a30ffd000 r--p 0008d000 08:08 6980033 /usr/lib64/libgmp.so.10.4.1
7f6a30ffd000-7f6a30fff000 r--p 000a1000 08:08 6980033 /usr/lib64/libgmp.so.10.4.1
7f6a30fff000-7f6a31000000 rw-p 000a3000 08:08 6980033 /usr/lib64/libgmp.so.10.4.1
7f6a31000000-7f6a3104b000 r--p 00000000 08:08 6984462 /usr/lib64/libruby.so.3.3.0
7f6a3104b000-7f6a313e0000 r-xp 0004b000 08:08 6984462 /usr/lib64/libruby.so.3.3.0
7f6a313e0000-7f6a3154c000 r--p 003e0000 08:08 6984462 /usr/lib64/libruby.so.3.3.0
7f6a3154c000-7f6a31565000 r--p 0054c000 08:08 6984462 /usr/lib64/libruby.so.3.3.0
7f6a31565000-7f6a31566000 rw-p 00565000 08:08 6984462 /usr/lib64/libruby.so.3.3.0
7f6a31566000-7f6a3157e000 rw-p 00000000 00:00 0
7f6a3157e000-7f6a31581000 r--p 00000000 08:08 6976691 /usr/lib64/libgcc_s-13-20231205.so.1
7f6a31581000-7f6a3159c000 r-xp 00003000 08:08 6976691 /usr/lib64/libgcc_s-13-20231205.so.1
7f6a3159c000-7f6a315a0000 r--p 0001e000 08:08 6976691 /usr/lib64/libgcc_s-13-20231205.so.1
7f6a315a0000-7f6a315a1000 r--p 00021000 08:08 6976691 /usr/lib64/libgcc_s-13-20231205.so.1
7f6a315a1000-7f6a315a4000 rw-p 00000000 00:00 0
7f6a315a4000-7f6a315a6000 r--p 00000000 08:08 6980054 /usr/lib64/libcrypt.so.2.0.0
7f6a315a6000-7f6a315ba000 r-xp 00002000 08:08 6980054 /usr/lib64/libcrypt.so.2.0.0
7f6a315ba000-7f6a315d3000 r--p 00016000 08:08 6980054 /usr/lib64/libcrypt.so.2.0.0
7f6a315d3000-7f6a315d4000 r--p 0002e000 08:08 6980054 /usr/lib64/libcrypt.so.2.0.0
7f6a315d4000-7f6a315dd000 rw-p 00000000 00:00 0
7f6a315dd000-7f6a315e0000 r--p 00000000 08:08 6979909 /usr/lib64/libz.so.1.2.13.zlib-ng
7f6a315e0000-7f6a315f6000 r-xp 00003000 08:08 6979909 /usr/lib64/libz.so.1.2.13.zlib-ng
7f6a315f6000-7f6a315fd000 r--p 00019000 08:08 6979909 /usr/lib64/libz.so.1.2.13.zlib-ng
7f6a315fd000-7f6a315fe000 r--p 00020000 08:08 6979909 /usr/lib64/libz.so.1.2.13.zlib-ng
7f6a315fe000-7f6a31601000 rw-p 00000000 00:00 0
7f6a31601000-7f6a31602000 r--p 00000000 08:08 6984477 /usr/lib64/ruby/enc/encdb.so
7f6a31602000-7f6a31603000 r-xp 00001000 08:08 6984477 /usr/lib64/ruby/enc/encdb.so
7f6a31603000-7f6a31604000 r--p 00002000 08:08 6984477 /usr/lib64/ruby/enc/encdb.so
7f6a31604000-7f6a31605000 r--p 00002000 08:08 6984477 /usr/lib64/ruby/enc/encdb.so
7f6a31605000-7f6a31606000 rw-p 00000000 00:00 0
7f6a31606000-7f6a31607000 r--p 00000000 08:08 6979651 /usr/lib64/ld-linux-x86-64.so.2
7f6a31607000-7f6a3162e000 r-xp 00001000 08:08 6979651 /usr/lib64/ld-linux-x86-64.so.2
7f6a3162e000-7f6a31638000 r--p 00028000 08:08 6979651 /usr/lib64/ld-linux-x86-64.so.2
7f6a31638000-7f6a3163a000 r--p 00031000 08:08 6979651 /usr/lib64/ld-linux-x86-64.so.2
7f6a3163a000-7f6a3163c000 rw-p 00033000 08:08 6979651 /usr/lib64/ld-linux-x86-64.so.2
7ffdbe4fa000-7ffdbecf9000 rw-p 00000000 00:00 0 [stack]
7ffdbed8a000-7ffdbed8e000 r--p 00000000 00:00 0 [vvar]
7ffdbed8e000-7ffdbed90000 r-xp 00000000 00:00 0 [vdso]
ffffffffff600000-ffffffffff601000 --xp 00000000 00:00 0 [vsyscall]
/usr/bin/ruby -rbundler/setup -rsimplecov -Ilib -w -I/usr/share/gems/gems/rspec-support-3.12.1/lib:/usr/share/gems/gems/rspec-core-3.12.2/lib /usr/share/gems/gems/rspec-core-3.12.2/exe/rspec --pattern spec/alexandria/\*\*/\*_spec.rb failed
</code></pre>
<p>I have not tried to minimize failure test (it may take time..)</p>
Ruby master - Bug #20076 (Open): M:N scheduler is stuck on macOS with RUBY_MN_THREADS=1
https://redmine.ruby-lang.org/issues/20076
2023-12-21T03:17:50Z
hsbt (Hiroshi SHIBATA)
hsbt@ruby-lang.org
<p>This is known issue. I already shared this to ko1.</p>
<p>The version of <a href="https://github.com/ruby/ruby/commit/28e3886689c71b22487dd5d0cb62f3b5ed0a77cc" class="external">https://github.com/ruby/ruby/commit/28e3886689c71b22487dd5d0cb62f3b5ed0a77cc</a> is crashed with <code>make exam</code>.</p>
<p>This is happend with webrick test on <code>make test-tool</code>.</p>
<p>My environment is macOS Sonoma 14.3 beta1 and</p>
<pre><code>$ pkgutil --pkg-info=com.apple.pkg.CLTools_Executables
package-id: com.apple.pkg.CLTools_Executables
version: 15.1.0.0.1.1700200546
volume: /
location: /
install-time: 1702331495
</code></pre>
Ruby master - Bug #20067 (Open): IO.pipe `int_enc` and `ext_enc` not working as documented?
https://redmine.ruby-lang.org/issues/20067
2023-12-15T13:30:51Z
byroot (Jean Boussier)
byroot@ruby-lang.org
<p>From the documentation:</p>
<blockquote>
<p>pipe(ext_enc, int_enc, **opts)</p>
</blockquote>
<blockquote>
<p>If argument int_enc is given, it must be an Encoding object or encoding name string that specifies the internal encoding to be used; if argument ext_enc is also given, it must be an Encoding object or encoding name string that specifies the external encoding to be used.</p>
</blockquote>
<p>Test script:</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="n">ios</span> <span class="o">=</span> <span class="no">IO</span><span class="p">.</span><span class="nf">pipe</span><span class="p">(</span><span class="no">Encoding</span><span class="o">::</span><span class="no">BINARY</span><span class="p">,</span> <span class="no">Encoding</span><span class="o">::</span><span class="no">BINARY</span><span class="p">)</span>
<span class="nb">p</span> <span class="p">[</span><span class="ss">:internal</span><span class="p">,</span> <span class="o">*</span><span class="n">ios</span><span class="p">.</span><span class="nf">map</span><span class="p">(</span><span class="o">&</span><span class="ss">:internal_encoding</span><span class="p">)]</span>
<span class="nb">p</span> <span class="p">[</span><span class="ss">:external</span><span class="p">,</span> <span class="o">*</span><span class="n">ios</span><span class="p">.</span><span class="nf">map</span><span class="p">(</span><span class="o">&</span><span class="ss">:external_encoding</span><span class="p">)]</span>
<span class="no">Encoding</span><span class="p">.</span><span class="nf">default_internal</span> <span class="o">=</span> <span class="no">Encoding</span><span class="o">::</span><span class="no">UTF_8</span>
<span class="no">Encoding</span><span class="p">.</span><span class="nf">default_external</span> <span class="o">=</span> <span class="no">Encoding</span><span class="o">::</span><span class="no">UTF_8</span>
<span class="n">ios</span> <span class="o">=</span> <span class="no">IO</span><span class="p">.</span><span class="nf">pipe</span><span class="p">(</span><span class="no">Encoding</span><span class="o">::</span><span class="no">BINARY</span><span class="p">,</span> <span class="no">Encoding</span><span class="o">::</span><span class="no">BINARY</span><span class="p">)</span>
<span class="nb">p</span> <span class="p">[</span><span class="ss">:internal</span><span class="p">,</span> <span class="o">*</span><span class="n">ios</span><span class="p">.</span><span class="nf">map</span><span class="p">(</span><span class="o">&</span><span class="ss">:internal_encoding</span><span class="p">)]</span>
<span class="nb">p</span> <span class="p">[</span><span class="ss">:external</span><span class="p">,</span> <span class="o">*</span><span class="n">ios</span><span class="p">.</span><span class="nf">map</span><span class="p">(</span><span class="o">&</span><span class="ss">:external_encoding</span><span class="p">)]</span>
</code></pre>
<p>Actual output:</p>
<pre><code>[:internal, nil, nil]
[:external, #<Encoding:ASCII-8BIT>, nil]
[:internal, nil, nil]
[:external, #<Encoding:ASCII-8BIT>, #<Encoding:UTF-8>]
</code></pre>
<p>Expected output:</p>
<pre><code>[:internal, #<Encoding:ASCII-8BIT>, #<Encoding:ASCII-8BIT>]
[:external, #<Encoding:ASCII-8BIT>, #<Encoding:ASCII-8BIT>]
[:internal, #<Encoding:ASCII-8BIT>, #<Encoding:ASCII-8BIT>]
[:external, #<Encoding:ASCII-8BIT>, #<Encoding:ASCII-8BIT>]
</code></pre>
<p>Am I reading the documentation incorrectly, or is it just not working as claimed?</p>
<p>I tried on older versions, and it seems to have been like that all the way down to Ruby 1.9.</p>
<p>The only reliable way I found to have a "binary" pipe is to call <code>IO#binmode</code>.</p>
Ruby master - Bug #20047 (Open): ConditionVariable#wait has spurious wakeups from signal traps
https://redmine.ruby-lang.org/issues/20047
2023-12-07T13:07:37Z
Eregon (Benoit Daloze)
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="no">Signal</span><span class="p">.</span><span class="nf">trap</span><span class="p">(</span><span class="s2">"INT"</span><span class="p">)</span> <span class="p">{</span> <span class="nb">p</span> <span class="ss">:SIGINT</span> <span class="p">}</span>
<span class="no">Thread</span><span class="p">.</span><span class="nf">new</span> <span class="k">do</span>
<span class="nb">sleep</span> <span class="mf">0.6</span>
<span class="sb">`kill -INT </span><span class="si">#{</span><span class="vg">$$</span><span class="si">}</span><span class="sb">`</span>
<span class="k">end</span>
<span class="n">m</span><span class="p">,</span> <span class="n">cv</span> <span class="o">=</span> <span class="no">Mutex</span><span class="p">.</span><span class="nf">new</span><span class="p">,</span> <span class="no">ConditionVariable</span><span class="p">.</span><span class="nf">new</span>
<span class="n">m</span><span class="p">.</span><span class="nf">synchronize</span> <span class="k">do</span>
<span class="n">r</span> <span class="o">=</span> <span class="no">ARGV</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="p">?</span> <span class="n">cv</span><span class="p">.</span><span class="nf">wait</span><span class="p">(</span><span class="n">m</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span> <span class="p">:</span> <span class="n">cv</span><span class="p">.</span><span class="nf">wait</span><span class="p">(</span><span class="n">m</span><span class="p">)</span>
<span class="nb">p</span> <span class="p">[</span><span class="s2">"ConditionVariable#wait returned"</span><span class="p">,</span> <span class="n">r</span><span class="p">]</span>
<span class="k">end</span>
</code></pre>
<p>The above program (without CLI arguments) should hang on <code>.wait</code> and not return, because neither ConditionVariable#{signal,broadcast} are used.<br>
That's the behavior on TruffleRuby and JRuby, but not on CRuby, where <code>.wait</code> wakes up spuriously.</p>
<pre><code>$ ruby -v spurious_cv.rb
ruby 3.2.2 (2023-03-30 revision e51014f9c0) [x86_64-linux]
:SIGINT
["ConditionVariable#wait returned", 1]
$ ruby -v spurious_cv.rb
truffleruby 23.1.1, like ruby 3.2.2, Oracle GraalVM Native [x86_64-linux]
:SIGINT
# hangs as expected
$ ruby -v spurious_cv.rb
jruby 9.4.5.0 (3.1.4) 2023-11-02 1abae2700f OpenJDK 64-Bit Server VM 17.0.8+7 on 17.0.8+7 +jit [x86_64-linux]
:SIGINT
# hangs as expected
</code></pre>
<p>When given an argument, it should wait 2 seconds.<br>
But on CRuby it wakes up spuriously:</p>
<pre><code>$ ruby -v spurious_cv.rb timeout
ruby 3.2.2 (2023-03-30 revision e51014f9c0) [x86_64-linux]
:SIGINT
["ConditionVariable#wait returned", 0]
$ ruby -v spurious_cv.rb timeout
truffleruby 23.1.1, like ruby 3.2.2, Oracle GraalVM Native [x86_64-linux]
:SIGINT
["ConditionVariable#wait returned", #<ConditionVariable:0x188>]
$ ruby -v spurious_cv.rb timeout
jruby 9.4.5.0 (3.1.4) 2023-11-02 1abae2700f OpenJDK 64-Bit Server VM 17.0.8+7 on 17.0.8+7 +jit [x86_64-linux]
:SIGINT
["ConditionVariable#wait returned", #<Thread::ConditionVariable:0x482ba4b1>]
</code></pre>
<p><code>ConditionVariable#wait</code> needs to be interrupted to execute the signal handler, which does <code>{ p :SIGINT }</code> on the main thread.<br>
However, <code>ConditionVariable#wait</code> should automatically be restarted internally after that, with the remaining timeout.<br>
That is what I think is the bug in CRuby.</p>
<p>While it's good practice to have a loop around ConditionVariable#wait (at least when there is no timeout), it still seems highly unexpected in a high-level language like Ruby<br>
to have ConditionVariable#wait return when neither ConditionVariable#{signal,broadcast} are used (i.e., spurious wakeups).</p>
<p>Also adding a loop is non-trivial for the case where a timeout argument is passed, as then one needs to manually account the remaining timeout instead of letting ConditionVariable#wait do its job correctly.<br>
And also need to check that if ConditionVariable#wait returns nil then one should break the loop, which is quite error-prone.<br>
Instead of just using <code>cv.wait(mutex, timeout)</code> when it works correctly.</p>
<p>From <a href="https://github.com/ruby-concurrency/concurrent-ruby/issues/1015" class="external">https://github.com/ruby-concurrency/concurrent-ruby/issues/1015</a></p>
Ruby master - Bug #20043 (Open): `defined?` checks for method existence but only sometimes
https://redmine.ruby-lang.org/issues/20043
2023-12-05T22:17:59Z
tenderlovemaking (Aaron Patterson)
tenderlove@ruby-lang.org
<p>When an expression is passed to <code>defined?</code>, it will <em>sometimes</em> check if a method in a sub-expression is defined and sometimes it won't.</p>
<p>For example:</p>
<pre><code>$ ./miniruby -e'p defined?(a)'
nil
$ ./miniruby -e'p defined?([a])'
nil
</code></pre>
<p>In the above case, Ruby will check whether or not the method <code>a</code> is defined, and it returns <code>nil</code>. However, if you use a splat, it will not check:</p>
<pre><code>$ ./miniruby -e'p defined?([*a])'
"expression"
</code></pre>
<p>The same thing seems to happen with method parameters:</p>
<pre><code>$ ./miniruby -e'p defined?(itself)'
"method"
$ ./miniruby -e'p defined?(itself(a))'
nil
$ ./miniruby -e'p defined?(itself(*a))'
"method"
</code></pre>
<p>Oddly, <code>defined?</code> will check contents of arrays, but <em>won't</em> check contents of hashes:</p>
<pre><code>$ ./miniruby -e'p defined?([[[[a]]]])'
nil
$ ./miniruby -e'p defined?({ a => a })'
"expression"
</code></pre>
<p>I think all of the cases that refer to <code>a</code> should check whether or not <code>a</code> is defined regardless of splats or hashes.</p>
Ruby master - Bug #20041 (Open): Array destructuring and default values in parameters
https://redmine.ruby-lang.org/issues/20041
2023-12-05T19:52:32Z
tenderlovemaking (Aaron Patterson)
tenderlove@ruby-lang.org
<p>It's possible to set the default value of a parameter to a previous parameter. For example:</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="k">def</span> <span class="nf">foo</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span> <span class="o">=</span> <span class="n">a</span><span class="p">)</span>
<span class="n">b</span>
<span class="k">end</span>
<span class="n">foo</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">])</span> <span class="c1"># => [1, 2]</span>
</code></pre>
<p>However, if the parameters are destructured, the destructring happens <em>after</em> default parameter assignment. For example:</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="k">def</span> <span class="nf">foo</span><span class="p">((</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">),</span> <span class="n">b</span> <span class="o">=</span> <span class="n">x</span><span class="p">)</span>
<span class="p">[</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">b</span><span class="p">]</span>
<span class="k">end</span>
<span class="n">foo</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">])</span> <span class="c1"># => [1, 2, nil]</span>
</code></pre>
<p>Is this expected behavior? I would have expected the parameters to be "evaluated" from left to right, and the array destructuring to happen <em>before</em> the default parameter assignment.</p>
<p>Thanks!</p>
Ruby master - Bug #20020 (Open): Segfault running regexp match?
https://redmine.ruby-lang.org/issues/20020
2023-11-23T16:58:15Z
andrea.salicetti@gmail.com (Andrea Salicetti)
<p><strong>Ruby version</strong> : ruby 3.2.2 (2023-03-30 revision e51014f9c0) [x86_64-darwin23]</p>
<p>From <code>irb</code>, trying to call <code>match?</code> on this regular expression causes a segmentation falut:</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="n">irb</span><span class="p">(</span><span class="n">main</span><span class="p">):</span><span class="mo">001</span><span class="p">:</span><span class="mi">0</span><span class="o">></span> <span class="sr">/^((a|c)|\s?){1,3}$/</span><span class="p">.</span><span class="nf">match?</span><span class="p">(</span><span class="s1">'abc'</span><span class="p">)</span>
<span class="o">=></span> <span class="kp">false</span>
<span class="n">irb</span><span class="p">(</span><span class="n">main</span><span class="p">):</span><span class="mo">002</span><span class="p">:</span><span class="mi">0</span><span class="o">></span> <span class="sr">/^((a|c)|\s?){1,3}$/</span><span class="p">.</span><span class="nf">match?</span><span class="p">(</span><span class="s1">'abc'</span><span class="p">)</span>
<span class="p">(</span><span class="n">irb</span><span class="p">):</span><span class="mi">2</span><span class="p">:</span> <span class="p">[</span><span class="no">BUG</span><span class="p">]</span> <span class="no">Segmentation</span> <span class="n">fault</span> <span class="n">at</span> <span class="mh">0x000000061ba998e8</span>
<span class="n">ruby</span> <span class="mf">3.2</span><span class="o">.</span><span class="mi">2</span> <span class="p">(</span><span class="mi">2023</span><span class="o">-</span><span class="mo">03</span><span class="o">-</span><span class="mi">30</span> <span class="n">revision</span> <span class="n">e51014f9c0</span><span class="p">)</span> <span class="p">[</span><span class="n">x86_64</span><span class="o">-</span><span class="n">darwin23</span><span class="p">]</span>
<span class="o">--</span> <span class="no">Crash</span> <span class="no">Report</span> <span class="n">log</span> <span class="n">information</span> <span class="o">--------------------------------------------</span>
<span class="no">See</span> <span class="no">Crash</span> <span class="no">Report</span> <span class="n">log</span> <span class="n">file</span> <span class="k">in</span> <span class="n">one</span> <span class="n">of</span> <span class="n">the</span> <span class="n">following</span> <span class="ss">locations:
</span><span class="o">*</span> <span class="o">~</span><span class="sr">/Library/</span><span class="no">Logs</span><span class="o">/</span><span class="no">DiagnosticReports</span>
<span class="o">*</span> <span class="sr">/Library/</span><span class="no">Logs</span><span class="o">/</span><span class="no">DiagnosticReports</span>
<span class="k">for</span> <span class="n">more</span> <span class="n">details</span><span class="o">.</span>
<span class="no">Don</span><span class="err">'</span><span class="n">t</span> <span class="n">forget</span> <span class="n">to</span> <span class="kp">include</span> <span class="n">the</span> <span class="n">above</span> <span class="no">Crash</span> <span class="no">Report</span> <span class="n">log</span> <span class="n">file</span> <span class="k">in</span> <span class="n">bug</span> <span class="n">reports</span><span class="p">.</span>
<span class="nf">-</span><span class="o">-</span> <span class="no">Control</span> <span class="n">frame</span> <span class="n">information</span> <span class="o">-----------------------------------------------</span>
<span class="n">c</span><span class="p">:</span><span class="mo">0037</span> <span class="nb">p</span><span class="p">:</span><span class="o">----</span> <span class="n">s</span><span class="p">:</span><span class="mo">0207</span> <span class="n">e</span><span class="p">:</span><span class="mo">000206</span> <span class="no">CFUNC</span> <span class="ss">:match?</span>
<span class="n">c</span><span class="p">:</span><span class="mo">0036</span> <span class="nb">p</span><span class="p">:</span><span class="mo">0006</span> <span class="n">s</span><span class="p">:</span><span class="mo">0202</span> <span class="n">e</span><span class="p">:</span><span class="mo">000201</span> <span class="no">EVAL</span> <span class="p">(</span><span class="n">irb</span><span class="p">):</span><span class="mi">2</span> <span class="p">[</span><span class="no">FINISH</span><span class="p">]</span>
<span class="n">c</span><span class="p">:</span><span class="mo">0035</span> <span class="nb">p</span><span class="p">:</span><span class="o">----</span> <span class="n">s</span><span class="p">:</span><span class="mo">01</span><span class="mi">99</span> <span class="n">e</span><span class="p">:</span><span class="mo">0001</span><span class="mi">98</span> <span class="no">CFUNC</span> <span class="ss">:eval</span>
<span class="n">c</span><span class="p">:</span><span class="mo">0034</span> <span class="nb">p</span><span class="p">:</span><span class="mo">0020</span> <span class="n">s</span><span class="p">:</span><span class="mo">01</span><span class="mi">91</span> <span class="n">e</span><span class="p">:</span><span class="mo">0001</span><span class="mi">90</span> <span class="no">METHOD</span> <span class="sr">/Users/</span><span class="n">andreasalicetti</span><span class="o">/</span><span class="p">.</span><span class="nf">rbenv</span><span class="o">/</span><span class="n">versions</span><span class="o">/</span><span class="mf">3.2</span><span class="o">.</span><span class="mi">2</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">ruby</span><span class="o">/</span><span class="mf">3.2</span><span class="o">.</span><span class="mi">0</span><span class="o">/</span><span class="n">irb</span><span class="o">/</span><span class="n">workspace</span><span class="p">.</span><span class="nf">rb</span><span class="p">:</span><span class="mi">119</span>
<span class="n">c</span><span class="p">:</span><span class="mo">0033</span> <span class="nb">p</span><span class="p">:</span><span class="mo">0153</span> <span class="n">s</span><span class="p">:</span><span class="mo">01</span><span class="mi">83</span> <span class="n">e</span><span class="p">:</span><span class="mo">0001</span><span class="mi">81</span> <span class="no">METHOD</span> <span class="sr">/Users/</span><span class="n">andreasalicetti</span><span class="o">/</span><span class="p">.</span><span class="nf">rbenv</span><span class="o">/</span><span class="n">versions</span><span class="o">/</span><span class="mf">3.2</span><span class="o">.</span><span class="mi">2</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">ruby</span><span class="o">/</span><span class="mf">3.2</span><span class="o">.</span><span class="mi">0</span><span class="o">/</span><span class="n">irb</span><span class="o">/</span><span class="n">context</span><span class="p">.</span><span class="nf">rb</span><span class="p">:</span><span class="mi">502</span>
<span class="n">c</span><span class="p">:</span><span class="mo">0032</span> <span class="nb">p</span><span class="p">:</span><span class="mo">011</span><span class="mi">9</span> <span class="n">s</span><span class="p">:</span><span class="mo">0170</span> <span class="n">e</span><span class="p">:</span><span class="mo">00016</span><span class="mi">9</span> <span class="no">BLOCK</span> <span class="sr">/Users/</span><span class="n">andreasalicetti</span><span class="o">/</span><span class="p">.</span><span class="nf">rbenv</span><span class="o">/</span><span class="n">versions</span><span class="o">/</span><span class="mf">3.2</span><span class="o">.</span><span class="mi">2</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">ruby</span><span class="o">/</span><span class="mf">3.2</span><span class="o">.</span><span class="mi">0</span><span class="o">/</span><span class="n">irb</span><span class="p">.</span><span class="nf">rb</span><span class="p">:</span><span class="mi">588</span>
<span class="n">c</span><span class="p">:</span><span class="mo">0031</span> <span class="nb">p</span><span class="p">:</span><span class="mo">0024</span> <span class="n">s</span><span class="p">:</span><span class="mo">0164</span> <span class="n">e</span><span class="p">:</span><span class="mo">000163</span> <span class="no">METHOD</span> <span class="sr">/Users/</span><span class="n">andreasalicetti</span><span class="o">/</span><span class="p">.</span><span class="nf">rbenv</span><span class="o">/</span><span class="n">versions</span><span class="o">/</span><span class="mf">3.2</span><span class="o">.</span><span class="mi">2</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">ruby</span><span class="o">/</span><span class="mf">3.2</span><span class="o">.</span><span class="mi">0</span><span class="o">/</span><span class="n">irb</span><span class="p">.</span><span class="nf">rb</span><span class="p">:</span><span class="mi">777</span>
<span class="n">c</span><span class="p">:</span><span class="mo">0030</span> <span class="nb">p</span><span class="p">:</span><span class="mo">0007</span> <span class="n">s</span><span class="p">:</span><span class="mo">015</span><span class="mi">8</span> <span class="n">e</span><span class="p">:</span><span class="mo">000157</span> <span class="no">BLOCK</span> <span class="sr">/Users/</span><span class="n">andreasalicetti</span><span class="o">/</span><span class="p">.</span><span class="nf">rbenv</span><span class="o">/</span><span class="n">versions</span><span class="o">/</span><span class="mf">3.2</span><span class="o">.</span><span class="mi">2</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">ruby</span><span class="o">/</span><span class="mf">3.2</span><span class="o">.</span><span class="mi">0</span><span class="o">/</span><span class="n">irb</span><span class="p">.</span><span class="nf">rb</span><span class="p">:</span><span class="mi">567</span>
<span class="n">c</span><span class="p">:</span><span class="mo">002</span><span class="mi">9</span> <span class="nb">p</span><span class="p">:</span><span class="mo">0126</span> <span class="n">s</span><span class="p">:</span><span class="mo">0153</span> <span class="n">e</span><span class="p">:</span><span class="mo">000152</span> <span class="no">BLOCK</span> <span class="sr">/Users/</span><span class="n">andreasalicetti</span><span class="o">/</span><span class="p">.</span><span class="nf">rbenv</span><span class="o">/</span><span class="n">versions</span><span class="o">/</span><span class="mf">3.2</span><span class="o">.</span><span class="mi">2</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">ruby</span><span class="o">/</span><span class="mf">3.2</span><span class="o">.</span><span class="mi">0</span><span class="o">/</span><span class="n">irb</span><span class="o">/</span><span class="n">ruby</span><span class="o">-</span><span class="n">lex</span><span class="p">.</span><span class="nf">rb</span><span class="p">:</span><span class="mi">267</span> <span class="p">[</span><span class="no">FINISH</span><span class="p">]</span>
<span class="n">c</span><span class="p">:</span><span class="mo">002</span><span class="mi">8</span> <span class="nb">p</span><span class="p">:</span><span class="o">----</span> <span class="n">s</span><span class="p">:</span><span class="mo">014</span><span class="mi">9</span> <span class="n">e</span><span class="p">:</span><span class="mo">00014</span><span class="mi">8</span> <span class="no">CFUNC</span> <span class="ss">:loop</span>
<span class="n">c</span><span class="p">:</span><span class="mo">0027</span> <span class="nb">p</span><span class="p">:</span><span class="mo">0005</span> <span class="n">s</span><span class="p">:</span><span class="mo">0145</span> <span class="n">e</span><span class="p">:</span><span class="mo">000144</span> <span class="no">BLOCK</span> <span class="sr">/Users/</span><span class="n">andreasalicetti</span><span class="o">/</span><span class="p">.</span><span class="nf">rbenv</span><span class="o">/</span><span class="n">versions</span><span class="o">/</span><span class="mf">3.2</span><span class="o">.</span><span class="mi">2</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">ruby</span><span class="o">/</span><span class="mf">3.2</span><span class="o">.</span><span class="mi">0</span><span class="o">/</span><span class="n">irb</span><span class="o">/</span><span class="n">ruby</span><span class="o">-</span><span class="n">lex</span><span class="p">.</span><span class="nf">rb</span><span class="p">:</span><span class="mi">249</span> <span class="p">[</span><span class="no">FINISH</span><span class="p">]</span>
<span class="n">c</span><span class="p">:</span><span class="mo">0026</span> <span class="nb">p</span><span class="p">:</span><span class="o">----</span> <span class="n">s</span><span class="p">:</span><span class="mo">0142</span> <span class="n">e</span><span class="p">:</span><span class="mo">000141</span> <span class="no">CFUNC</span> <span class="ss">:catch</span>
<span class="n">c</span><span class="p">:</span><span class="mo">0025</span> <span class="nb">p</span><span class="p">:</span><span class="mo">0010</span> <span class="n">s</span><span class="p">:</span><span class="mo">0137</span> <span class="n">e</span><span class="p">:</span><span class="mo">000136</span> <span class="no">METHOD</span> <span class="sr">/Users/</span><span class="n">andreasalicetti</span><span class="o">/</span><span class="p">.</span><span class="nf">rbenv</span><span class="o">/</span><span class="n">versions</span><span class="o">/</span><span class="mf">3.2</span><span class="o">.</span><span class="mi">2</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">ruby</span><span class="o">/</span><span class="mf">3.2</span><span class="o">.</span><span class="mi">0</span><span class="o">/</span><span class="n">irb</span><span class="o">/</span><span class="n">ruby</span><span class="o">-</span><span class="n">lex</span><span class="p">.</span><span class="nf">rb</span><span class="p">:</span><span class="mi">248</span>
<span class="n">c</span><span class="p">:</span><span class="mo">0024</span> <span class="nb">p</span><span class="p">:</span><span class="mo">0050</span> <span class="n">s</span><span class="p">:</span><span class="mo">0132</span> <span class="no">E</span><span class="p">:</span><span class="mo">000</span><span class="n">dd8</span> <span class="no">METHOD</span> <span class="sr">/Users/</span><span class="n">andreasalicetti</span><span class="o">/</span><span class="p">.</span><span class="nf">rbenv</span><span class="o">/</span><span class="n">versions</span><span class="o">/</span><span class="mf">3.2</span><span class="o">.</span><span class="mi">2</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">ruby</span><span class="o">/</span><span class="mf">3.2</span><span class="o">.</span><span class="mi">0</span><span class="o">/</span><span class="n">irb</span><span class="p">.</span><span class="nf">rb</span><span class="p">:</span><span class="mi">566</span>
<span class="n">c</span><span class="p">:</span><span class="mo">0023</span> <span class="nb">p</span><span class="p">:</span><span class="mo">0003</span> <span class="n">s</span><span class="p">:</span><span class="mo">0127</span> <span class="n">e</span><span class="p">:</span><span class="mo">000126</span> <span class="no">BLOCK</span> <span class="sr">/Users/</span><span class="n">andreasalicetti</span><span class="o">/</span><span class="p">.</span><span class="nf">rbenv</span><span class="o">/</span><span class="n">versions</span><span class="o">/</span><span class="mf">3.2</span><span class="o">.</span><span class="mi">2</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">ruby</span><span class="o">/</span><span class="mf">3.2</span><span class="o">.</span><span class="mi">0</span><span class="o">/</span><span class="n">irb</span><span class="p">.</span><span class="nf">rb</span><span class="p">:</span><span class="mi">500</span> <span class="p">[</span><span class="no">FINISH</span><span class="p">]</span>
<span class="n">c</span><span class="p">:</span><span class="mo">0022</span> <span class="nb">p</span><span class="p">:</span><span class="o">----</span> <span class="n">s</span><span class="p">:</span><span class="mo">0124</span> <span class="n">e</span><span class="p">:</span><span class="mo">000123</span> <span class="no">CFUNC</span> <span class="ss">:catch</span>
<span class="n">c</span><span class="p">:</span><span class="mo">0021</span> <span class="nb">p</span><span class="p">:</span><span class="mo">0050</span> <span class="n">s</span><span class="p">:</span><span class="mo">011</span><span class="mi">9</span> <span class="no">E</span><span class="p">:</span><span class="mo">000</span><span class="n">d50</span> <span class="no">METHOD</span> <span class="sr">/Users/</span><span class="n">andreasalicetti</span><span class="o">/</span><span class="p">.</span><span class="nf">rbenv</span><span class="o">/</span><span class="n">versions</span><span class="o">/</span><span class="mf">3.2</span><span class="o">.</span><span class="mi">2</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">ruby</span><span class="o">/</span><span class="mf">3.2</span><span class="o">.</span><span class="mi">0</span><span class="o">/</span><span class="n">irb</span><span class="p">.</span><span class="nf">rb</span><span class="p">:</span><span class="mi">499</span>
<span class="n">c</span><span class="p">:</span><span class="mo">0020</span> <span class="nb">p</span><span class="p">:</span><span class="mo">006</span><span class="mi">9</span> <span class="n">s</span><span class="p">:</span><span class="mo">0113</span> <span class="n">e</span><span class="p">:</span><span class="mo">000112</span> <span class="no">METHOD</span> <span class="sr">/Users/</span><span class="n">andreasalicetti</span><span class="o">/</span><span class="p">.</span><span class="nf">rbenv</span><span class="o">/</span><span class="n">versions</span><span class="o">/</span><span class="mf">3.2</span><span class="o">.</span><span class="mi">2</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">ruby</span><span class="o">/</span><span class="mf">3.2</span><span class="o">.</span><span class="mi">0</span><span class="o">/</span><span class="n">irb</span><span class="p">.</span><span class="nf">rb</span><span class="p">:</span><span class="mi">421</span>
<span class="n">c</span><span class="p">:</span><span class="mo">001</span><span class="mi">9</span> <span class="nb">p</span><span class="p">:</span><span class="mo">0012</span> <span class="n">s</span><span class="p">:</span><span class="mo">0107</span> <span class="n">e</span><span class="p">:</span><span class="mo">000106</span> <span class="no">TOP</span> <span class="sr">/Users/</span><span class="n">andreasalicetti</span><span class="o">/</span><span class="p">.</span><span class="nf">rbenv</span><span class="o">/</span><span class="n">versions</span><span class="o">/</span><span class="mf">3.2</span><span class="o">.</span><span class="mi">2</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">ruby</span><span class="o">/</span><span class="n">gems</span><span class="o">/</span><span class="mf">3.2</span><span class="o">.</span><span class="mi">0</span><span class="o">/</span><span class="n">gems</span><span class="o">/</span><span class="n">irb</span><span class="o">-</span><span class="mf">1.6</span><span class="o">.</span><span class="mi">2</span><span class="o">/</span><span class="n">exe</span><span class="o">/</span><span class="n">irb</span><span class="p">:</span><span class="mi">11</span> <span class="p">[</span><span class="no">FINISH</span><span class="p">]</span>
<span class="n">c</span><span class="p">:</span><span class="mo">001</span><span class="mi">8</span> <span class="nb">p</span><span class="p">:</span><span class="o">----</span> <span class="n">s</span><span class="p">:</span><span class="mo">0104</span> <span class="n">e</span><span class="p">:</span><span class="mo">000103</span> <span class="no">CFUNC</span> <span class="ss">:load</span>
<span class="n">c</span><span class="p">:</span><span class="mo">0017</span> <span class="nb">p</span><span class="p">:</span><span class="mo">007</span><span class="mi">8</span> <span class="n">s</span><span class="p">:</span><span class="mo">00</span><span class="mi">99</span> <span class="n">e</span><span class="p">:</span><span class="mo">0000</span><span class="mi">98</span> <span class="no">TOP</span> <span class="sr">/Users/</span><span class="n">andreasalicetti</span><span class="o">/</span><span class="p">.</span><span class="nf">rbenv</span><span class="o">/</span><span class="n">versions</span><span class="o">/</span><span class="mf">3.2</span><span class="o">.</span><span class="mi">2</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">irb</span><span class="p">:</span><span class="mi">25</span> <span class="p">[</span><span class="no">FINISH</span><span class="p">]</span>
<span class="n">c</span><span class="p">:</span><span class="mo">0016</span> <span class="nb">p</span><span class="p">:</span><span class="o">----</span> <span class="n">s</span><span class="p">:</span><span class="mo">00</span><span class="mi">94</span> <span class="n">e</span><span class="p">:</span><span class="mo">0000</span><span class="mi">93</span> <span class="no">CFUNC</span> <span class="ss">:load</span>
<span class="n">c</span><span class="p">:</span><span class="mo">0015</span> <span class="nb">p</span><span class="p">:</span><span class="mo">0064</span> <span class="n">s</span><span class="p">:</span><span class="mo">00</span><span class="mi">89</span> <span class="n">e</span><span class="p">:</span><span class="mo">0000</span><span class="mi">88</span> <span class="no">METHOD</span> <span class="sr">/Users/</span><span class="n">andreasalicetti</span><span class="o">/</span><span class="p">.</span><span class="nf">rbenv</span><span class="o">/</span><span class="n">versions</span><span class="o">/</span><span class="mf">3.2</span><span class="o">.</span><span class="mi">2</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">ruby</span><span class="o">/</span><span class="n">site_ruby</span><span class="o">/</span><span class="mf">3.2</span><span class="o">.</span><span class="mi">0</span><span class="o">/</span><span class="n">bundler</span><span class="o">/</span><span class="n">cli</span><span class="o">/</span><span class="nb">exec</span><span class="p">.</span><span class="nf">rb</span><span class="p">:</span><span class="mi">58</span>
<span class="n">c</span><span class="p">:</span><span class="mo">0014</span> <span class="nb">p</span><span class="p">:</span><span class="mo">0050</span> <span class="n">s</span><span class="p">:</span><span class="mo">00</span><span class="mi">83</span> <span class="n">e</span><span class="p">:</span><span class="mo">0000</span><span class="mi">82</span> <span class="no">METHOD</span> <span class="sr">/Users/</span><span class="n">andreasalicetti</span><span class="o">/</span><span class="p">.</span><span class="nf">rbenv</span><span class="o">/</span><span class="n">versions</span><span class="o">/</span><span class="mf">3.2</span><span class="o">.</span><span class="mi">2</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">ruby</span><span class="o">/</span><span class="n">site_ruby</span><span class="o">/</span><span class="mf">3.2</span><span class="o">.</span><span class="mi">0</span><span class="o">/</span><span class="n">bundler</span><span class="o">/</span><span class="n">cli</span><span class="o">/</span><span class="nb">exec</span><span class="p">.</span><span class="nf">rb</span><span class="p">:</span><span class="mi">23</span>
<span class="n">c</span><span class="p">:</span><span class="mo">0013</span> <span class="nb">p</span><span class="p">:</span><span class="mo">0034</span> <span class="n">s</span><span class="p">:</span><span class="mo">007</span><span class="mi">8</span> <span class="n">e</span><span class="p">:</span><span class="mo">000077</span> <span class="no">METHOD</span> <span class="sr">/Users/</span><span class="n">andreasalicetti</span><span class="o">/</span><span class="p">.</span><span class="nf">rbenv</span><span class="o">/</span><span class="n">versions</span><span class="o">/</span><span class="mf">3.2</span><span class="o">.</span><span class="mi">2</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">ruby</span><span class="o">/</span><span class="n">site_ruby</span><span class="o">/</span><span class="mf">3.2</span><span class="o">.</span><span class="mi">0</span><span class="o">/</span><span class="n">bundler</span><span class="o">/</span><span class="n">cli</span><span class="p">.</span><span class="nf">rb</span><span class="p">:</span><span class="mi">492</span>
<span class="n">c</span><span class="p">:</span><span class="mo">0012</span> <span class="nb">p</span><span class="p">:</span><span class="mo">0054</span> <span class="n">s</span><span class="p">:</span><span class="mo">0073</span> <span class="n">e</span><span class="p">:</span><span class="mo">000072</span> <span class="no">METHOD</span> <span class="sr">/Users/</span><span class="n">andreasalicetti</span><span class="o">/</span><span class="p">.</span><span class="nf">rbenv</span><span class="o">/</span><span class="n">versions</span><span class="o">/</span><span class="mf">3.2</span><span class="o">.</span><span class="mi">2</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">ruby</span><span class="o">/</span><span class="n">site_ruby</span><span class="o">/</span><span class="mf">3.2</span><span class="o">.</span><span class="mi">0</span><span class="o">/</span><span class="n">bundler</span><span class="o">/</span><span class="n">vendor</span><span class="o">/</span><span class="n">thor</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">thor</span><span class="o">/</span><span class="n">command</span><span class="p">.</span><span class="nf">rb</span><span class="p">:</span><span class="mi">28</span>
<span class="n">c</span><span class="p">:</span><span class="mo">0011</span> <span class="nb">p</span><span class="p">:</span><span class="mo">0040</span> <span class="n">s</span><span class="p">:</span><span class="mo">0065</span> <span class="n">e</span><span class="p">:</span><span class="mo">000064</span> <span class="no">METHOD</span> <span class="sr">/Users/</span><span class="n">andreasalicetti</span><span class="o">/</span><span class="p">.</span><span class="nf">rbenv</span><span class="o">/</span><span class="n">versions</span><span class="o">/</span><span class="mf">3.2</span><span class="o">.</span><span class="mi">2</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">ruby</span><span class="o">/</span><span class="n">site_ruby</span><span class="o">/</span><span class="mf">3.2</span><span class="o">.</span><span class="mi">0</span><span class="o">/</span><span class="n">bundler</span><span class="o">/</span><span class="n">vendor</span><span class="o">/</span><span class="n">thor</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">thor</span><span class="o">/</span><span class="n">invocation</span><span class="p">.</span><span class="nf">rb</span><span class="p">:</span><span class="mi">127</span>
<span class="n">c</span><span class="p">:</span><span class="mo">0010</span> <span class="nb">p</span><span class="p">:</span><span class="mo">0213</span> <span class="n">s</span><span class="p">:</span><span class="mo">005</span><span class="mi">8</span> <span class="n">e</span><span class="p">:</span><span class="mo">000057</span> <span class="no">METHOD</span> <span class="sr">/Users/</span><span class="n">andreasalicetti</span><span class="o">/</span><span class="p">.</span><span class="nf">rbenv</span><span class="o">/</span><span class="n">versions</span><span class="o">/</span><span class="mf">3.2</span><span class="o">.</span><span class="mi">2</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">ruby</span><span class="o">/</span><span class="n">site_ruby</span><span class="o">/</span><span class="mf">3.2</span><span class="o">.</span><span class="mi">0</span><span class="o">/</span><span class="n">bundler</span><span class="o">/</span><span class="n">vendor</span><span class="o">/</span><span class="n">thor</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">thor</span><span class="p">.</span><span class="nf">rb</span><span class="p">:</span><span class="mi">527</span>
<span class="n">c</span><span class="p">:</span><span class="mo">000</span><span class="mi">9</span> <span class="nb">p</span><span class="p">:</span><span class="mo">000</span><span class="mi">8</span> <span class="n">s</span><span class="p">:</span><span class="mo">0045</span> <span class="n">e</span><span class="p">:</span><span class="mo">000044</span> <span class="no">METHOD</span> <span class="sr">/Users/</span><span class="n">andreasalicetti</span><span class="o">/</span><span class="p">.</span><span class="nf">rbenv</span><span class="o">/</span><span class="n">versions</span><span class="o">/</span><span class="mf">3.2</span><span class="o">.</span><span class="mi">2</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">ruby</span><span class="o">/</span><span class="n">site_ruby</span><span class="o">/</span><span class="mf">3.2</span><span class="o">.</span><span class="mi">0</span><span class="o">/</span><span class="n">bundler</span><span class="o">/</span><span class="n">cli</span><span class="p">.</span><span class="nf">rb</span><span class="p">:</span><span class="mi">34</span>
<span class="n">c</span><span class="p">:</span><span class="mo">000</span><span class="mi">8</span> <span class="nb">p</span><span class="p">:</span><span class="mo">0044</span> <span class="n">s</span><span class="p">:</span><span class="mo">0040</span> <span class="n">e</span><span class="p">:</span><span class="mo">00003</span><span class="mi">9</span> <span class="no">METHOD</span> <span class="sr">/Users/</span><span class="n">andreasalicetti</span><span class="o">/</span><span class="p">.</span><span class="nf">rbenv</span><span class="o">/</span><span class="n">versions</span><span class="o">/</span><span class="mf">3.2</span><span class="o">.</span><span class="mi">2</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">ruby</span><span class="o">/</span><span class="n">site_ruby</span><span class="o">/</span><span class="mf">3.2</span><span class="o">.</span><span class="mi">0</span><span class="o">/</span><span class="n">bundler</span><span class="o">/</span><span class="n">vendor</span><span class="o">/</span><span class="n">thor</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">thor</span><span class="o">/</span><span class="n">base</span><span class="p">.</span><span class="nf">rb</span><span class="p">:</span><span class="mi">584</span>
<span class="n">c</span><span class="p">:</span><span class="mo">0007</span> <span class="nb">p</span><span class="p">:</span><span class="mo">0022</span> <span class="n">s</span><span class="p">:</span><span class="mo">0033</span> <span class="n">e</span><span class="p">:</span><span class="mo">000032</span> <span class="no">METHOD</span> <span class="sr">/Users/</span><span class="n">andreasalicetti</span><span class="o">/</span><span class="p">.</span><span class="nf">rbenv</span><span class="o">/</span><span class="n">versions</span><span class="o">/</span><span class="mf">3.2</span><span class="o">.</span><span class="mi">2</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">ruby</span><span class="o">/</span><span class="n">site_ruby</span><span class="o">/</span><span class="mf">3.2</span><span class="o">.</span><span class="mi">0</span><span class="o">/</span><span class="n">bundler</span><span class="o">/</span><span class="n">cli</span><span class="p">.</span><span class="nf">rb</span><span class="p">:</span><span class="mi">28</span>
<span class="n">c</span><span class="p">:</span><span class="mo">0006</span> <span class="nb">p</span><span class="p">:</span><span class="mo">0042</span> <span class="n">s</span><span class="p">:</span><span class="mo">002</span><span class="mi">8</span> <span class="n">e</span><span class="p">:</span><span class="mo">000027</span> <span class="no">BLOCK</span> <span class="sr">/Users/</span><span class="n">andreasalicetti</span><span class="o">/</span><span class="p">.</span><span class="nf">rbenv</span><span class="o">/</span><span class="n">versions</span><span class="o">/</span><span class="mf">3.2</span><span class="o">.</span><span class="mi">2</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">ruby</span><span class="o">/</span><span class="n">gems</span><span class="o">/</span><span class="mf">3.2</span><span class="o">.</span><span class="mi">0</span><span class="o">/</span><span class="n">gems</span><span class="o">/</span><span class="n">bundler</span><span class="o">-</span><span class="mf">2.4</span><span class="o">.</span><span class="mi">22</span><span class="o">/</span><span class="n">exe</span><span class="o">/</span><span class="n">bundle</span><span class="p">:</span><span class="mi">37</span>
<span class="n">c</span><span class="p">:</span><span class="mo">0005</span> <span class="nb">p</span><span class="p">:</span><span class="mo">0007</span> <span class="n">s</span><span class="p">:</span><span class="mo">0022</span> <span class="n">e</span><span class="p">:</span><span class="mo">000021</span> <span class="no">METHOD</span> <span class="sr">/Users/</span><span class="n">andreasalicetti</span><span class="o">/</span><span class="p">.</span><span class="nf">rbenv</span><span class="o">/</span><span class="n">versions</span><span class="o">/</span><span class="mf">3.2</span><span class="o">.</span><span class="mi">2</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">ruby</span><span class="o">/</span><span class="n">site_ruby</span><span class="o">/</span><span class="mf">3.2</span><span class="o">.</span><span class="mi">0</span><span class="o">/</span><span class="n">bundler</span><span class="o">/</span><span class="n">friendly_errors</span><span class="p">.</span><span class="nf">rb</span><span class="p">:</span><span class="mi">117</span>
<span class="n">c</span><span class="p">:</span><span class="mo">0004</span> <span class="nb">p</span><span class="p">:</span><span class="mo">010</span><span class="mi">8</span> <span class="n">s</span><span class="p">:</span><span class="mo">0017</span> <span class="no">E</span><span class="p">:</span><span class="mo">001</span><span class="mi">9</span><span class="n">b8</span> <span class="no">TOP</span> <span class="sr">/Users/</span><span class="n">andreasalicetti</span><span class="o">/</span><span class="p">.</span><span class="nf">rbenv</span><span class="o">/</span><span class="n">versions</span><span class="o">/</span><span class="mf">3.2</span><span class="o">.</span><span class="mi">2</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">ruby</span><span class="o">/</span><span class="n">gems</span><span class="o">/</span><span class="mf">3.2</span><span class="o">.</span><span class="mi">0</span><span class="o">/</span><span class="n">gems</span><span class="o">/</span><span class="n">bundler</span><span class="o">-</span><span class="mf">2.4</span><span class="o">.</span><span class="mi">22</span><span class="o">/</span><span class="n">exe</span><span class="o">/</span><span class="n">bundle</span><span class="p">:</span><span class="mi">29</span> <span class="p">[</span><span class="no">FINISH</span><span class="p">]</span>
<span class="n">c</span><span class="p">:</span><span class="mo">0003</span> <span class="nb">p</span><span class="p">:</span><span class="o">----</span> <span class="n">s</span><span class="p">:</span><span class="mo">0013</span> <span class="n">e</span><span class="p">:</span><span class="mo">000012</span> <span class="no">CFUNC</span> <span class="ss">:load</span>
<span class="n">c</span><span class="p">:</span><span class="mo">0002</span> <span class="nb">p</span><span class="p">:</span><span class="mo">00</span><span class="mi">81</span> <span class="n">s</span><span class="p">:</span><span class="mo">000</span><span class="mi">8</span> <span class="no">E</span><span class="p">:</span><span class="mo">000220</span> <span class="no">EVAL</span> <span class="sr">/Users/</span><span class="n">andreasalicetti</span><span class="o">/</span><span class="p">.</span><span class="nf">rbenv</span><span class="o">/</span><span class="n">versions</span><span class="o">/</span><span class="mf">3.2</span><span class="o">.</span><span class="mi">2</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">bundle</span><span class="p">:</span><span class="mi">25</span> <span class="p">[</span><span class="no">FINISH</span><span class="p">]</span>
<span class="n">c</span><span class="p">:</span><span class="mo">0001</span> <span class="nb">p</span><span class="p">:</span><span class="mo">0000</span> <span class="n">s</span><span class="p">:</span><span class="mo">0003</span> <span class="no">E</span><span class="p">:</span><span class="mo">001</span><span class="mi">980</span> <span class="no">DUMMY</span> <span class="p">[</span><span class="no">FINISH</span><span class="p">]</span>
</code></pre>
<p>Sometimes this happens the very first time I try to execute the command, some other times I have to try a couple of times to see that Segmentation Fault (but usually within the first 5 attempts).</p>
Ruby master - Bug #20009 (Open): Marshal.load raises exception when load dumped class include non...
https://redmine.ruby-lang.org/issues/20009
2023-11-19T16:26:03Z
ippachi (Kazuya Hatanaka)
<a name="Reproduction-code"></a>
<h2 >Reproduction code<a href="#Reproduction-code" class="wiki-anchor">¶</a></h2>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="k">class</span> <span class="nc">C</span><span class="err">クラス</span><span class="p">;</span> <span class="k">end</span>
<span class="no">Marshal</span><span class="p">.</span><span class="nf">load</span><span class="p">(</span><span class="no">Marshal</span><span class="p">.</span><span class="nf">dump</span><span class="p">(</span><span class="no">C</span><span class="err">クラス</span><span class="p">))</span>
</code></pre>
<a name="Actual-result"></a>
<h2 >Actual result<a href="#Actual-result" class="wiki-anchor">¶</a></h2>
<pre><code><internal:marshal>:34:in `load': undefined class/module C\xE3\x82\xAF\xE3\x83\xA9\xE3\x82\xB9 (ArgumentError)
from marshal.rb:2:in `<main>'
</code></pre>
<a name="Expected-result"></a>
<h2 >Expected result<a href="#Expected-result" class="wiki-anchor">¶</a></h2>
<p>Returns <code>Cクラス</code></p>
<a name="Impacted-area"></a>
<h2 >Impacted area<a href="#Impacted-area" class="wiki-anchor">¶</a></h2>
<p>An exception is raised in Rails under the following conditions</p>
<ul>
<li>minitest is used with default settings</li>
<li>Parallel execution with parallelize</li>
<li>test class names contain non-ASCII characters</li>
</ul>
<p>The default parallelization uses DRb, and Marshal is used inside DRb.</p>
<a name="Other"></a>
<h2 >Other<a href="#Other" class="wiki-anchor">¶</a></h2>
<p>After trying various things, I thought I could fix it by making <code>rb_path_to_class</code> support strings containing non-ASCII characters, but I couldn't find anything more than that.</p>
Ruby master - Bug #19986 (Open): Win32: `HOME` is set to just `HOMEDRIVE` if `HOMEPATH` is unset
https://redmine.ruby-lang.org/issues/19986
2023-11-05T03:15:02Z
nobu (Nobuyoshi Nakada)
nobu@ruby-lang.org
<pre><code>$ env -u HOME -u USERPROFILE -u HOMEPATH HOMEDRIVE=no/such/home ./miniruby.exe -e 'p ENV["HOME"], Dir.home'
"no/such/home"
"no/such/home"
</code></pre>
<p><code>HOMEDRIVE</code> should be ignored without <code>HOMEPATH</code>, and <code>HOME</code> should fallback to <code>CSIDL_PROFILE</code>.</p>
Ruby master - Bug #19984 (Open): `make test-bundler-parallel` fails with ` --enable-shared`
https://redmine.ruby-lang.org/issues/19984
2023-11-02T09:17:50Z
vo.x (Vit Ondruch)
v.ondruch@tiscali.cz
<pre><code>+ ./configure --enable-shared
checking for ruby... false
... snip ...
config.status: creating Makefile
---
Configuration summary for ruby version 3.3.0
* Installation prefix: /usr/local
* exec prefix: ${prefix}
* arch: x86_64-linux
* site arch: ${arch}
* RUBY_BASE_NAME: ruby
* enable shared: yes
* ruby lib prefix: ${libdir}/${RUBY_BASE_NAME}
* site libraries path: ${rubylibprefix}/${sitearch}
* vendor path: ${rubylibprefix}/vendor_ruby
* target OS: linux
* compiler: gcc
* with thread: pthread
* with coroutine: amd64
* enable shared libs: yes
* dynamic library ext: so
* CFLAGS: ${optflags} ${debugflags} ${warnflags}
* LDFLAGS: -L. -Wl,-z,relro -Wl,--as-needed -Wl,-z,now \
-specs=/usr/lib/rpm/redhat/redhat-hardened-ld \
-specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 \
-Wl,--build-id=sha1 -fstack-protector-strong \
-rdynamic -Wl,-export-dynamic -Wl,--no-as-needed
* DLDFLAGS: -Wl,-z,relro -Wl,--as-needed -Wl,-z,now \
-specs=/usr/lib/rpm/redhat/redhat-hardened-ld \
-specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 \
-Wl,--build-id=sha1 \
-Wl,--compress-debug-sections=zlib
* optflags: -O3 -fno-fast-math
* debugflags: -ggdb3
* warnflags: -Wall -Wextra -Wdeprecated-declarations \
-Wdiv-by-zero -Wduplicated-cond \
-Wimplicit-function-declaration -Wimplicit-int \
-Wpointer-arith -Wwrite-strings \
-Wold-style-definition -Wimplicit-fallthrough=0 \
-Wmissing-noreturn -Wno-cast-function-type \
-Wno-constant-logical-operand -Wno-long-long \
-Wno-missing-field-initializers \
-Wno-overlength-strings \
-Wno-packed-bitfield-compat \
-Wno-parentheses-equality -Wno-self-assign \
-Wno-tautological-compare -Wno-unused-parameter \
-Wno-unused-value -Wsuggest-attribute=format \
-Wsuggest-attribute=noreturn -Wunused-variable \
-Wmisleading-indentation -Wundef
* strip command: strip -S -x
* install doc: rdoc
* YJIT support: yes
* RJIT support: yes
* man page type: doc
---
$ make -O -j8 V=1 VERBOSE=1 'COPY=cp -p'
BASERUBY = echo executable host ruby is required. use --with-baseruby option.; false
CC = gcc
LD = ld
LDSHARED = gcc -shared
CFLAGS = -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Werror=implicit-function-declaration -Werror=implicit-int -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -fPIC -m64
XCFLAGS = -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-strong -fno-strict-overflow -fvisibility=hidden -fexcess-precision=standard -DRUBY_EXPORT -I. -I.ext/include/x86_64-linux -I./include -I. -I./prism -I./enc/unicode/15.0.0
CPPFLAGS =
DLDFLAGS = -Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 -Wl,--compress-debug-sections=zlib -Wl,-soname,libruby.so.3.3 -fstack-protector-strong -m64
SOLIBS = -lz -lrt -lrt -lgmp -ldl -lcrypt -lm -lpthread
LANG = C.UTF-8
LC_ALL =
LC_CTYPE =
MFLAGS = -j8 -Otarget --jobserver-auth=fifo:/tmp/GMfifo10180 --sync-mutex=fnm:/tmp/GmCLOiGB
RUSTC = rustc
YJIT_RUSTC_ARGS = --crate-name=yjit --crate-type=staticlib --edition=2021 -g -C lto=thin -C opt-level=3 -C overflow-checks=on '--out-dir=/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/yjit/target/release/' ./yjit/src/lib.rs
gcc (GCC) 13.2.1 20231011 (Red Hat 13.2.1-4)
Copyright (C) 2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
gcc -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Werror=implicit-function-declaration -Werror=implicit-int -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -fPIC -m64 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-strong -fno-strict-overflow -fvisibility=hidden -fexcess-precision=standard -DRUBY_EXPORT -I. -I.ext/include/x86_64-linux -I./include -I. -I./prism -I./enc/unicode/15.0.0 -o dmyext.o -c dmyext.c
... snip ...
$ make test-bundler-parallel
BASERUBY = echo executable host ruby is required. use --with-baseruby option.; false
CC = gcc
LD = ld
LDSHARED = gcc -shared
CFLAGS = -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Werror=implicit-function-declaration -Werror=implicit-int -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -fPIC -m64
XCFLAGS = -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-strong -fno-strict-overflow -fvisibility=hidden -fexcess-precision=standard -DRUBY_EXPORT -I. -I.ext/include/x86_64-linux -I./include -I. -I./prism -I./enc/unicode/15.0.0
CPPFLAGS =
DLDFLAGS = -Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 -Wl,--compress-debug-sections=zlib -Wl,-soname,libruby.so.3.3 -fstack-protector-strong -m64
SOLIBS = -lz -lrt -lrt -lgmp -ldl -lcrypt -lm -lpthread
LANG = C.UTF-8
LC_ALL =
LC_CTYPE =
MFLAGS =
RUSTC = rustc
YJIT_RUSTC_ARGS = --crate-name=yjit --crate-type=staticlib --edition=2021 -g -C lto=thin -C opt-level=3 -C overflow-checks=on '--out-dir=/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/yjit/target/release/' ./yjit/src/lib.rs
gcc (GCC) 13.2.1 20231011 (Red Hat 13.2.1-4)
Copyright (C) 2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
generating enc.mk
making srcs under enc
make[1]: Entering directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484'
make[1]: Nothing to be done for 'srcs'.
make[1]: Leaving directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484'
generating transdb.h
transdb.h unchanged
generating makefiles ext/configure-ext.mk
ext/configure-ext.mk updated
make[1]: Entering directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484'
make[1]: Leaving directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484'
generating makefile exts.mk
exts.mk unchanged
make[1]: Entering directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484'
make[2]: Entering directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/ext/bigdecimal'
installing default bigdecimal libraries
make[2]: Leaving directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/ext/bigdecimal'
make[2]: Entering directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/ext/coverage'
installing default coverage libraries
make[2]: Leaving directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/ext/coverage'
make[2]: Entering directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/ext/date'
installing default date_core libraries
make[2]: Leaving directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/ext/date'
make[2]: Entering directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/ext/digest'
installing digest libraries
installing default digest libraries
make[2]: Leaving directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/ext/digest'
make[2]: Entering directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/ext/digest/sha2'
installing default sha2 libraries
make[2]: Leaving directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/ext/digest/sha2'
make[2]: Entering directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/ext/fiddle'
installing default fiddle libraries
make[2]: Leaving directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/ext/fiddle'
make[2]: Entering directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/ext/io/console'
installing default console libraries
make[2]: Leaving directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/ext/io/console'
make[2]: Entering directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/ext/json'
installing default libraries
make[2]: Leaving directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/ext/json'
make[2]: Entering directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/ext/monitor'
installing default monitor libraries
make[2]: Leaving directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/ext/monitor'
make[2]: Entering directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/ext/nkf'
installing default nkf libraries
make[2]: Leaving directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/ext/nkf'
make[2]: Entering directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/ext/objspace'
installing default objspace libraries
make[2]: Leaving directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/ext/objspace'
make[2]: Entering directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/ext/openssl'
installing default openssl libraries
make[2]: Leaving directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/ext/openssl'
make[2]: Entering directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/ext/pathname'
installing default pathname libraries
make[2]: Leaving directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/ext/pathname'
make[2]: Entering directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/ext/psych'
installing default psych libraries
make[2]: Leaving directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/ext/psych'
make[2]: Entering directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/ext/pty'
installing default pty libraries
make[2]: Leaving directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/ext/pty'
make[2]: Entering directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/ext/ripper'
installing default ripper libraries
make[2]: Leaving directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/ext/ripper'
make[2]: Entering directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/ext/rubyvm'
installing default libraries
make[2]: Leaving directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/ext/rubyvm'
make[2]: Entering directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/ext/socket'
installing default socket libraries
make[2]: Leaving directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/ext/socket'
make[2]: Entering directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/ext/syslog'
installing default syslog libraries
make[2]: Leaving directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/ext/syslog'
make[2]: Entering directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/.bundle/gems/debug-1.8.0/ext/debug'
make[2]: Leaving directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/.bundle/gems/debug-1.8.0/ext/debug'
make[2]: Entering directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/.bundle/gems/racc-1.7.1/ext/racc/cparse'
make[2]: Leaving directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/.bundle/gems/racc-1.7.1/ext/racc/cparse'
make[2]: Entering directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/.bundle/gems/rbs-3.2.2/ext/rbs_extension'
make[2]: Leaving directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/.bundle/gems/rbs-3.2.2/ext/rbs_extension'
make[2]: Entering directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484'
make[2]: 'ruby' is up to date.
make[2]: Leaving directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484'
make[1]: Leaving directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484'
make[1]: Entering directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484'
make[1]: Nothing to be done for 'note'.
make[1]: Leaving directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484'
making enc
make[1]: Entering directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484'
make[1]: Nothing to be done for 'enc'.
make[1]: Leaving directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484'
making trans
make[1]: Entering directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484'
make[1]: Nothing to be done for './enc/trans'.
make[1]: Leaving directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484'
making encs
make[1]: Entering directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484'
make[1]: Nothing to be done for 'encs'.
make[1]: Leaving directory '/builddir/build/BUILD/ruby-3.3.0-a1e24ab484'
generating x86_64-linux-fake.rb
x86_64-linux-fake.rb updated
./miniruby -I./lib -I. -I.ext/common ./tool/runruby.rb --extout=.ext -- --disable-gems -C . -Ilib \
-e 'ENV["GEM_HOME"] = File.expand_path(".bundle")' \
-e 'ENV["BUNDLE_APP_CONFIG"] = File.expand_path(".bundle")' \
-e 'ENV["BUNDLE_PATH__SYSTEM"] = "true"' \
-e 'ENV["BUNDLE_WITHOUT"] = "lint doc"' \
-e 'load "spec/bundler/support/bundle.rb"' -- install --quiet --gemfile=tool/bundler/dev_gems.rb
./miniruby -I./lib -I. -I.ext/common ./tool/runruby.rb --extout=.ext -- --disable-gems \
-r./x86_64-linux-fake \
-e "ARGV[-1] = File.expand_path(ARGV[-1])" \
-e "exec(*ARGV)" -- \
./miniruby -I./lib -I. -I.ext/common ./tool/runruby.rb --extout=.ext -- --disable-gems -I./spec/bundler \
-e "ENV['PARALLEL_TESTS_EXECUTABLE'] = ARGV.shift" \
-e "load ARGV.shift" \
"./miniruby -I./lib -I. -I.ext/common ./tool/runruby.rb --extout=.ext -- --disable-gems -C . -Ispec/bundler:spec/lib .bundle/bin/rspec" \
./.bundle/bin/parallel_rspec \
-o "--require spec_helper --require formatter_overrides" \
--runtime-log ./tmp/parallel_runtime_rspec.log ./spec/bundler/
8 processes for 169 specs, ~ 21 specs per process
An error occurred in a `before(:suite)` hook.
Failure/Error:
raise <<~ERROR
Invoking `#{cmd}` failed with output:
----------------------------------------------------------------------
#{command_execution.stdboth}
----------------------------------------------------------------------
ERROR
RuntimeError:
Invoking `/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/ruby -rrubygems /builddir/build/BUILD/ruby-3.3.0-a1e24ab484/bin/gem --backtrace build lib/bundler/bundler.gemspec` failed with output:
----------------------------------------------------------------------
/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/ruby: error while loading shared libraries: libruby.so.3.3: cannot open shared object file: No such file or directory
----------------------------------------------------------------------
# ./spec/bundler/support/helpers.rb:202:in `sys_exec'
# ./spec/bundler/support/helpers.rb:165:in `gem_command'
# ./spec/bundler/support/helpers.rb:343:in `with_built_bundler'
# ./spec/bundler/support/helpers.rb:304:in `block (2 levels) in system_gems'
# ./spec/bundler/support/helpers.rb:300:in `each'
# ./spec/bundler/support/helpers.rb:300:in `block in system_gems'
# ./spec/bundler/support/helpers.rb:357:in `block in with_gem_path_as'
# ./spec/bundler/support/helpers.rb:371:in `without_env_side_effects'
# ./spec/bundler/support/helpers.rb:352:in `with_gem_path_as'
# ./spec/bundler/support/helpers.rb:298:in `system_gems'
# ./spec/bundler/spec_helper.rb:92:in `block (2 levels) in <top (required)>'
Finished in 0.36529 seconds (files took 0.67828 seconds to load)
0 examples, 0 failures, 1 error occurred outside of examples
An error occurred in a `before(:suite)` hook.
Failure/Error:
raise <<~ERROR
Invoking `#{cmd}` failed with output:
----------------------------------------------------------------------
#{command_execution.stdboth}
----------------------------------------------------------------------
ERROR
RuntimeError:
Invoking `/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/ruby -rrubygems /builddir/build/BUILD/ruby-3.3.0-a1e24ab484/bin/gem --backtrace build lib/bundler/bundler.gemspec` failed with output:
----------------------------------------------------------------------
/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/ruby: error while loading shared libraries: libruby.so.3.3: cannot open shared object file: No such file or directory
----------------------------------------------------------------------
# ./spec/bundler/support/helpers.rb:202:in `sys_exec'
# ./spec/bundler/support/helpers.rb:165:in `gem_command'
# ./spec/bundler/support/helpers.rb:343:in `with_built_bundler'
# ./spec/bundler/support/helpers.rb:304:in `block (2 levels) in system_gems'
# ./spec/bundler/support/helpers.rb:300:in `each'
# ./spec/bundler/support/helpers.rb:300:in `block in system_gems'
# ./spec/bundler/support/helpers.rb:357:in `block in with_gem_path_as'
# ./spec/bundler/support/helpers.rb:371:in `without_env_side_effects'
# ./spec/bundler/support/helpers.rb:352:in `with_gem_path_as'
# ./spec/bundler/support/helpers.rb:298:in `system_gems'
# ./spec/bundler/spec_helper.rb:92:in `block (2 levels) in <top (required)>'
Finished in 0.4346 seconds (files took 0.62401 seconds to load)
0 examples, 0 failures, 1 error occurred outside of examples
An error occurred in a `before(:suite)` hook.
Failure/Error:
raise <<~ERROR
Invoking `#{cmd}` failed with output:
----------------------------------------------------------------------
#{command_execution.stdboth}
----------------------------------------------------------------------
ERROR
RuntimeError:
Invoking `/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/ruby -rrubygems /builddir/build/BUILD/ruby-3.3.0-a1e24ab484/bin/gem --backtrace build lib/bundler/bundler.gemspec` failed with output:
----------------------------------------------------------------------
/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/ruby: error while loading shared libraries: libruby.so.3.3: cannot open shared object file: No such file or directory
----------------------------------------------------------------------
# ./spec/bundler/support/helpers.rb:202:in `sys_exec'
# ./spec/bundler/support/helpers.rb:165:in `gem_command'
# ./spec/bundler/support/helpers.rb:343:in `with_built_bundler'
# ./spec/bundler/support/helpers.rb:304:in `block (2 levels) in system_gems'
# ./spec/bundler/support/helpers.rb:300:in `each'
# ./spec/bundler/support/helpers.rb:300:in `block in system_gems'
# ./spec/bundler/support/helpers.rb:357:in `block in with_gem_path_as'
# ./spec/bundler/support/helpers.rb:371:in `without_env_side_effects'
# ./spec/bundler/support/helpers.rb:352:in `with_gem_path_as'
# ./spec/bundler/support/helpers.rb:298:in `system_gems'
# ./spec/bundler/spec_helper.rb:92:in `block (2 levels) in <top (required)>'
Finished in 0.37847 seconds (files took 0.71128 seconds to load)
0 examples, 0 failures, 1 error occurred outside of examples
An error occurred in a `before(:suite)` hook.
Failure/Error:
raise <<~ERROR
Invoking `#{cmd}` failed with output:
----------------------------------------------------------------------
#{command_execution.stdboth}
----------------------------------------------------------------------
ERROR
RuntimeError:
Invoking `/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/ruby -rrubygems /builddir/build/BUILD/ruby-3.3.0-a1e24ab484/bin/gem --backtrace build lib/bundler/bundler.gemspec` failed with output:
----------------------------------------------------------------------
/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/ruby: error while loading shared libraries: libruby.so.3.3: cannot open shared object file: No such file or directory
----------------------------------------------------------------------
# ./spec/bundler/support/helpers.rb:202:in `sys_exec'
# ./spec/bundler/support/helpers.rb:165:in `gem_command'
# ./spec/bundler/support/helpers.rb:343:in `with_built_bundler'
# ./spec/bundler/support/helpers.rb:304:in `block (2 levels) in system_gems'
# ./spec/bundler/support/helpers.rb:300:in `each'
# ./spec/bundler/support/helpers.rb:300:in `block in system_gems'
# ./spec/bundler/support/helpers.rb:357:in `block in with_gem_path_as'
# ./spec/bundler/support/helpers.rb:371:in `without_env_side_effects'
# ./spec/bundler/support/helpers.rb:352:in `with_gem_path_as'
# ./spec/bundler/support/helpers.rb:298:in `system_gems'
# ./spec/bundler/spec_helper.rb:92:in `block (2 levels) in <top (required)>'
Finished in 0.32898 seconds (files took 0.78975 seconds to load)
0 examples, 0 failures, 1 error occurred outside of examples
An error occurred in a `before(:suite)` hook.
Failure/Error:
raise <<~ERROR
Invoking `#{cmd}` failed with output:
----------------------------------------------------------------------
#{command_execution.stdboth}
----------------------------------------------------------------------
ERROR
RuntimeError:
Invoking `/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/ruby -rrubygems /builddir/build/BUILD/ruby-3.3.0-a1e24ab484/bin/gem --backtrace build lib/bundler/bundler.gemspec` failed with output:
----------------------------------------------------------------------
/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/ruby: error while loading shared libraries: libruby.so.3.3: cannot open shared object file: No such file or directory
----------------------------------------------------------------------
# ./spec/bundler/support/helpers.rb:202:in `sys_exec'
# ./spec/bundler/support/helpers.rb:165:in `gem_command'
# ./spec/bundler/support/helpers.rb:343:in `with_built_bundler'
# ./spec/bundler/support/helpers.rb:304:in `block (2 levels) in system_gems'
# ./spec/bundler/support/helpers.rb:300:in `each'
# ./spec/bundler/support/helpers.rb:300:in `block in system_gems'
# ./spec/bundler/support/helpers.rb:357:in `block in with_gem_path_as'
# ./spec/bundler/support/helpers.rb:371:in `without_env_side_effects'
# ./spec/bundler/support/helpers.rb:352:in `with_gem_path_as'
# ./spec/bundler/support/helpers.rb:298:in `system_gems'
# ./spec/bundler/spec_helper.rb:92:in `block (2 levels) in <top (required)>'
Finished in 0.41138 seconds (files took 0.77373 seconds to load)
0 examples, 0 failures, 1 error occurred outside of examples
An error occurred in a `before(:suite)` hook.
Failure/Error:
raise <<~ERROR
Invoking `#{cmd}` failed with output:
----------------------------------------------------------------------
#{command_execution.stdboth}
----------------------------------------------------------------------
ERROR
RuntimeError:
Invoking `/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/ruby -rrubygems /builddir/build/BUILD/ruby-3.3.0-a1e24ab484/bin/gem --backtrace build lib/bundler/bundler.gemspec` failed with output:
----------------------------------------------------------------------
/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/ruby: error while loading shared libraries: libruby.so.3.3: cannot open shared object file: No such file or directory
----------------------------------------------------------------------
# ./spec/bundler/support/helpers.rb:202:in `sys_exec'
# ./spec/bundler/support/helpers.rb:165:in `gem_command'
# ./spec/bundler/support/helpers.rb:343:in `with_built_bundler'
# ./spec/bundler/support/helpers.rb:304:in `block (2 levels) in system_gems'
# ./spec/bundler/support/helpers.rb:300:in `each'
# ./spec/bundler/support/helpers.rb:300:in `block in system_gems'
# ./spec/bundler/support/helpers.rb:357:in `block in with_gem_path_as'
# ./spec/bundler/support/helpers.rb:371:in `without_env_side_effects'
# ./spec/bundler/support/helpers.rb:352:in `with_gem_path_as'
# ./spec/bundler/support/helpers.rb:298:in `system_gems'
# ./spec/bundler/spec_helper.rb:92:in `block (2 levels) in <top (required)>'
Finished in 0.46772 seconds (files took 0.7346 seconds to load)
0 examples, 0 failures, 1 error occurred outside of examples
An error occurred in a `before(:suite)` hook.
Failure/Error:
raise <<~ERROR
Invoking `#{cmd}` failed with output:
----------------------------------------------------------------------
#{command_execution.stdboth}
----------------------------------------------------------------------
ERROR
RuntimeError:
Invoking `/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/ruby -rrubygems /builddir/build/BUILD/ruby-3.3.0-a1e24ab484/bin/gem --backtrace build lib/bundler/bundler.gemspec` failed with output:
----------------------------------------------------------------------
/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/ruby: error while loading shared libraries: libruby.so.3.3: cannot open shared object file: No such file or directory
----------------------------------------------------------------------
# ./spec/bundler/support/helpers.rb:202:in `sys_exec'
# ./spec/bundler/support/helpers.rb:165:in `gem_command'
# ./spec/bundler/support/helpers.rb:343:in `with_built_bundler'
# ./spec/bundler/support/helpers.rb:304:in `block (2 levels) in system_gems'
# ./spec/bundler/support/helpers.rb:300:in `each'
# ./spec/bundler/support/helpers.rb:300:in `block in system_gems'
# ./spec/bundler/support/helpers.rb:357:in `block in with_gem_path_as'
# ./spec/bundler/support/helpers.rb:371:in `without_env_side_effects'
# ./spec/bundler/support/helpers.rb:352:in `with_gem_path_as'
# ./spec/bundler/support/helpers.rb:298:in `system_gems'
# ./spec/bundler/spec_helper.rb:92:in `block (2 levels) in <top (required)>'
Finished in 0.35757 seconds (files took 0.73007 seconds to load)
0 examples, 0 failures, 1 error occurred outside of examples
An error occurred in a `before(:suite)` hook.
Failure/Error:
raise <<~ERROR
Invoking `#{cmd}` failed with output:
----------------------------------------------------------------------
#{command_execution.stdboth}
----------------------------------------------------------------------
ERROR
RuntimeError:
Invoking `/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/ruby -rrubygems /builddir/build/BUILD/ruby-3.3.0-a1e24ab484/bin/gem --backtrace build lib/bundler/bundler.gemspec` failed with output:
----------------------------------------------------------------------
/builddir/build/BUILD/ruby-3.3.0-a1e24ab484/ruby: error while loading shared libraries: libruby.so.3.3: cannot open shared object file: No such file or directory
----------------------------------------------------------------------
# ./spec/bundler/support/helpers.rb:202:in `sys_exec'
# ./spec/bundler/support/helpers.rb:165:in `gem_command'
# ./spec/bundler/support/helpers.rb:343:in `with_built_bundler'
# ./spec/bundler/support/helpers.rb:304:in `block (2 levels) in system_gems'
# ./spec/bundler/support/helpers.rb:300:in `each'
# ./spec/bundler/support/helpers.rb:300:in `block in system_gems'
# ./spec/bundler/support/helpers.rb:357:in `block in with_gem_path_as'
# ./spec/bundler/support/helpers.rb:371:in `without_env_side_effects'
# ./spec/bundler/support/helpers.rb:352:in `with_gem_path_as'
# ./spec/bundler/support/helpers.rb:298:in `system_gems'
# ./spec/bundler/spec_helper.rb:92:in `block (2 levels) in <top (required)>'
Finished in 0.24372 seconds (files took 1.05 seconds to load)
0 examples, 0 failures, 1 error occurred outside of examples
Tests Failed
8 errors, 0 examples, 0 failures
Took 1 seconds
make: *** [uncommon.mk:1626: yes-test-bundler-parallel] Error 1
</code></pre>
Ruby master - Bug #19981 (Open): bootstraptest/test_ractor.rb: Segmentation fault on arm32
https://redmine.ruby-lang.org/issues/19981
2023-10-30T12:50:07Z
jaruga (Jun Aruga)
<p>I faced the following segmentation fault on Ubuntu jammy arm32 (emulated environment by <code>SETARCH='setarch linux32 --verbose --32bit'</code>) in both Travis CI arm64 <a href="https://app.travis-ci.com/github/ruby/ruby/jobs/612418476#L2422" class="external">log</a> and RubyCI arm64-neoverse server.</p>
<p>I tested it on the latest ruby master branch <code>14fa5e39d72c84d3e12e10dc5d77a6e6200c10f5</code>.</p>
<p>I was able to reproduce this issue on RubyCI arm64-neoverse server, and prepared the reproducing script. So, you can try to debug on the server.<br>
It seems that the <code>-O3</code> flag triggered the issue. Because I didn't see the issue when Travis CI setting <code>- optflags=-O1</code> in <code>.travis.yml</code> on the current master branch.<br>
<a href="https://github.com/junaruga/report-ruby-ractor-segmentation-fault" class="external">https://github.com/junaruga/report-ruby-ractor-segmentation-fault</a></p>
<pre><code>+ arm-linux-gnueabihf-gcc --version
arm-linux-gnueabihf-gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
+ setarch linux32 --verbose --32bit make -s test
Switching on ADDR_LIMIT_32BIT.
Execute command `make'.
Fstderr output is not empty
<internal:ractor>:760: [BUG] Segmentation fault at 0x0000000c
ruby 3.3.0dev (2023-10-30T09:27:06Z master 14fa5e39d7) [armv8l-linux-eabihf]
-- Control frame information -----------------------------------------------
c:0005 p:0003 s:0021 e:000020 METHOD <internal:ractor>:760
c:0004 p:0008 s:0014 e:000013 BLOCK bootstraptest.test_ractor.rb_541_1260.rb:4
c:0003 p:0018 s:0011 e:000010 METHOD <internal:kernel>:187
c:0002 p:0004 s:0006 e:000005 BLOCK bootstraptest.test_ractor.rb_541_1260.rb:3 [FINISH]
c:0001 p:---- s:0003 e:000002 DUMMY [FINISH]
-- Ruby level backtrace information ----------------------------------------
bootstraptest.test_ractor.rb_541_1260.rb:3:in `block in <main>'
<internal:kernel>:187:in `loop'
bootstraptest.test_ractor.rb_541_1260.rb:4:in `block (2 levels) in <main>'
<internal:ractor>:760:in `yield'
-- Threading information ---------------------------------------------------
Total ractor count: 2
Ruby thread count for this ractor: 1
-- Machine register context ------------------------------------------------
r0: 0x00000000 r1: 0x00000001 r2: 0x00000007 r3: 0x00000000 r4: 0x00c935c8
r5: 0x00000002 r6: 0x00000002 r7: 0x00000000 r8: 0x00000004 r9: 0x00c646b0
r10: 0x00000002 sp: 0xd5d91c90 fau: 0x0000000c
-- Other runtime information -----------------------------------------------
* Loaded script: bootstraptest.test_ractor.rb_541_1260.rb
* Loaded features:
0 enumerator.so
1 thread.rb
2 fiber.so
3 rational.so
4 complex.so
5 ruby2_keywords.rb
6 /home/jaruga/git/ruby/ruby/build/.ext/armv8l-linux-eabihf/enc/encdb.so
7 /home/jaruga/git/ruby/ruby/build/.ext/armv8l-linux-eabihf/enc/trans/transdb.so
* Process memory map:
00640000-0093a000 r-xp 00000000 103:03 29263803 /home/jaruga/git/ruby/ruby/build/ruby
0094a000-0094e000 r--p 002fa000 103:03 29263803 /home/jaruga/git/ruby/ruby/build/ruby
0094e000-0094f000 rw-p 002fe000 103:03 29263803 /home/jaruga/git/ruby/ruby/build/ruby
0094f000-00956000 rw-p 00000000 00:00 0
00bf3000-00cba000 rw-p 00000000 00:00 0 [heap]
d5700000-d5721000 rw-p 00000000 00:00 0
d5721000-d5800000 ---p 00000000 00:00 0
d5900000-d5921000 rw-p 00000000 00:00 0
d5921000-d5a00000 ---p 00000000 00:00 0
d5a00000-d5a21000 rw-p 00000000 00:00 0
d5a21000-d5b00000 ---p 00000000 00:00 0
d5b00000-d5b21000 rw-p 00000000 00:00 0
d5b21000-d5c00000 ---p 00000000 00:00 0
d5c5f000-d5c60000 ---p 00000000 00:00 0
d5c60000-d5c90000 rw-p 00000000 00:00 0
d5c9f000-d5ca0000 ---p 00000000 00:00 0
d5ca0000-d5cd0000 rw-p 00000000 00:00 0
d5cde000-d5cdf000 ---p 00000000 00:00 0
d5cdf000-d5cef000 rw-p 00000000 00:00 0
d5cef000-d5cf0000 ---p 00000000 00:00 0
d5cf0000-d5d81000 rw-p 00000000 00:00 0
d5d81000-d5d82000 ---p 00000000 00:00 0
d5d82000-d5e12000 rw-p 00000000 00:00 0
d5e12000-d5e13000 ---p 00000000 00:00 0
d5e13000-d5ea3000 rw-p 00000000 00:00 0
d5ea3000-d5ea4000 ---p 00000000 00:00 0
d5ea4000-d5f34000 rw-p 00000000 00:00 0
d5f34000-d5f35000 ---p 00000000 00:00 0
d5f35000-d5fc5000 rw-p 00000000 00:00 0
d5fc5000-d5fc6000 ---p 00000000 00:00 0
d5fc6000-d6056000 rw-p 00000000 00:00 0
d6056000-d6057000 ---p 00000000 00:00 0
d6057000-d60e7000 rw-p 00000000 00:00 0
d60e7000-d60e8000 ---p 00000000 00:00 0
d60e8000-d6178000 rw-p 00000000 00:00 0
d6178000-d6179000 ---p 00000000 00:00 0
d6179000-d6209000 rw-p 00000000 00:00 0
d6209000-d620a000 ---p 00000000 00:00 0
d620a000-d629a000 rw-p 00000000 00:00 0
d629a000-d629b000 ---p 00000000 00:00 0
d629b000-d632b000 rw-p 00000000 00:00 0
d632b000-d632c000 ---p 00000000 00:00 0
d632c000-f5d10000 rw-p 00000000 00:00 0
f5d10000-f5d12000 r-xp 00000000 103:03 29263555 /home/jaruga/git/ruby/ruby/build/.ext/armv8l-linux-eabihf/enc/trans/transdb.so
f5d12000-f5d21000 ---p 00002000 103:03 29263555 /home/jaruga/git/ruby/ruby/build/.ext/armv8l-linux-eabihf/enc/trans/transdb.so
f5d21000-f5d22000 r--p 00001000 103:03 29263555 /home/jaruga/git/ruby/ruby/build/.ext/armv8l-linux-eabihf/enc/trans/transdb.so
f5d22000-f5d23000 rw-p 00002000 103:03 29263555 /home/jaruga/git/ruby/ruby/build/.ext/armv8l-linux-eabihf/enc/trans/transdb.so
f5d30000-f5d32000 r-xp 00000000 103:03 29263548 /home/jaruga/git/ruby/ruby/build/.ext/armv8l-linux-eabihf/enc/encdb.so
f5d32000-f5d41000 ---p 00002000 103:03 29263548 /home/jaruga/git/ruby/ruby/build/.ext/armv8l-linux-eabihf/enc/encdb.so
f5d41000-f5d42000 r--p 00001000 103:03 29263548 /home/jaruga/git/ruby/ruby/build/.ext/armv8l-linux-eabihf/enc/encdb.so
f5d42000-f5d43000 rw-p 00002000 103:03 29263548 /home/jaruga/git/ruby/ruby/build/.ext/armv8l-linux-eabihf/enc/encdb.so
f5d4f000-f5d50000 ---p 00000000 00:00 0
f5d50000-f5d71000 rw-p 00000000 00:00 0
f5d71000-f5d72000 ---p 00000000 00:00 0
f5d72000-f5d93000 rw-p 00000000 00:00 0
f5d93000-f5d94000 ---p 00000000 00:00 0
f5d94000-f5db5000 rw-p 00000000 00:00 0
f5db5000-f5db6000 ---p 00000000 00:00 0
f5db6000-f5dd7000 rw-p 00000000 00:00 0
f5dd7000-f5dd8000 ---p 00000000 00:00 0
f5dd8000-f5df9000 rw-p 00000000 00:00 0
f5df9000-f5dfa000 ---p 00000000 00:00 0
f5dfa000-f5e1b000 rw-p 00000000 00:00 0
f5e1b000-f5e1c000 ---p 00000000 00:00 0
f5e1c000-f5e3d000 rw-p 00000000 00:00 0
f5e3d000-f5e3e000 ---p 00000000 00:00 0
f5e3e000-f5e5f000 rw-p 00000000 00:00 0
f5e5f000-f5e60000 ---p 00000000 00:00 0
f5e60000-f66a0000 rw-p 00000000 00:00 0
f66af000-f73b0000 rw-p 00000000 00:00 0
f73b5000-f7436000 rw-p 00000000 00:00 0
f7436000-f76b0000 r--p 0006f000 103:03 11802136 /usr/lib/locale/locale-archive
f76b0000-f78b0000 r--p 00000000 103:03 11802136 /usr/lib/locale/locale-archive
f78b0000-f79bc000 r-xp 00000000 103:03 11670018 /usr/lib/arm-linux-gnueabihf/libc.so.6
f79bc000-f79cc000 ---p 0010c000 103:03 11670018 /usr/lib/arm-linux-gnueabihf/libc.so.6
f79cc000-f79ce000 r--p 0010c000 103:03 11670018 /usr/lib/arm-linux-gnueabihf/libc.so.6
f79ce000-f79cf000 rw-p 0010e000 103:03 11670018 /usr/lib/arm-linux-gnueabihf/libc.so.6
f79cf000-f79d9000 rw-p 00000000 00:00 0
f79e0000-f7a21000 r-xp 00000000 103:03 11670021 /usr/lib/arm-linux-gnueabihf/libm.so.6
f7a21000-f7a30000 ---p 00041000 103:03 11670021 /usr/lib/arm-linux-gnueabihf/libm.so.6
f7a30000-f7a31000 r--p 00040000 103:03 11670021 /usr/lib/arm-linux-gnueabihf/libm.so.6
f7a31000-f7a32000 rw-p 00041000 103:03 11670021 /usr/lib/arm-linux-gnueabihf/libm.so.6
f7a40000-f7a6b000 r-xp 00000000 103:03 11670013 /usr/lib/arm-linux-gnueabihf/libcrypt.so.1.1.0
f7a6b000-f7a7b000 ---p 0002b000 103:03 11670013 /usr/lib/arm-linux-gnueabihf/libcrypt.so.1.1.0
f7a7b000-f7a7c000 r--p 0002b000 103:03 11670013 /usr/lib/arm-linux-gnueabihf/libcrypt.so.1.1.0
f7a7c000-f7a7d000 rw-p 0002c000 103:03 11670013 /usr/lib/arm-linux-gnueabihf/libcrypt.so.1.1.0
f7a7d000-f7a85000 rw-p 00000000 00:00 0
f7a88000-f7aa7000 r-xp 00000000 103:03 11670015 /usr/lib/arm-linux-gnueabihf/ld-linux-armhf.so.3
f7aac000-f7ab3000 r--s 00000000 103:03 11670285 /usr/lib/arm-linux-gnueabihf/gconv/gconv-modules.cache
f7ab3000-f7ab5000 rw-p 00000000 00:00 0
f7ab5000-f7ab6000 r-xp 00000000 00:00 0 [sigpage]
f7ab6000-f7ab8000 r--p 0001e000 103:03 11670015 /usr/lib/arm-linux-gnueabihf/ld-linux-armhf.so.3
f7ab8000-f7ab9000 rw-p 00020000 103:03 11670015 /usr/lib/arm-linux-gnueabihf/ld-linux-armhf.so.3
ff7dd000-fffdc000 rw-p 00000000 00:00 0 [stack]
ffff0000-ffff1000 r-xp 00000000 00:00 0 [vectors]
</code></pre>
Ruby master - Bug #19974 (Open): OpenSSL::PKCS7 generates SegFault when parsing invalid data
https://redmine.ruby-lang.org/issues/19974
2023-10-26T14:17:56Z
dprater (David Prater)
<p>We ran into an instance of attempting to parse invalid PKCS7 certs that consistently causes a segfault in multiple versions of Ruby 3, on multiple platforms (Linux, Mac).</p>
<h2>To reproduce:<br>
------- (within pry or irb or whatever ruby shell you prefer) ----------<br>
data = "-----BEGIN PKCS7-----\nMAsGCSqGSIb3DQEHAg==\n-----END PKCS7-----\n"<br>
OpenSSL::PKCS7.new(data).certificates</h2>
<p>This causes a segfault 100% of the time for me on both an M1 Mac as well as in docker containers running on both Mac as well as Linux hosts.</p>
<p>The issue appears to be attempting to parse empty signedData. <a href="https://lapo.it/asn1js/#MAsGCSqGSIb3DQEHAg" class="external">https://lapo.it/asn1js/#MAsGCSqGSIb3DQEHAg</a> shows that this data contains the necessary ASN1 sequence to look like a valid PKCS7 certificate. However, the signedData is empty. I assume this is the cause of the issue, but I surely don't know.</p>
<p>I've attached the info from the core dump inside a linux container running on an M1 Mac.</p>
Ruby master - Bug #19970 (Open): Eval leaks callcache and callinfo objects on arm32 (linux)
https://redmine.ruby-lang.org/issues/19970
2023-10-24T12:56:58Z
larsin (Lars Ingjer)
<p>The following script demonstrates a memory leak on arm 32 (linux):</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="k">def</span> <span class="nf">gcdiff</span><span class="p">(</span><span class="n">n</span><span class="p">)</span>
<span class="no">GC</span><span class="p">.</span><span class="nf">start</span>
<span class="k">if</span> <span class="vi">@last_gc_stat</span>
<span class="nb">puts</span> <span class="s2">"GC.stat </span><span class="si">#{</span><span class="n">n</span><span class="si">}</span><span class="s2"> diff old_objects: </span><span class="si">#{</span><span class="no">GC</span><span class="p">.</span><span class="nf">stat</span><span class="p">(</span><span class="ss">:old_objects</span><span class="p">)</span> <span class="o">-</span> <span class="vi">@last_gc_stat</span><span class="si">}</span><span class="s2">"</span>
<span class="k">end</span>
<span class="vi">@last_gc_stat</span> <span class="o">=</span> <span class="no">GC</span><span class="p">.</span><span class="nf">stat</span><span class="p">(</span><span class="ss">:old_objects</span><span class="p">)</span>
<span class="k">end</span>
<span class="k">def</span> <span class="nf">foo</span>
<span class="k">end</span>
<span class="mi">10</span><span class="p">.</span><span class="nf">times</span> <span class="k">do</span> <span class="o">|</span><span class="n">i</span><span class="o">|</span>
<span class="mi">10_000</span><span class="p">.</span><span class="nf">times</span> <span class="k">do</span>
<span class="nb">eval</span> <span class="s1">'foo'</span>
<span class="k">end</span>
<span class="n">gcdiff</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
<span class="nb">puts</span> <span class="s2">"Number of live objects: </span><span class="si">#{</span><span class="no">GC</span><span class="p">.</span><span class="nf">stat</span><span class="p">(</span><span class="ss">:heap_live_slots</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span>
<span class="nb">puts</span> <span class="s2">"Memory usage: </span><span class="si">#{</span><span class="sb">`ps -o rss= -p </span><span class="si">#{</span><span class="vg">$$</span><span class="si">}</span><span class="sb">`</span><span class="si">}</span><span class="s2">"</span>
<span class="nb">puts</span>
<span class="k">end</span>
</code></pre>
<p>Output:</p>
<pre><code>Number of live objects: 41303
Memory usage: 11900
GC.stat 1 diff old_objects: 20037
Number of live objects: 61317
Memory usage: 13604
GC.stat 2 diff old_objects: 20001
Number of live objects: 81317
Memory usage: 14880
GC.stat 3 diff old_objects: 20000
Number of live objects: 101317
Memory usage: 16596
GC.stat 4 diff old_objects: 20000
Number of live objects: 121317
Memory usage: 17248
GC.stat 5 diff old_objects: 20000
Number of live objects: 141317
Memory usage: 18760
GC.stat 6 diff old_objects: 20000
Number of live objects: 161317
Memory usage: 19540
GC.stat 7 diff old_objects: 20000
Number of live objects: 181317
Memory usage: 21752
GC.stat 8 diff old_objects: 20000
Number of live objects: 201317
Memory usage: 21828
GC.stat 9 diff old_objects: 20000
Number of live objects: 221317
Memory usage: 24896
</code></pre>
<p>ObjectSpace.count_imemo_objects shows that imemo_callcache and imemo_callinfo are leaking.</p>
<p>The issue does not occur on arm64 mac or x86_64 linux with the same ruby version.<br>
The issue has also been reproduced with the latest 3.2.2 snapshot (2023-09-30).</p>
Ruby master - Bug #19922 (Open): ObjectSpace.dump_all in multiple threads in parallel causes SEGV
https://redmine.ruby-lang.org/issues/19922
2023-10-12T12:56:37Z
wanabe (_ wanabe)
s.wanabe@gmail.com
<p><code>ObjectSpace.dump_all</code> in multiple threads in parallel causes SEGV.<br>
The reproduce code is here:</p>
<pre><code>$ ruby -robjspace -e 'def dump; 10.times { ObjectSpace.dump_all } end; Thread.new { dump }; dump'
/home/wanabe/.rbenv/versions/master/lib/ruby/3.3.0+0/objspace.rb:100: [BUG] Segmentation fault at 0x0000000000000000
(snip)
</code></pre>
<p>I attached the full log.</p>
<p>I assumed that:</p>
<ul>
<li>Thread1
<ul>
<li>calls <code>rb_objspace_reachable_objects_from_root()</code>
</li>
<li>changes <code>GET_RACTOR()->mfd</code>: mfd1</li>
<li>calls <code>dump_flush()</code>
<ul>
<li>changes current thread due to IO</li>
</ul>
</li>
</ul>
</li>
<li>Thread2
<ul>
<li>calls <code>rb_objspace_reachable_objects_from_root()</code>
</li>
<li>changes <code>GET_RACTOR()->mfd</code>: mfd2</li>
<li>calls <code>dump_flush()</code>
<ul>
<li>changes current thread due to IO</li>
</ul>
</li>
</ul>
</li>
<li>Thread1
<ul>
<li>gets unexpected <code>GET_RACTOR()->mfd</code>: mfd2</li>
</ul>
</li>
</ul>
Ruby master - Bug #19920 (Open): Ruby 3.1 fails to build with --enable-shared on macos-arm64: is ...
https://redmine.ruby-lang.org/issues/19920
2023-10-12T11:02:55Z
Eregon (Benoit Daloze)
<p>See <a href="https://github.com/ruby/ruby-builder/actions/runs/6494296018/job/17636968796#step:18:9" class="external">https://github.com/ruby/ruby-builder/actions/runs/6494296018/job/17636968796#step:18:9</a></p>
<pre><code>installing bundled gems: /Users/runner/hostedtoolcache/Ruby/3.1.4/arm64/lib/ruby/gems/3.1.0
minitest 5.15.0
power_assert 2.0.1
rake 13.0.6
test-unit 3.5.3
rexml 3.2.5
rss 0.2.9
net-ftp 0.1.3
net-imap 0.2.3
net-pop 0.1.1
net-smtp 0.3.1
matrix 0.4.2
prime 0.1.2
rbs 2.7.0
Building native extensions. This could take a while...
/private/var/folders/df/1dm_t2rx0054k7bw1g_7nyl80000gn/T/ruby-build.20231012101401.55539.tTlMYN/ruby-3.1.4/lib/rubygems/ext/builder.rb:102:in `run': ERROR: Failed to build gem native extension. (Gem::Ext::BuildError)
current directory: /Users/runner/hostedtoolcache/Ruby/3.1.4/arm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0/ext/rbs_extension
/Users/runner/hostedtoolcache/Ruby/3.1.4/arm64/bin/ruby -I /private/var/folders/df/1dm_t2rx0054k7bw1g_7nyl80000gn/T/ruby-build.20231012101401.55539.tTlMYN/ruby-3.1.4/lib extconf.rb
checking for whether -std=c99 is accepted as CFLAGS... *** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/Users/runner/hostedtoolcache/Ruby/3.1.4/arm64/bin/$(RUBY_BASE_NAME)
/private/var/folders/df/1dm_t2rx0054k7bw1g_7nyl80000gn/T/ruby-build.20231012101401.55539.tTlMYN/ruby-3.1.4/lib/mkmf.rb:490:in `try_do': The compiler failed to generate an executable file. (RuntimeError)
You have to install development tools first.
from /private/var/folders/df/1dm_t2rx0054k7bw1g_7nyl80000gn/T/ruby-build.20231012101401.55539.tTlMYN/ruby-3.1.4/lib/mkmf.rb:616:in `block in try_compile'
from /private/var/folders/df/1dm_t2rx0054k7bw1g_7nyl80000gn/T/ruby-build.20231012101401.55539.tTlMYN/ruby-3.1.4/lib/mkmf.rb:563:in `with_werror'
from /private/var/folders/df/1dm_t2rx0054k7bw1g_7nyl80000gn/T/ruby-build.20231012101401.55539.tTlMYN/ruby-3.1.4/lib/mkmf.rb:616:in `try_compile'
from /private/var/folders/df/1dm_t2rx0054k7bw1g_7nyl80000gn/T/ruby-build.20231012101401.55539.tTlMYN/ruby-3.1.4/lib/mkmf.rb:680:in `try_cflags'
from /private/var/folders/df/1dm_t2rx0054k7bw1g_7nyl80000gn/T/ruby-build.20231012101401.55539.tTlMYN/ruby-3.1.4/lib/mkmf.rb:1025:in `block (2 levels) in append_cflags'
from /private/var/folders/df/1dm_t2rx0054k7bw1g_7nyl80000gn/T/ruby-build.20231012101401.55539.tTlMYN/ruby-3.1.4/lib/mkmf.rb:989:in `block in checking_for'
from /private/var/folders/df/1dm_t2rx0054k7bw1g_7nyl80000gn/T/ruby-build.20231012101401.55539.tTlMYN/ruby-3.1.4/lib/mkmf.rb:354:in `block (2 levels) in postpone'
from /private/var/folders/df/1dm_t2rx0054k7bw1g_7nyl80000gn/T/ruby-build.20231012101401.55539.tTlMYN/ruby-3.1.4/lib/mkmf.rb:324:in `open'
from /private/var/folders/df/1dm_t2rx0054k7bw1g_7nyl80000gn/T/ruby-build.20231012101401.55539.tTlMYN/ruby-3.1.4/lib/mkmf.rb:354:in `block in postpone'
from /private/var/folders/df/1dm_t2rx0054k7bw1g_7nyl80000gn/T/ruby-build.20231012101401.55539.tTlMYN/ruby-3.1.4/lib/mkmf.rb:324:in `open'
from /private/var/folders/df/1dm_t2rx0054k7bw1g_7nyl80000gn/T/ruby-build.20231012101401.55539.tTlMYN/ruby-3.1.4/lib/mkmf.rb:350:in `postpone'
from /private/var/folders/df/1dm_t2rx0054k7bw1g_7nyl80000gn/T/ruby-build.20231012101401.55539.tTlMYN/ruby-3.1.4/lib/mkmf.rb:988:in `checking_for'
from /private/var/folders/df/1dm_t2rx0054k7bw1g_7nyl80000gn/T/ruby-build.20231012101401.55539.tTlMYN/ruby-3.1.4/lib/mkmf.rb:1024:in `block in append_cflags'
from /private/var/folders/df/1dm_t2rx0054k7bw1g_7nyl80000gn/T/ruby-build.20231012101401.55539.tTlMYN/ruby-3.1.4/lib/mkmf.rb:1023:in `each'
from /private/var/folders/df/1dm_t2rx0054k7bw1g_7nyl80000gn/T/ruby-build.20231012101401.55539.tTlMYN/ruby-3.1.4/lib/mkmf.rb:1023:in `append_cflags'
from extconf.rb:3:in `<main>'
To see why this extension failed to compile, please check the mkmf.log which can be found here:
/Users/runner/hostedtoolcache/Ruby/3.1.4/arm64/lib/ruby/gems/3.1.0/extensions/arm64-darwin-22/3.1.0/rbs-2.7.0/mkmf.log
extconf failed, exit code 1
Gem files will remain installed in /Users/runner/hostedtoolcache/Ruby/3.1.4/arm64/lib/ruby/gems/3.1.0/gems/rbs-2.7.0 for inspection.
Results logged to /Users/runner/hostedtoolcache/Ruby/3.1.4/arm64/lib/ruby/gems/3.1.0/extensions/arm64-darwin-22/3.1.0/rbs-2.7.0/gem_make.out
from /private/var/folders/df/1dm_t2rx0054k7bw1g_7nyl80000gn/T/ruby-build.20231012101401.55539.tTlMYN/ruby-3.1.4/lib/rubygems/ext/ext_conf_builder.rb:28:in `build'
from /private/var/folders/df/1dm_t2rx0054k7bw1g_7nyl80000gn/T/ruby-build.20231012101401.55539.tTlMYN/ruby-3.1.4/lib/rubygems/ext/builder.rb:171:in `build_extension'
from /private/var/folders/df/1dm_t2rx0054k7bw1g_7nyl80000gn/T/ruby-build.20231012101401.55539.tTlMYN/ruby-3.1.4/lib/rubygems/ext/builder.rb:205:in `block in build_extensions'
from /private/var/folders/df/1dm_t2rx0054k7bw1g_7nyl80000gn/T/ruby-build.20231012101401.55539.tTlMYN/ruby-3.1.4/lib/rubygems/ext/builder.rb:202:in `each'
from /private/var/folders/df/1dm_t2rx0054k7bw1g_7nyl80000gn/T/ruby-build.20231012101401.55539.tTlMYN/ruby-3.1.4/lib/rubygems/ext/builder.rb:202:in `build_extensions'
from /private/var/folders/df/1dm_t2rx0054k7bw1g_7nyl80000gn/T/ruby-build.20231012101401.55539.tTlMYN/ruby-3.1.4/lib/rubygems/installer.rb:843:in `build_extensions'
from /private/var/folders/df/1dm_t2rx0054k7bw1g_7nyl80000gn/T/ruby-build.20231012101401.55539.tTlMYN/ruby-3.1.4/lib/rubygems/installer.rb:326:in `install'
from ./tool/rbinstall.rb:899:in `block in install'
from ./tool/rbinstall.rb:713:in `no_write'
from ./tool/rbinstall.rb:899:in `install'
from ./tool/rbinstall.rb:1063:in `block (2 levels) in <main>'
from ./tool/rbinstall.rb:1044:in `foreach'
from ./tool/rbinstall.rb:1044:in `block in <main>'
from ./tool/rbinstall.rb:1119:in `block in <main>'
from ./tool/rbinstall.rb:1116:in `each'
from ./tool/rbinstall.rb:1116:in `<main>'
/private/var/folders/df/1dm_t2rx0054k7bw1g_7nyl80000gn/T/ruby-build.20231012101401.55539.tTlMYN/ruby-3.1.4/lib/rubygems/ext/builder.rb:102:in `run': extconf failed, exit code 1 (Gem::InstallError)
from /private/var/folders/df/1dm_t2rx0054k7bw1g_7nyl80000gn/T/ruby-build.20231012101401.55539.tTlMYN/ruby-3.1.4/lib/rubygems/ext/ext_conf_builder.rb:28:in `build'
from /private/var/folders/df/1dm_t2rx0054k7bw1g_7nyl80000gn/T/ruby-build.20231012101401.55539.tTlMYN/ruby-3.1.4/lib/rubygems/ext/builder.rb:171:in `build_extension'
from /private/var/folders/df/1dm_t2rx0054k7bw1g_7nyl80000gn/T/ruby-build.20231012101401.55539.tTlMYN/ruby-3.1.4/lib/rubygems/ext/builder.rb:205:in `block in build_extensions'
from /private/var/folders/df/1dm_t2rx0054k7bw1g_7nyl80000gn/T/ruby-build.20231012101401.55539.tTlMYN/ruby-3.1.4/lib/rubygems/ext/builder.rb:202:in `each'
from /private/var/folders/df/1dm_t2rx0054k7bw1g_7nyl80000gn/T/ruby-build.20231012101401.55539.tTlMYN/ruby-3.1.4/lib/rubygems/ext/builder.rb:202:in `build_extensions'
from /private/var/folders/df/1dm_t2rx0054k7bw1g_7nyl80000gn/T/ruby-build.20231012101401.55539.tTlMYN/ruby-3.1.4/lib/rubygems/installer.rb:843:in `build_extensions'
from /private/var/folders/df/1dm_t2rx0054k7bw1g_7nyl80000gn/T/ruby-build.20231012101401.55539.tTlMYN/ruby-3.1.4/lib/rubygems/installer.rb:326:in `install'
from ./tool/rbinstall.rb:899:in `block in install'
from ./tool/rbinstall.rb:713:in `no_write'
from ./tool/rbinstall.rb:899:in `install'
from ./tool/rbinstall.rb:1063:in `block (2 levels) in <main>'
from ./tool/rbinstall.rb:1044:in `foreach'
from ./tool/rbinstall.rb:1044:in `block in <main>'
from ./tool/rbinstall.rb:1119:in `block in <main>'
from ./tool/rbinstall.rb:1116:in `each'
from ./tool/rbinstall.rb:1116:in `<main>'
make: *** [do-install-nodoc] Error 1
BUILD FAILED (macOS 13.6 using ruby-build 20231012)
</code></pre>
<p>And the mkmf.log:</p>
<pre><code>DYLD_FALLBACK_LIBRARY_PATH=.:/Users/runner/hostedtoolcache/Ruby/3.1.4/arm64/lib:/private/var/folders/df/1dm_t2rx0054k7bw1g_7nyl80000gn/T/ruby-build.20231012101401.55539.tTlMYN/ruby-3.1.4 "clang -o conftest -I/Users/runner/hostedtoolcache/Ruby/3.1.4/arm64/include/ruby-3.1.0/arm64-darwin22 -I/Users/runner/hostedtoolcache/Ruby/3.1.4/arm64/include/ruby-3.1.0/ruby/backward -I/Users/runner/hostedtoolcache/Ruby/3.1.4/arm64/include/ruby-3.1.0 -I. -I/Users/runner/hostedtoolcache/Ruby/3.1.4/arm64/include -DENABLE_PATH_CHECK=0 -I/opt/homebrew/opt/gmp/include -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -D_DARWIN_UNLIMITED_SELECT -D_REENTRANT -fdeclspec -O3 -fno-fast-math -ggdb3 -Wall -Wextra -Wdeprecated-declarations -Wdivision-by-zero -Wimplicit-function-declaration -Wimplicit-int -Wmisleading-indentation -Wpointer-arith -Wshorten-64-to-32 -Wwrite-strings -Wold-style-definition -Wmissing-noreturn -Wno-cast-function-type -Wno-constant-logical-operand -Wno-long-long -Wno-missing-field-initializers -Wno-overlength-strings -Wno-parentheses-equality -Wno-self-assign -Wno-tautological-compare -Wno-unused-parameter -Wno-unused-value -Wunused-variable -Wextra-tokens -Wundef -fno-common -pipe conftest.c -L. -L/Users/runner/hostedtoolcache/Ruby/3.1.4/arm64/lib -L. -L/Users/runner/hostedtoolcache/Ruby/3.1.4/arm64/lib -fstack-protector-strong -L/opt/homebrew/opt/gmp/lib -lruby.3.1 "
dyld[47952]: terminating because inserted dylib '/private/var/folders/df/1dm_t2rx0054k7bw1g_7nyl80000gn/T/ruby-build.20231012101401.55539.tTlMYN/ruby-3.1.4/libruby.3.1.dylib' could not be loaded: tried: '/private/var/folders/df/1dm_t2rx0054k7bw1g_7nyl80000gn/T/ruby-build.20231012101401.55539.tTlMYN/ruby-3.1.4/libruby.3.1.dylib' (mach-o file, but is an incompatible architecture (have 'arm64', need '')), '/System/Volumes/Preboot/Cryptexes/OS/private/var/folders/df/1dm_t2rx0054k7bw1g_7nyl80000gn/T/ruby-build.20231012101401.55539.tTlMYN/ruby-3.1.4/libruby.3.1.dylib' (no such file), '/private/var/folders/df/1dm_t2rx0054k7bw1g_7nyl80000gn/T/ruby-build.20231012101401.55539.tTlMYN/ruby-3.1.4/libruby.3.1.dylib' (mach-o file, but is an incompatible architecture (have 'arm64', need '')), './libruby.3.1.dylib' (no such file), '/Users/runner/hostedtoolcache/Ruby/3.1.4/arm64/lib/libruby.3.1.dylib' (mach-o file, but is an incompatible architecture (have 'arm64', need ''))
dyld[47952]: tried: '/private/var/folders/df/1dm_t2rx0054k7bw1g_7nyl80000gn/T/ruby-build.20231012101401.55539.tTlMYN/ruby-3.1.4/libruby.3.1.dylib' (mach-o file, but is an incompatible architecture (have 'arm64', need '')), '/System/Volumes/Preboot/Cryptexes/OS/private/var/folders/df/1dm_t2rx0054k7bw1g_7nyl80000gn/T/ruby-build.20231012101401.55539.tTlMYN/ruby-3.1.4/libruby.3.1.dylib' (no such file), '/private/var/folders/df/1dm_t2rx0054k7bw1g_7nyl80000gn/T/ruby-build.20231012101401.55539.tTlMYN/ruby-3.1.4/libruby.3.1.dylib' (mach-o file, but is an incompatible architecture (have 'arm64', need '')), './libruby.3.1.dylib' (no such file), '/Users/runner/hostedtoolcache/Ruby/3.1.4/arm64/lib/libruby.3.1.dylib' (mach-o file, but is an incompatible architecture (have 'arm64', need ''))
checked program was:
/* begin */
1: #include "ruby.h"
2:
3: int main(int argc, char **argv)
4: {
5: return !!argv[argc];
6: }
/* end */
</code></pre>
<p>I believe this bug has nothing to do with ruby-build except that ruby-build does <code>--enable-shared</code> by default.</p>
<p>A known workaround is to use <code>--disable-shared</code>: <a href="https://github.com/rbenv/ruby-build/discussions/1961#discussioncomment-4031745" class="external">https://github.com/rbenv/ruby-build/discussions/1961#discussioncomment-4031745</a><br>
Lots of other people met the same or similar issue as discussed there.<br>
Also discussed in <a href="https://github.com/ruby/rbs/issues/877" class="external">https://github.com/ruby/rbs/issues/877</a></p>
<p>It would be nice if this could be fixed on the 3.1 branch.</p>
Ruby master - Bug #19910 (Open): Set#delete_if behavior inconsistent with Array/Hash
https://redmine.ruby-lang.org/issues/19910
2023-10-02T21:05:34Z
segiddins (Samuel Giddins)
segiddins@segiddins.me
<p>Given the following script:</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="c1">#!/usr/bin/env ruby</span>
<span class="nb">require</span> <span class="s1">'set'</span>
<span class="k">def</span> <span class="nf">enum</span><span class="p">(</span><span class="n">collection</span><span class="p">)</span>
<span class="n">i</span> <span class="o">=</span> <span class="mi">0</span>
<span class="n">collection</span><span class="p">.</span><span class="nf">delete_if</span> <span class="k">do</span>
<span class="n">i</span> <span class="o">+=</span> <span class="mi">1</span>
<span class="k">raise</span> <span class="no">ArgumentError</span> <span class="k">if</span> <span class="n">i</span> <span class="o">==</span> <span class="mi">6</span>
<span class="n">i</span><span class="p">.</span><span class="nf">odd?</span>
<span class="k">end</span>
<span class="k">rescue</span> <span class="no">ArgumentError</span>
<span class="k">return</span> <span class="n">collection</span>
<span class="k">end</span>
<span class="n">pp</span> <span class="n">enum</span><span class="p">([</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">6</span><span class="p">,</span> <span class="mi">7</span><span class="p">])</span>
<span class="n">pp</span> <span class="n">enum</span><span class="p">([</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">6</span><span class="p">,</span> <span class="mi">7</span><span class="p">].</span><span class="nf">to_h</span> <span class="p">{</span> <span class="p">[</span><span class="n">_1</span><span class="p">,</span> <span class="n">_1</span><span class="p">]</span> <span class="p">})</span>
<span class="n">pp</span> <span class="n">enum</span><span class="p">([</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">6</span><span class="p">,</span> <span class="mi">7</span><span class="p">].</span><span class="nf">to_set</span><span class="p">)</span>
</code></pre>
<p>It results in:</p>
<pre><code>[1, 3, 5, 6, 7]
{1=>1, 3=>3, 5=>5, 6=>6, 7=>7}
#<Set: {0, 1, 2, 3, 4, 5, 6, 7}>
</code></pre>
<p>As you can see, when an exception is raise inside <code>delete_if</code> on Hash/Array, the already-considered elements are still removed from the array. For <code>Set</code>, no elements are deleted (due to the implementation that builds up an intermediary list of elements to delete, then removes them from the underlying hash afterwards). It would be very helpful if <code>Set#delete_if</code> behaved consistently with other core collection types</p>
Ruby master - Bug #19891 (Open): rb_mRubyVMFrozenCore is reported by DTrace but ignored by TraceP...
https://redmine.ruby-lang.org/issues/19891
2023-09-19T06:54:05Z
vo.x (Vit Ondruch)
v.ondruch@tiscali.cz
<p>This is related to <a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug: rb_mRubyVMFrozenCore is broken by GC run (Closed)" href="https://redmine.ruby-lang.org/issues/18257">#18257</a> where I wonder why rb_mRubyVMFrozenCore is ignored by TracePoint (if I am not mistaken) <a href="https://github.com/ruby/ruby/blob/647390308239fbf82d159ecd83ed8df090af518d/vm_trace.c#L431" class="external">1</a>:</p>
<pre><code> if (ec->trace_arg == NULL && /* check reentrant */
trace_arg->self != rb_mRubyVMFrozenCore /* skip special methods. TODO: remove it. */) {
</code></pre>
<p>This was introduced in <a class="changeset" title="* vm_core.h (exec_event_hooks): skips RubyVM::FrozenCore. git-svn-id: svn+ssh://ci.ruby-lang.or..." href="https://redmine.ruby-lang.org/projects/ruby-master/repository/git/revisions/1be7c799e6ed39f7ac41906c05db149e8c391add">git|1be7c799e6ed39f7ac41906c05db149e8c391add</a> but hard to guess what was the reason. If there were issues similar to @18257 or if it is by design.</p>
<p>The <code>TODO</code> part was introduced by <a class="changeset" title="* vm_trace.c, vm_core.h: simplify tracing mechanism. (1) add rb_hook_list_t data structure whic..." href="https://redmine.ruby-lang.org/projects/ruby-master/repository/git/revisions/4a4a702e61d1c5585d522f1185a82a5685c554f6">git|4a4a702e61d1c5585d522f1185a82a5685c554f6</a> which also does not give a clue what is intention here.</p>
<p>Generally, my point is that it is strange that DTrace would report about rb_mRubyVMFrozenCore while TracePoint is happy to skip it.</p>
Ruby master - Bug #19875 (Open): Ruby 3.0 -> 3.1 Performance regression in String#count
https://redmine.ruby-lang.org/issues/19875
2023-09-12T14:18:33Z
iz (Illia Zub)
<p><code>String#count</code> became slower since Ruby 3.1. Originally found by <code>@Freaky</code>: <a href="https://github.com/ruby/ruby/pull/4001#issuecomment-1714779781" class="external">https://github.com/ruby/ruby/pull/4001#issuecomment-1714779781</a></p>
<p>Compared using the <a href="https://github.com/benchmark-driver/benchmark-driver" class="external"><code>benchmark-driver</code> gem</a>.</p>
<pre><code>$ benchmark-driver tmp/string_count_benchmark_driver.yml --rbenv '3.1.1;3.1.4;2.7.2;3.2.2;3.0.6'
Calculating -------------------------------------
3.1.1 3.1.4 2.7.2 3.2.2 3.0.6
count 465.804 463.741 865.783 462.711 857.395 i/s - 10.000k times in 21.468251s 21.563768s 11.550239s 21.611783s 11.663235s
Comparison:
count
2.7.2: 865.8 i/s
3.0.6: 857.4 i/s - 1.01x slower
3.1.1: 465.8 i/s - 1.86x slower
3.1.4: 463.7 i/s - 1.87x slower
3.2.2: 462.7 i/s - 1.87x slower
</code></pre>
<p>Benchmark:</p>
<pre><code class="yml syntaxhl" data-language="yml"><span class="s">$ cat ./tmp/string_count_benchmark_driver.yml</span>
<span class="na">loop_count</span><span class="pi">:</span> <span class="s">10_000</span>
<span class="na">prelude</span><span class="pi">:</span> <span class="pi">|</span>
<span class="s">html = "\nruby\n" * 1024 * 1024</span>
<span class="na">benchmark</span><span class="pi">:</span>
<span class="na">count</span><span class="pi">:</span> <span class="s">html.count($/)</span>
</code></pre>
<hr>
<p><em>Initially, I noticed the difference between <code>str.count($/)</code> and <code>str.lines.size</code> when working on the performance improvement: <a href="https://serpapi.com/blog/lines-count-failed-deployments/" class="external">https://serpapi.com/blog/lines-count-failed-deployments/</a></em></p>
Ruby master - Bug #19869 (Open): Mark skipped test somehow
https://redmine.ruby-lang.org/issues/19869
2023-09-08T15:01:20Z
vo.x (Vit Ondruch)
v.ondruch@tiscali.cz
<p>When Minitest was used to execute the Ruby test suite, skipped test were cleanly marked, e.g.:</p>
<pre><code>[14036/25715] TestGemExtCmakeBuilder#test_self_build_has_makefile = s
</code></pre>
<p>However, with the test-unit the output is:</p>
<pre><code>[14036/25715] TestGemExtCmakeBuilder#test_self_build_has_makefile = 0.01 s
</code></pre>
<p>This is problematic, because running test suite, I can see that some test were skipped:</p>
<pre><code>25705 tests, 6108213 assertions, 0 failures, 0 errors, 99 skips
</code></pre>
<p>But I can't tell which. Is there a chance to fix this?</p>
Ruby master - Bug #19865 (Open): Segfault when calling user signal handlers during VM shutdown
https://redmine.ruby-lang.org/issues/19865
2023-09-06T08:56:16Z
ivoanjo (Ivo Anjo)
ivo.anjo@datadoghq.com
<p>Howdy 👋! I work for Datadog <a href="https://github.com/DataDog/dd-trace-rb" class="external">on the <code>ddtrace</code> gem</a> . I've found this issue while investigating a <a href="https://github.com/DataDog/dd-trace-rb/issues/2980" class="external">customer crash report</a>.</p>
<a name="Background"></a>
<h3 >Background<a href="#Background" class="wiki-anchor">¶</a></h3>
<p>The original issue was found in a production app. A number of things need to be in play to cause it.</p>
<p>The <a href="https://rubygems.org/gems/ruby-odbc" class="external"><code>ruby-odbc</code></a> gem provides a way of accessing databases through the ODBC API. It wraps a database connection as a Data object, with a free function that, prior to freeing the native resources, disconnects from the database if the connection was still active.</p>
<p>Because disconnecting from the database is a blocking operation, the gem (reasonably, in my opinion), releases the global VM lock before disconnecting.</p>
<p>The trigger for the crash is:</p>
<ol>
<li>The app in question used puma, and puma installs a <code>Signal.trap('TERM')</code>
</li>
<li>The database object was still connected when the app started to shut down</li>
<li>A VM shutdown starts...</li>
<li>Half-way through shutdown, the VM received a SIGTERM signal, and queued it for processing</li>
<li>The VM calls the free function on all objects</li>
<li>The ruby-odbc gem sees there's an active database connection, and tries to release the GVL to call the blocking disconnect</li>
<li>Before releasing the GVL, the VM checks for pending interruptions</li>
<li>The VM tries to run the Ruby-level signal handler method half-way through VM shutdown, when you can no longer run Ruby code</li>
<li>Segfault</li>
</ol>
<a name="How-to-reproduce-Ruby-version-amp-script"></a>
<h3 >How to reproduce (Ruby version & script)<a href="#How-to-reproduce-Ruby-version-amp-script" class="wiki-anchor">¶</a></h3>
<p>I was able to reproduce on a minimal example on Ruby 3.2.2 (<code>ruby 3.2.2 (2023-03-30 revision e51014f9c0) [x86_64-linux]</code>) and recent master (<code>ruby 3.3.0dev (2023-08-17T07:30:01Z master d26b015e83) [x86_64-linux]</code>).</p>
<p>I've put the test-case up on github as well <a href="https://github.com/DataDog/signal-bug-testcase" class="external">https://github.com/DataDog/signal-bug-testcase</a>, but here's the important bits:</p>
<p><code>signal-bug-testcase.rb</code>:</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="nb">require</span> <span class="s1">'signal_bug_testcase'</span>
<span class="no">Signal</span><span class="p">.</span><span class="nf">trap</span><span class="p">(</span><span class="s2">"TERM"</span><span class="p">)</span> <span class="p">{</span> <span class="nb">puts</span> <span class="s2">"Hello, world"</span> <span class="p">}</span>
<span class="no">FOO</span> <span class="o">=</span> <span class="no">SignalBugTestcase</span><span class="p">.</span><span class="nf">new</span>
</code></pre>
<p><code>signal_bug_testcase.c</code>:</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="c1">#include <ruby.h></span>
<span class="c1">#include <ruby/thread.h></span>
<span class="c1">#include <signal.h></span>
<span class="c1">#include <unistd.h></span>
<span class="n">typedef</span> <span class="n">struct</span> <span class="p">{</span> <span class="n">int</span> <span class="n">dummy</span><span class="p">;</span> <span class="p">}</span> <span class="no">BugTestcase</span><span class="p">;</span>
<span class="n">void</span> <span class="o">*</span><span class="n">test_nogvl</span><span class="p">(</span><span class="n">void</span> <span class="o">*</span><span class="n">unused</span><span class="p">)</span> <span class="p">{</span>
<span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s2">"GVL released!</span><span class="se">\n</span><span class="s2">"</span><span class="p">);</span>
<span class="k">return</span> <span class="no">NULL</span><span class="p">;</span>
<span class="p">}</span>
<span class="n">static</span> <span class="n">void</span> <span class="n">bug_testcase_free</span><span class="p">(</span><span class="n">void</span><span class="o">*</span> <span class="n">ptr</span><span class="p">)</span> <span class="p">{</span>
<span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s2">"Free getting called! Sending signal...</span><span class="se">\n</span><span class="s2">"</span><span class="p">);</span>
<span class="n">kill</span><span class="p">(</span><span class="n">getpid</span><span class="p">(),</span> <span class="no">SIGTERM</span><span class="p">);</span>
<span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s2">"SIGTERM signal queued, trying to release GVL...</span><span class="se">\n</span><span class="s2">"</span><span class="p">);</span>
<span class="n">rb_thread_call_without_gvl</span><span class="p">(</span><span class="n">test_nogvl</span><span class="p">,</span> <span class="no">NULL</span><span class="p">,</span> <span class="no">NULL</span><span class="p">,</span> <span class="no">NULL</span><span class="p">);</span>
<span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s2">"After releasing GVL!</span><span class="se">\n</span><span class="s2">"</span><span class="p">);</span>
<span class="n">free</span><span class="p">(</span><span class="n">ptr</span><span class="p">);</span>
<span class="p">}</span>
<span class="n">const</span> <span class="n">rb_data_type_t</span> <span class="n">bug_testcase_data_type</span> <span class="o">=</span> <span class="p">{</span>
<span class="p">.</span><span class="nf">wrap_struct_name</span> <span class="o">=</span> <span class="s2">"SignalBugTestcase"</span><span class="p">,</span>
<span class="p">.</span><span class="nf">function</span> <span class="o">=</span> <span class="p">{</span> <span class="no">NULL</span><span class="p">,</span> <span class="n">bug_testcase_free</span><span class="p">,</span> <span class="no">NULL</span> <span class="p">},</span>
<span class="p">.</span><span class="nf">flags</span> <span class="o">=</span> <span class="no">RUBY_TYPED_FREE_IMMEDIATELY</span>
<span class="p">};</span>
<span class="no">VALUE</span> <span class="n">bug_testcase_alloc</span><span class="p">(</span><span class="no">VALUE</span> <span class="n">klass</span><span class="p">)</span> <span class="p">{</span>
<span class="no">BugTestcase</span><span class="o">*</span> <span class="n">obj</span> <span class="o">=</span> <span class="n">calloc</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">sizeof</span><span class="p">(</span><span class="no">BugTestcase</span><span class="p">));</span>
<span class="k">return</span> <span class="no">TypedData_Make_Struct</span><span class="p">(</span><span class="n">klass</span><span class="p">,</span> <span class="no">BugTestcase</span><span class="p">,</span> <span class="o">&</span><span class="n">bug_testcase_data_type</span><span class="p">,</span> <span class="n">obj</span><span class="p">);</span>
<span class="p">}</span>
<span class="n">void</span> <span class="no">Init_signal_bug_testcase</span><span class="p">(</span><span class="n">void</span><span class="p">)</span> <span class="p">{</span>
<span class="no">VALUE</span> <span class="n">cBugTestcase</span> <span class="o">=</span> <span class="n">rb_define_class</span><span class="p">(</span><span class="s2">"SignalBugTestcase"</span><span class="p">,</span> <span class="n">rb_cObject</span><span class="p">);</span>
<span class="n">rb_define_alloc_func</span><span class="p">(</span><span class="n">cBugTestcase</span><span class="p">,</span> <span class="n">bug_testcase_alloc</span><span class="p">);</span>
<span class="p">}</span>
</code></pre>
<a name="Expectation-and-result"></a>
<h3 >Expectation and result<a href="#Expectation-and-result" class="wiki-anchor">¶</a></h3>
<p>No segfault happens.</p>
<p>Interestingly, on Ruby 2.7, the VM exits half-way through but doesn't always segfault, but running it a few times always triggers the issue. On 3.2+ it crashes every time for me.</p>
<p>I suspect the right thing here is to no longer accept/try to run any Ruby-level signal handlers after VM shutdown starts.</p>
<p>Here's what I see with this test-case:</p>
<pre><code>$ bundle exec ruby lib/signal-bug-testcase.rb
Free getting called! Sending signal...
SIGTERM signal queued, trying to release GVL...
lib/signal-bug-testcase.rb:3: [BUG] Segmentation fault at 0x0000000000000007
ruby 3.2.2 (2023-03-30 revision e51014f9c0) [x86_64-linux]
-- Control frame information -----------------------------------------------
c:0003 p:---- s:0011 e:000010 CFUNC :puts
c:0002 p:0005 s:0006 e:000005 BLOCK lib/signal-bug-testcase.rb:3 [FINISH]
c:0001 p:0000 s:0003 E:0001a0 DUMMY [FINISH]
-- Ruby level backtrace information ----------------------------------------
lib/signal-bug-testcase.rb:3:in `block in <main>'
lib/signal-bug-testcase.rb:3:in `puts'
-- Machine register context ------------------------------------------------
RIP: 0x000070aa64cedbe7 RBP: 0x000070aa648e8fd0 RSP: 0x00007ffc5c057608
RAX: 0x0000000000004171 RBX: 0x00007ffc5c057630 RCX: 0x0000000000000001
RDX: 0x00007ffc5c057630 RDI: 0x0000000000000007 RSI: 0x0000000000004171
R8: 0x000000000000021b R9: 0x0000000000000000 R10: 0x000070aa63eff048
R11: 0x0000000000000000 R12: 0x000070aa648e8fd0 R13: 0x0000000000004171
R14: 0x0000000000000007 R15: 0x000070aa648e8ff0 EFL: 0x0000000000010202
-- C level backtrace information -------------------------------------------
ruby-3.2.2/lib/libruby.so.3.2(rb_print_backtrace+0xd) [0x70aa64d5bb5f] ruby-3.2.2/vm_dump.c:785
ruby-3.2.2/lib/libruby.so.3.2(rb_vm_bugreport) ruby-3.2.2/vm_dump.c:1080
ruby-3.2.2/lib/libruby.so.3.2(rb_bug_for_fatal_signal+0xf4) [0x70aa64b52164] ruby-3.2.2/error.c:813
ruby-3.2.2/lib/libruby.so.3.2(sigsegv+0x4d) [0x70aa64cab0fd] ruby-3.2.2/signal.c:964
/lib/x86_64-linux-gnu/libc.so.6(0x70aa64642520) [0x70aa64642520]
ruby-3.2.2/lib/libruby.so.3.2(hash_table_index+0x0) [0x70aa64cedbe7] ruby-3.2.2/symbol.h:72
ruby-3.2.2/lib/libruby.so.3.2(rb_id_table_lookup) ruby-3.2.2/id_table.c:230
ruby-3.2.2/lib/libruby.so.3.2(cached_callable_method_entry+0x24) [0x70aa64d356bb] ruby-3.2.2/vm_method.c:1295
ruby-3.2.2/lib/libruby.so.3.2(callable_method_entry_or_negative) ruby-3.2.2/vm_method.c:1365
ruby-3.2.2/lib/libruby.so.3.2(callable_method_entry) ruby-3.2.2/vm_method.c:1402
ruby-3.2.2/lib/libruby.so.3.2(rb_callable_method_entry) ruby-3.2.2/vm_method.c:1409
ruby-3.2.2/lib/libruby.so.3.2(gccct_method_search_slowpath+0x38) [0x70aa64d36258] ruby-3.2.2/vm_eval.c:434
ruby-3.2.2/lib/libruby.so.3.2(rb_call0+0x267) [0x70aa64d4e877] ruby-3.2.2/vm_eval.c:483
ruby-3.2.2/lib/libruby.so.3.2(rb_call+0x32) [0x70aa64d4f406] ruby-3.2.2/vm_eval.c:877
ruby-3.2.2/lib/libruby.so.3.2(rb_funcallv_kw) ruby-3.2.2/vm_eval.c:1074
ruby-3.2.2/lib/libruby.so.3.2(vm_call_cfunc_with_frame+0x127) [0x70aa64d30277] ruby-3.2.2/vm_insnhelper.c:3268
ruby-3.2.2/lib/libruby.so.3.2(vm_sendish+0x97) [0x70aa64d407a4] ruby-3.2.2/vm_insnhelper.c:5080
ruby-3.2.2/lib/libruby.so.3.2(vm_exec_core) ruby-3.2.2/insns.def:820
ruby-3.2.2/lib/libruby.so.3.2(rb_vm_exec+0xd3) [0x70aa64d460d3] ruby-3.2.2/vm.c:2374
ruby-3.2.2/lib/libruby.so.3.2(rb_vm_invoke_proc+0x5f) [0x70aa64d4bfcf] ruby-3.2.2/vm.c:1603
ruby-3.2.2/lib/libruby.so.3.2(vm_call0_body+0x5df) [0x70aa64d4c5cf] ruby-3.2.2/vm_eval.c:274
ruby-3.2.2/lib/libruby.so.3.2(vm_call0_cc+0x77) [0x70aa64d4e7e7] ruby-3.2.2/vm_eval.c:87
ruby-3.2.2/lib/libruby.so.3.2(rb_call0) ruby-3.2.2/vm_eval.c:551
ruby-3.2.2/lib/libruby.so.3.2(rb_call+0x32) [0x70aa64d4f406] ruby-3.2.2/vm_eval.c:877
ruby-3.2.2/lib/libruby.so.3.2(rb_funcallv_kw) ruby-3.2.2/vm_eval.c:1074
ruby-3.2.2/lib/libruby.so.3.2(rb_eval_cmd_kw+0x142) [0x70aa64d4f562] ruby-3.2.2/vm_eval.c:1923
ruby-3.2.2/lib/libruby.so.3.2(signal_exec+0xf6) [0x70aa64caae16] ruby-3.2.2/signal.c:1064
ruby-3.2.2/lib/libruby.so.3.2(rb_threadptr_execute_interrupts+0x36b) [0x70aa64cf7078] ruby-3.2.2/thread.c:2334
ruby-3.2.2/lib/libruby.so.3.2(rb_threadptr_execute_interrupts) ruby-3.2.2/thread.c:2291
ruby-3.2.2/lib/libruby.so.3.2(rb_vm_check_ints+0xb) [0x70aa64cf7ac5] ruby-3.2.2/vm_core.h:1994
ruby-3.2.2/lib/libruby.so.3.2(rb_vm_check_ints) ruby-3.2.2/vm_core.h:1985
ruby-3.2.2/lib/libruby.so.3.2(unblock_function_set) ruby-3.2.2/thread.c:320
ruby-3.2.2/lib/libruby.so.3.2(blocking_region_begin) ruby-3.2.2/thread.c:1485
ruby-3.2.2/lib/libruby.so.3.2(rb_nogvl+0xbf) [0x70aa64cf90cf] ruby-3.2.2/thread.c:1548
signal-bug-testcase-2/lib/signal_bug_testcase.so(fprintf+0x0) [0x70aa6518f299] ../../../../ext/signal_bug_testcase/signal_bug_testcase.c:17
signal-bug-testcase-2/lib/signal_bug_testcase.so(bug_testcase_free) ../../../../ext/signal_bug_testcase/signal_bug_testcase.c:18
ruby-3.2.2/lib/libruby.so.3.2(run_final+0xf) [0x70aa64b73172] ruby-3.2.2/gc.c:4388
ruby-3.2.2/lib/libruby.so.3.2(finalize_list) ruby-3.2.2/gc.c:4407
ruby-3.2.2/lib/libruby.so.3.2(finalize_deferred_heap_pages) ruby-3.2.2/gc.c:4436
ruby-3.2.2/lib/libruby.so.3.2(rb_objspace_call_finalizer+0x350) [0x70aa64b80d70] ruby-3.2.2/gc.c:4573
ruby-3.2.2/lib/libruby.so.3.2(rb_ec_finalize+0x2a) [0x70aa64b5d6d1] ruby-3.2.2/eval.c:168
ruby-3.2.2/lib/libruby.so.3.2(rb_ec_cleanup) ruby-3.2.2/eval.c:262
ruby-3.2.2/lib/libruby.so.3.2(ruby_run_node+0x9d) [0x70aa64b5d91d] ruby-3.2.2/eval.c:330
ruby-3.2.2/bin/ruby(rb_main+0x21) [0x5d5d1295f187] ./main.c:38
ruby-3.2.2/bin/ruby(main) ./main.c:57
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_call_main+0x80) [0x70aa64629d90] ../sysdeps/nptl/libc_start_call_main.h:58
/lib/x86_64-linux-gnu/libc.so.6(call_init+0x0) [0x70aa64629e40] ../csu/libc-start.c:392
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main_impl) ../csu/libc-start.c:379
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main) (null):0
[0x5d5d1295f1d5]
</code></pre>
Ruby master - Bug #19841 (Open): Marshal.dump stack overflow with recursive Time
https://redmine.ruby-lang.org/issues/19841
2023-08-18T18:53:57Z
segiddins (Samuel Giddins)
segiddins@segiddins.me
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="c1">#!/usr/bin/env ruby</span>
<span class="nb">puts</span> <span class="no">RUBY_VERSION</span>
<span class="n">t</span> <span class="o">=</span> <span class="no">Time</span><span class="p">.</span><span class="nf">at</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="ss">:nanosecond</span><span class="p">)</span>
<span class="n">t</span><span class="p">.</span><span class="nf">instance_variable_set</span> <span class="ss">:@itself</span><span class="p">,</span> <span class="n">t</span>
<span class="no">Marshal</span><span class="p">.</span><span class="nf">dump</span><span class="p">(</span><span class="n">t</span><span class="p">)</span>
</code></pre>
<p>Yields a stack overflow error from the <code>Marshal.dump</code> call, even though Marshal is explicitly able to handle cyclical references</p>
Ruby master - Bug #19831 (Open): warning message of linker with macOS Sonoma beta
https://redmine.ruby-lang.org/issues/19831
2023-08-04T09:21:01Z
hsbt (Hiroshi SHIBATA)
hsbt@ruby-lang.org
<p>Xcode 15 beta and macOS Sonoma beta show the following warnings with <code>make</code></p>
<pre><code>(snip)
linking miniruby
ld: warning: ignoring duplicate library '-lpthread'
miniruby: replacing existing signature
exe/ruby: replacing existing signature
builtin_binary.inc updated
compiling builtin.c
linking static-library libruby.3.3-static.a
linking ruby
ld: warning: ignoring duplicate library '-lgmp'
ld: warning: ignoring duplicate library '-ldl'
ld: warning: ignoring duplicate library '-lobjc'
ld: warning: ignoring duplicate library '-lpthread'
ld: warning: ignoring duplicate library '-lpthread'
(snip)
</code></pre>
<p>I'm not investigate that yet. It may be caused by <code>ld-prime</code> that is new linker of macOS platform.</p>
<pre><code>$ pkgutil --pkg-info=com.apple.pkg.CLTools_Executables
package-id: com.apple.pkg.CLTools_Executables
version: 15.0.0.0.1.1690355577
volume: /
location: /
install-time: 1690967267
</code></pre>
Ruby master - Bug #19765 (Open): Ractor.make_shareable ignores self of a proc created from a Method
https://redmine.ruby-lang.org/issues/19765
2023-07-13T03:05:31Z
Ethan (Ethan -)
notethan@gmail.com
<p>An unshareable receiver of a Proc or a Method will cause make_shareable to error, but this does not happen with a proc from Method#to_proc:</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="n">str</span> <span class="o">=</span> <span class="s2">""</span>
<span class="n">a</span> <span class="o">=</span> <span class="n">str</span><span class="p">.</span><span class="nf">instance_exec</span> <span class="p">{</span> <span class="nb">proc</span> <span class="p">{</span> <span class="nb">to_s</span> <span class="p">}</span> <span class="p">}</span>
<span class="no">Ractor</span><span class="p">.</span><span class="nf">make_shareable</span> <span class="n">a</span>
<span class="c1"># => <internal:ractor>:820:in `make_shareable': Proc's self is not shareable: #<Proc:0x00000001064b62c8 (irb):1> (Ractor::IsolationError)</span>
<span class="n">b</span> <span class="o">=</span> <span class="n">str</span><span class="p">.</span><span class="nf">instance_exec</span> <span class="p">{</span> <span class="nb">method</span><span class="p">(</span><span class="ss">:to_s</span><span class="p">)</span> <span class="p">}</span>
<span class="no">Ractor</span><span class="p">.</span><span class="nf">make_shareable</span> <span class="n">b</span>
<span class="c1"># => <internal:ractor>:820:in `make_shareable': can not make shareable object for #<Method: String#to_s()> (Ractor::Error)</span>
<span class="n">c</span> <span class="o">=</span> <span class="n">str</span><span class="p">.</span><span class="nf">instance_exec</span> <span class="p">{</span> <span class="nb">method</span><span class="p">(</span><span class="ss">:to_s</span><span class="p">).</span><span class="nf">to_proc</span> <span class="p">}</span>
<span class="no">Ractor</span><span class="p">.</span><span class="nf">make_shareable</span> <span class="n">c</span>
<span class="n">c</span><span class="p">.</span><span class="nf">call</span>
<span class="c1"># => ""</span>
<span class="n">str</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"!"</span>
<span class="n">c</span><span class="p">.</span><span class="nf">call</span>
<span class="c1"># => "!"</span>
</code></pre>
<p>Related, maybe:<br>
<a class="issue tracker-1 status-2 priority-4 priority-default" title="Bug: Proc objects are not traversed for shareable check during Ractor.make_shareable(prok) (Assigned)" href="https://redmine.ruby-lang.org/issues/19372">#19372</a><br>
<a class="issue tracker-1 status-2 priority-4 priority-default" title="Bug: Issue with Ractor.make_shareable with curried procs (Assigned)" href="https://redmine.ruby-lang.org/issues/19374">#19374</a></p>
<p>Tangential: why does Proc cause Ractor::IsolationError but Method causes Ractor::Error?</p>
Ruby master - Bug #19761 (Open): AddressSanitizer fails with Thread and Process
https://redmine.ruby-lang.org/issues/19761
2023-07-08T07:26:56Z
nobu (Nobuyoshi Nakada)
nobu@ruby-lang.org
<p>With AddressSanitizer on macOS, this code crashes.</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="nb">system</span><span class="p">(</span><span class="s1">''</span><span class="p">)</span>
<span class="no">Thread</span><span class="p">.</span><span class="nf">new</span> <span class="p">{}</span>
<span class="mi">300_000</span><span class="p">.</span><span class="nf">times</span> <span class="k">do</span>
<span class="no">String</span><span class="p">.</span><span class="nf">new</span><span class="p">(</span><span class="ss">capacity: </span><span class="mi">1000</span><span class="p">)</span>
<span class="k">end</span>
</code></pre>
<pre><code>==62870==ERROR: AddressSanitizer failed to deallocate 0x8000 (32768) bytes at address 0x62d00000a400
AddressSanitizer: CHECK failed: sanitizer_posix.cpp:61 "(("unable to unmap" && 0)) != (0)" (0x0, 0x0) (tid=857549)
<empty stack>
Assertion Failed: ../debug/vm_core.h:1853:rb_current_execution_context:!expect_ec || ec != NULL
ruby 3.3.0dev (2023-07-08T02:54:37Z tmp 0083edc3a0) [x86_64-darwin22]
-- Crash Report log information --------------------------------------------
See Crash Report log file in one of the following locations:
* ~/Library/Logs/DiagnosticReports
* /Library/Logs/DiagnosticReports
for more details.
Don't forget to include the above Crash Report log file in bug reports.
-- C level backtrace information -------------------------------------------
</code></pre>
Ruby master - Bug #19756 (Open): URI::HTTP.build does not accept a host of `_gateway`, but `URI.p...
https://redmine.ruby-lang.org/issues/19756
2023-07-04T02:11:27Z
postmodern (Hal Brodigan)
postmodern.mod3@gmail.com
<p>I noticed a difference in behavior between <code>URI::HTTP.build</code> and <code>URI.parse</code>. <code>URI::HTTP.build</code> will not accept <code>host:</code> value of <code>_gateway</code>, but <code>URI.parse</code> will.</p>
<a name="Steps-To-Reproduce"></a>
<h2 >Steps To Reproduce<a href="#Steps-To-Reproduce" class="wiki-anchor">¶</a></h2>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="no">URI</span><span class="o">::</span><span class="no">HTTP</span><span class="p">.</span><span class="nf">build</span><span class="p">(</span><span class="ss">host: </span><span class="s2">"_gateway"</span><span class="p">)</span>
</code></pre>
<p>vs.</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="no">URI</span><span class="p">.</span><span class="nf">parse</span><span class="p">(</span><span class="s2">"http://_gateway"</span><span class="p">)</span>
</code></pre>
<a name="Expected-Results"></a>
<h3 >Expected Results<a href="#Expected-Results" class="wiki-anchor">¶</a></h3>
<p>Both raise the same exception, or return the same URI object.</p>
<a name="Actual-Results"></a>
<h3 >Actual Results<a href="#Actual-Results" class="wiki-anchor">¶</a></h3>
<pre><code>URI::HTTP.build(host: "_gateway")
/usr/share/ruby/uri/generic.rb:601:in `check_host': bad component(expected host component): _gateway (URI::InvalidComponentError)
from /usr/share/ruby/uri/generic.rb:640:in `host='
from /usr/share/ruby/uri/generic.rb:673:in `hostname='
from /usr/share/ruby/uri/generic.rb:190:in `initialize'
from /usr/share/ruby/uri/generic.rb:136:in `new'
from /usr/share/ruby/uri/generic.rb:136:in `build'
from /usr/share/ruby/uri/http.rb:61:in `build'
from (irb):2:in `<main>'
from /usr/local/share/gems/gems/irb-1.7.0/exe/irb:9:in `<top (required)>'
from /usr/local/bin/irb:25:in `load'
from /usr/local/bin/irb:25:in `<main>'
</code></pre>
<pre><code>URI.parse("https://_gateway")
# => #<URI::HTTPS https://_gateway>
</code></pre>
<a name="Additional-Information"></a>
<h2 >Additional Information<a href="#Additional-Information" class="wiki-anchor">¶</a></h2>
<pre><code>$ gem list uri
uri (default: 0.12.1)
</code></pre>
Ruby master - Bug #19749 (Open): Confirm correct behaviour when attaching private method with `#d...
https://redmine.ruby-lang.org/issues/19749
2023-06-28T13:40:35Z
itarato (Peter Arato)
<p>This issue is a special case of <a href="https://bugs.ruby-lang.org/issues/19745" class="external">https://bugs.ruby-lang.org/issues/19745</a>:</p>
<p>Should dynamically added private methods via <code>.singleton_class.send(:define_method,...</code> at the top-level be accessible publicly?</p>
<p>See the following example:</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="k">def</span> <span class="nf">bar</span><span class="p">;</span> <span class="k">end</span>
<span class="n">foo</span> <span class="o">=</span> <span class="no">Object</span><span class="p">.</span><span class="nf">new</span>
<span class="n">foo</span><span class="p">.</span><span class="nf">singleton_class</span><span class="p">.</span><span class="nf">define_method</span><span class="p">(</span><span class="ss">:bar</span><span class="p">,</span> <span class="nb">method</span><span class="p">(</span><span class="ss">:bar</span><span class="p">))</span>
<span class="n">foo</span><span class="p">.</span><span class="nf">bar</span> <span class="c1"># No error.</span>
</code></pre>
<p>The script above runs fine on latest Ruby 3.3. Is this correct to ignore the fact that the visibility in the caller context is the default top-level private visibility?</p>
<p>This came up during a TruffleRuby investigation (<a href="https://github.com/oracle/truffleruby/issues/3134" class="external">https://github.com/oracle/truffleruby/issues/3134</a>) where the result for the same script is: <code>private method 'bar' called for #<Object:0xc8> (NoMethodError)</code></p>
Ruby master - Bug #19703 (Open): text/binary mode of parent process fd is not properly inherited ...
https://redmine.ruby-lang.org/issues/19703
2023-05-31T14:34:29Z
YO4 (Yoshinao Muramatsu)
<p>Windows OS can't inherit parent process fds greater than 2, but C runtime library support this.<br>
<a href="https://learn.microsoft.com/en-us/cpp/c-runtime-library/spawn-wspawn-functions#environment-of-the-spawned-process" class="external">https://learn.microsoft.com/en-us/cpp/c-runtime-library/spawn-wspawn-functions#environment-of-the-spawned-process</a></p>
<p>So I made test tool below.<br>
This tool opens NUL device several times and create child ruby process that dumps fds' translation mode.</p>
<pre><code class="c syntaxhl" data-language="c"><span class="c1">// fdinherit.c : test file descprotor inheritance for windows C runtime</span>
<span class="cp">#include</span> <span class="cpf"><stdio.h></span><span class="cp">
#include</span> <span class="cpf"><stdlib.h></span><span class="cp">
#include</span> <span class="cpf"><process.h></span><span class="cp">
#include</span> <span class="cpf"><sys/types.h></span><span class="cp">
#include</span> <span class="cpf"><sys/stat.h></span><span class="cp">
#include</span> <span class="cpf"><share.h></span><span class="cp">
#include</span> <span class="cpf"><fcntl.h></span><span class="cp">
#include</span> <span class="cpf"><io.h></span><span class="cp">
</span>
<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span><span class="o">*</span> <span class="n">argv</span><span class="p">[])</span>
<span class="p">{</span>
<span class="kt">int</span> <span class="n">fh</span><span class="p">,</span> <span class="n">count</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<span class="n">errno_t</span> <span class="n">err</span><span class="p">;</span>
<span class="c1">// child process: read fds and check if it includes "\r" and prints</span>
<span class="c1">// '.' : read as binary</span>
<span class="c1">// 't' : read as text</span>
<span class="c1">// 'F' : open error (no fd?)</span>
<span class="kt">char</span> <span class="n">rb1</span><span class="p">[]</span> <span class="o">=</span>
<span class="s">"print '012'; 3.upto("</span><span class="p">;</span> <span class="kt">char</span> <span class="n">rb2</span><span class="p">[]</span> <span class="o">=</span> <span class="s">") { |n|"</span>
<span class="s">"print ((IO.for_fd(n, 'rb').read.include?(13.chr) ? '.' : 't') rescue 'F');"</span>
<span class="s">"puts if (n % 10) == 9"</span>
<span class="s">"}"</span><span class="p">;</span>
<span class="kt">char</span> <span class="n">upto</span><span class="p">[]</span> <span class="o">=</span> <span class="s">"-4294967295"</span><span class="p">;</span>
<span class="c1">// fd max number to test</span>
<span class="k">if</span> <span class="p">(</span><span class="n">argc</span> <span class="o">>=</span> <span class="mi">2</span><span class="p">)</span> <span class="n">count</span> <span class="o">=</span> <span class="n">atoi</span><span class="p">(</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">]);</span>
<span class="k">if</span> <span class="p">(</span><span class="n">count</span> <span class="o"><</span> <span class="mi">3</span><span class="p">)</span> <span class="n">count</span> <span class="o">=</span> <span class="mi">7</span><span class="p">;</span>
<span class="c1">// create crlf file (current directory)</span>
<span class="n">system</span><span class="p">(</span><span class="s">"echo;>crlf.txt"</span><span class="p">);</span>
<span class="c1">// open fds to inherit</span>
<span class="c1">// even fds are text mode, odd fds are binary mode</span>
<span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span> <span class="n">i</span> <span class="o"><=</span> <span class="n">count</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="n">err</span> <span class="o">=</span> <span class="n">_sopen_s</span><span class="p">(</span><span class="o">&</span><span class="n">fh</span><span class="p">,</span> <span class="s">"crlf.txt"</span><span class="p">,</span> <span class="n">_O_RDONLY</span> <span class="o">|</span> <span class="p">((</span><span class="n">i</span> <span class="o">&</span> <span class="mi">1</span><span class="p">)</span> <span class="o">?</span> <span class="n">_O_BINARY</span> <span class="o">:</span> <span class="n">_O_TEXT</span><span class="p">),</span> <span class="n">_SH_DENYNO</span><span class="p">,</span> <span class="n">_S_IREAD</span> <span class="o">|</span> <span class="n">_S_IWRITE</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="n">err</span> <span class="o">></span> <span class="mi">0</span><span class="p">)</span> <span class="n">printf</span><span class="p">(</span><span class="s">"%d %d</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span> <span class="n">err</span><span class="p">,</span> <span class="n">fh</span><span class="p">);</span>
<span class="p">}</span>
<span class="c1">// on child side, +1'd fd dump will fail (prints 'F')</span>
<span class="n">sprintf_s</span><span class="p">(</span><span class="n">upto</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">upto</span><span class="p">),</span> <span class="s">"%d"</span><span class="p">,</span> <span class="n">count</span> <span class="o">+</span> <span class="mi">1</span><span class="p">);</span>
<span class="c1">// on windows, arguments are joined into a string. so below has bad manners, but let me take a few corners.</span>
<span class="n">_spawnlp</span><span class="p">(</span><span class="n">_P_WAIT</span><span class="p">,</span> <span class="s">"ruby.exe"</span><span class="p">,</span> <span class="s">"ruby.exe"</span><span class="p">,</span> <span class="s">"-e"</span><span class="p">,</span> <span class="s">"</span><span class="se">\"</span><span class="s">"</span><span class="p">,</span> <span class="n">rb1</span><span class="p">,</span> <span class="n">upto</span><span class="p">,</span> <span class="n">rb2</span><span class="p">,</span> <span class="s">"</span><span class="se">\"</span><span class="s">"</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
<span class="n">_close</span><span class="p">(</span><span class="n">fh</span><span class="p">);</span>
<span class="p">}</span>
</code></pre>
<p>As an example, this would display something like this</p>
<pre><code>>fdinherit.exe
012.t.t.F
>fdinherit.exe 16
012.t.t.t.
t.t.t.tF
>
</code></pre>
<p>0,1,2 are stdin, stdout, stderr<br>
fds of 3,5,7,... are inherited as binary mode<br>
fds of 4,6,... are inherited as text mode</p>
<p>And I found a few things to point out.<br>
When I modify ruby part like "IO.for_fd(n, 'r')" / "IO.for_fd(n, 'rt')" / "IO.for_fd(n)",<br>
It get result like <code>012tttttF</code>, so translation mode are interprited wrong.<br>
The odd thing is that the conversion mode is interpreted as is when "IO.for_fd(n, 'rb')", which I think is the expected behavior when "IO.for_fd(n, 'r')".</p>
<p>This tool and ruby.exe each work with a combination of msvcrt 32/64bit and ucrt64, so the C runtime interface seems stable.<br>
My understanding is that MRI does not state that it supports inheritance of fds larger than 3 in windows, but it seems to work partially.<br>
Are there any chances for improvement?</p>
<p>For those who want to follow up: it seems that fds are not inherited via cmd.exe /c</p>
Ruby master - Bug #19701 (Open): The rb_classext_t::classpath field is not marked for T_ICLASS
https://redmine.ruby-lang.org/issues/19701
2023-05-31T06:26:22Z
wks (Kunshan Wang)
<p>I am hacking Ruby to dump information about some objects, and I found that the <code>rb_classext_t::classpath</code> field for <code>T_ICLASS</code> objects sometimes contains dangling references to dead objects.</p>
<p>The commit <a href="https://github.com/ruby/ruby/commit/081cc4eb283cb01ddffb364397e5175dbfacab66" class="external">https://github.com/ruby/ruby/commit/081cc4eb283cb01ddffb364397e5175dbfacab66</a> set the <code>classpath</code> field of <code>rb_mRubyVMFrozenCore</code> to a string "FrozenCore" so that it can be dumped using the <code>rb_dump_literal</code> function.</p>
<p>However, in <code>gc_mark_children</code>, if the <code>obj</code> is a <code>T_ICLASS</code>, the <code>RCLASS_EXT(obj)->classpath</code> will not be marked. As a result, if <code>rb_mRubyVMFrozenCore</code> is the only object that holds a reference to the string "FrozenCore", the string will be considered garbage and reclaimed during a GC, and the <code>classpath</code> will contain a dangling pointer.</p>
<p>There are two solutions to this problem. We can take <em>one</em> of the approaches below (not both).</p>
<ol>
<li>Let the GC mark the <code>classpath</code> field. I drafted a pull request here: <a href="https://github.com/ruby/ruby/pull/7875" class="external">https://github.com/ruby/ruby/pull/7875</a>
</li>
<li>Revert the commit <a href="https://github.com/ruby/ruby/commit/081cc4eb283cb01ddffb364397e5175dbfacab66" class="external">https://github.com/ruby/ruby/commit/081cc4eb283cb01ddffb364397e5175dbfacab66</a>
</li>
</ol>
<p>Marking the <code>classpath</code> field in GC will keep the <code>rb_dump_literal</code> function working. For debug purposes, we can also use that field to identify what object a given <code>T_ICLASS</code> is. Adding one marked field may make GC slower, but I don't think it will be observable because there are far less <code>T_ICLASS</code> objects than ordinary objects.</p>
<p>If we reverting the commit above, the <code>classpath</code> will always be blank for all <code>T_ICLASS</code> objects. (Question: How do we enforce it?) It will also save some memory by keeping less strings alive. However, currently, "FrozenCore" seems to be the only <code>T_OBJECT</code> that has its classpath set, and it may not result in significant memory saving. I don't know what purpose the <code>rb_dump_literal</code> function originally served. Maybe it is still important. Maybe it is safe to remove now.</p>
<p>Which of the two approaches should we take? It looks like each of them has its pros and cons.</p>
Ruby master - Bug #19696 (Open): YJIT panicked - branch stubs should never enlarge branches
https://redmine.ruby-lang.org/issues/19696
2023-05-25T21:19:56Z
wildmaples (Maple Ong)
<a name="Description"></a>
<h3 >Description<a href="#Description" class="wiki-anchor">¶</a></h3>
<p>We found this error on Rails CI with YJIT enabled. I'm not quite sure how to reproduce it since the error was intermittent.</p>
<p>I'm posting here to see if it is helpful or if anyone else has encountered this.</p>
<pre><code>thread '<unnamed>' panicked at 'branch stubs should never enlarge branches (start_addr: 0x7fa19e55cb99, old_size: 5, new_size: 14)', ./yjit/src/core.rs:1858:5
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
/var/www/vendor/bundle/ruby/3.2.0/bundler/gems/rails-c15ee6e7b506/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb:587: [BUG] YJIT panicked
ruby 3.2.2 (2023-03-30 revision e51014f9c0) +jemalloc +YJIT [x86_64-linux]
-- Control frame information -----------------------------------------------
c:0131 p:0008 s:0680 e:000679 METHOD /var/www/vendor/bundle/ruby/3.2.0/bundler/gems/rails-c15ee6e7b506/activerecord/lib/active_record/connection_adapters/abstract_a
c:0130 p:0004 s:0676 e:000675 BLOCK /var/www/vendor/bundle/ruby/3.2.0/bundler/gems/rails-c15ee6e7b506/activerecord/lib/active_record/connection_adapters/abstract/c
c:0129 p:0079 s:0673 e:000671 METHOD /var/www/vendor/bundle/ruby/3.2.0/bundler/gems/rails-c15ee6e7b506/activesupport/lib/active_support/callbacks.rb:107
c:0128 p:0009 s:0663 e:000662 METHOD /var/www/vendor/bundle/ruby/3.2.0/bundler/gems/rails-c15ee6e7b506/activesupport/lib/active_support/callbacks.rb:929
c:0127 p:0005 s:0658 e:000657 METHOD /var/www/vendor/bundle/ruby/3.2.0/bundler/gems/rails-c15ee6e7b506/activerecord/lib/active_record/connection_adapters/abstract/c
c:0126 p:0013 s:0653 e:000652 METHOD /var/www/vendor/bundle/ruby/3.2.0/bundler/gems/rails-c15ee6e7b506/activerecord/lib/active_record/connection_adapters/abstract/c
c:0125 p:0011 s:0648 e:000647 METHOD /var/www/components/rails-backports/lib/rails/backports/7.0/abstract_adapter_thread_local_by_default.rb:97
c:0124 p:0021 s:0642 e:000638 METHOD /var/www/vendor/bundle/ruby/3.2.0/bundler/gems/rails-c15ee6e7b506/activerecord/lib/active_record/connection_adapters/abstract/c
c:0123 p:0172 s:0635 e:000634 METHOD /var/www/vendor/bundle/ruby/3.2.0/bundler/gems/rails-c15ee6e7b506/activerecord/lib/active_record/connection_adapters/abstract/c
c:0122 p:0014 s:0625 e:000624 METHOD /var/www/vendor/bundle/ruby/3.2.0/bundler/gems/rails-c15ee6e7b506/activerecord/lib/active_record/connection_handling.rb:313
c:0121 p:0003 s:0621 e:000620 METHOD /var/www/vendor/bundle/ruby/3.2.0/bundler/gems/rails-c15ee6e7b506/activerecord/lib/active_record/connection_handling.rb:280
c:0120 p:0004 s:0617 e:000616 BLOCK /var/www/vendor/bundle/ruby/3.2.0/bundler/gems/rails-c15ee6e7b506/activerecord/lib/active_record/fixtures.rb:560
c:0119 p:0087 s:0614 E:000b90 METHOD /var/www/vendor/bundle/ruby/3.2.0/bundler/gems/rails-c15ee6e7b506/activerecord/lib/active_record/fixtures.rb:575
c:0118 p:0015 s:0601 e:000600 METHOD /var/www/vendor/bundle/ruby/3.2.0/bundler/gems/rails-c15ee6e7b506/activerecord/lib/active_record/test_fixtures.rb:275
c:0117 p:0104 s:0596 E:002188 METHOD /var/www/vendor/bundle/ruby/3.2.0/bundler/gems/rails-c15ee6e7b506/activerecord/lib/active_record/test_fixtures.rb:125
c:0116 p:0008 s:0591 e:000590 METHOD /var/www/vendor/bundle/ruby/3.2.0/gems/isolator-0.8.0/lib/isolator/railtie.rb:27
c:0115 p:0003 s:0586 e:000585 METHOD /var/www/vendor/bundle/ruby/3.2.0/bundler/gems/rails-c15ee6e7b506/activerecord/lib/active_record/test_fixtures.rb:10
c:0114 p:0009 s:0582 e:000581 METHOD /var/www/vendor/bundle/ruby/3.2.0/bundler/gems/rails-c15ee6e7b506/activesupport/lib/active_support/current_attributes/test_help
c:0113 p:0009 s:0578 e:000577 METHOD /var/www/vendor/bundle/ruby/3.2.0/bundler/gems/rails-c15ee6e7b506/activesupport/lib/active_support/execution_context/test_helpe
c:0112 p:0003 s:0574 e:000573 BLOCK /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-rails-6.0.2/lib/rspec/rails/adapters.rb:74 [FINISH]
c:0111 p:---- s:0570 e:000569 CFUNC :instance_exec
c:0110 p:0013 s:0565 e:000564 METHOD /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:457
c:0109 p:0010 s:0559 e:000558 METHOD /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:390
c:0108 p:0009 s:0553 e:000552 BLOCK /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:628
c:0107 p:0018 s:0550 e:000549 METHOD /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:352
c:0106 p:0004 s:0544 e:000543 BLOCK /var/www/packs/tax_predictions/spec/support/tax_predictions.rb:11
c:0105 p:0018 s:0541 e:000540 METHOD /var/www/packs/tax_predictions/app/services/tax_predictions/testing.rb:14
c:0104 p:0021 s:0536 e:000535 BLOCK /var/www/packs/tax_predictions/spec/support/tax_predictions.rb:10 [FINISH]
c:0103 p:---- s:0532 e:000531 CFUNC :instance_exec
c:0102 p:0013 s:0527 e:000526 METHOD /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:457
c:0101 p:0010 s:0521 e:000520 METHOD /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:390
c:0100 p:0009 s:0515 e:000514 BLOCK /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:628
c:0099 p:0018 s:0512 e:000511 METHOD /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:352
c:0098 p:0005 s:0506 e:000505 BLOCK /var/www/spec/support/initializers/system_exit.rb:14 [FINISH]
c:0097 p:---- s:0502 e:000501 CFUNC :instance_exec
c:0096 p:0013 s:0497 e:000496 METHOD /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:457
c:0095 p:0010 s:0491 e:000490 METHOD /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:390
c:0094 p:0009 s:0485 e:000484 BLOCK /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:628
c:0093 p:0018 s:0482 e:000481 METHOD /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:352
c:0092 p:0041 s:0476 e:000475 BLOCK /var/www/spec/support/initializers/sidekiq_batch_middleware.rb:17 [FINISH]
c:0091 p:---- s:0471 e:000470 CFUNC :instance_exec
c:0090 p:0013 s:0466 e:000465 METHOD /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:457
c:0089 p:0010 s:0460 e:000459 METHOD /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:390
c:0088 p:0009 s:0454 e:000453 BLOCK /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:628
c:0087 p:0018 s:0451 e:000450 METHOD /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:352
c:0086 p:0004 s:0445 e:000444 BLOCK /var/www/spec/support/initializers/sidekiq.rb:38
c:0085 p:0018 s:0442 e:000441 METHOD /var/www/vendor/bundle/ruby/3.2.0/gems/sidekiq-6.5.8/lib/sidekiq/testing.rb:16
c:0084 p:0009 s:0436 e:000435 METHOD /var/www/vendor/bundle/ruby/3.2.0/gems/sidekiq-6.5.8/lib/sidekiq/testing.rb:30
c:0083 p:0010 s:0431 e:000430 BLOCK /var/www/spec/support/initializers/sidekiq.rb:38 [FINISH]
c:0082 p:---- s:0427 e:000426 CFUNC :instance_exec
c:0081 p:0013 s:0422 e:000421 METHOD /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:457
c:0080 p:0010 s:0416 e:000415 METHOD /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:390
c:0079 p:0009 s:0410 e:000409 BLOCK /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:628
c:0078 p:0018 s:0407 e:000406 METHOD /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:352
c:0077 p:0025 s:0401 e:000400 BLOCK /var/www/spec/support/initializers/rake.rb:18 [FINISH]
c:0076 p:---- s:0397 e:000396 CFUNC :instance_exec
c:0075 p:0013 s:0392 e:000391 METHOD /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:457
c:0074 p:0010 s:0386 e:000385 METHOD /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:390
c:0073 p:0009 s:0380 e:000379 BLOCK /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:628
c:0072 p:0018 s:0377 e:000376 METHOD /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:352 [FINISH]
c:0071 p:---- s:0371 e:000370 IFUNC
c:0070 p:0116 s:0368 E:002008 METHOD /var/www/vendor/bundle/ruby/3.2.0/gems/prosopite-1.3.1/lib/prosopite.rb:49
c:0069 p:0023 s:0363 e:000362 BLOCK /var/www/spec/support/initializers/prosopite.rb:36 [FINISH]
c:0068 p:---- s:0359 e:000358 CFUNC :instance_exec
c:0067 p:0013 s:0354 e:000353 METHOD /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:457
c:0066 p:0010 s:0348 e:000347 METHOD /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:390
c:0065 p:0009 s:0342 e:000341 BLOCK /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:628
c:0064 p:0018 s:0339 e:000338 METHOD /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:352
c:0063 p:0023 s:0333 e:000332 BLOCK /var/www/spec/support/initializers/logged_examples.rb:8 [FINISH]
c:0062 p:---- s:0329 e:000328 CFUNC :instance_exec
c:0061 p:0013 s:0324 e:000323 METHOD /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:457
c:0060 p:0010 s:0318 e:000317 METHOD /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:390
c:0059 p:0009 s:0312 e:000311 BLOCK /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:628
c:0058 p:0018 s:0309 e:000308 METHOD /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:352
c:0057 p:0116 s:0303 e:000302 BLOCK /var/www/vendor/bundle/ruby/3.2.0/gems/knapsack_pro-3.11.0/lib/knapsack_pro/adapters/rspec_adapter.rb:72 [FINISH]
c:0056 p:---- s:0298 e:000297 CFUNC :instance_exec
c:0055 p:0013 s:0293 e:000292 METHOD /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:457
c:0054 p:0010 s:0287 e:000286 METHOD /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:390
c:0053 p:0009 s:0281 e:000280 BLOCK /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:628
c:0052 p:0018 s:0278 e:000277 METHOD /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:352
c:0051 p:0032 s:0272 e:000271 BLOCK /var/www/spec/support/initializers/flake_quarantine.rb:131 [FINISH]
c:0050 p:---- s:0268 e:000267 CFUNC :instance_exec
c:0049 p:0013 s:0263 e:000262 METHOD /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:457
c:0048 p:0010 s:0257 e:000256 METHOD /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:390
c:0047 p:0009 s:0251 e:000250 BLOCK /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:628
c:0046 p:0018 s:0248 e:000247 METHOD /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:352
c:0045 p:0020 s:0242 e:000241 BLOCK /var/www/vendor/bundle/ruby/3.2.0/gems/singed-0.2.1/lib/singed/rspec.rb:8 [FINISH]
c:0044 p:---- s:0238 e:000237 CFUNC :instance_exec
c:0043 p:0013 s:0233 e:000232 METHOD /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:457
c:0042 p:0010 s:0227 e:000226 METHOD /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:390
c:0041 p:0009 s:0221 e:000220 BLOCK /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:628
c:0040 p:0018 s:0218 e:000217 METHOD /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:352 [FINISH]
c:0039 p:---- s:0212 e:000211 IFUNC
c:0038 p:0007 s:0209 e:000208 METHOD /var/www/spec/support/lib/stream_interceptor.rb:38
c:0037 p:0007 s:0205 e:000204 BLOCK /var/www/spec/support/initializers/stream_interception.rb:10 [FINISH]
c:0036 p:---- s:0201 e:000200 CFUNC :instance_exec
c:0035 p:0013 s:0196 e:000195 METHOD /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:457
c:0034 p:0010 s:0190 e:000189 METHOD /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:390
c:0033 p:0009 s:0184 e:000183 BLOCK /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:628
c:0032 p:0018 s:0181 e:000180 METHOD /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:352
c:0031 p:0037 s:0175 E:0002c8 METHOD /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:629
c:0030 p:0104 s:0168 E:000248 METHOD /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:486
c:0029 p:0018 s:0161 E:0026e8 METHOD /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:468
c:0028 p:0019 s:0156 E:002178 METHOD /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:511
c:0027 p:0076 s:0151 E:000188 METHOD /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:259
c:0026 p:0036 s:0144 e:000143 METHOD /var/www/components/flake_quarantine/lib/flake_quarantine/rspec/example.rb:11
c:0025 p:0037 s:0139 e:000138 BLOCK /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example_group.rb:646 [FINISH]
c:0024 p:---- s:0133 e:000132 CFUNC :map
c:0023 p:0011 s:0129 e:000128 METHOD /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example_group.rb:642
c:0022 p:0052 s:0124 e:000123 METHOD /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example_group.rb:607
c:0021 p:0006 s:0115 e:000114 BLOCK /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example_group.rb:608 [FINISH]
c:0020 p:---- s:0111 e:000110 CFUNC :map
c:0019 p:0065 s:0107 e:000106 METHOD /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example_group.rb:608
c:0018 p:0006 s:0098 e:000097 BLOCK /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example_group.rb:608 [FINISH]
c:0017 p:---- s:0094 e:000093 CFUNC :map
c:0016 p:0065 s:0090 e:000089 METHOD /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example_group.rb:608
c:0015 p:0007 s:0081 e:000080 BLOCK /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/runner.rb:121 [FINISH]
c:0014 p:---- s:0077 e:000076 CFUNC :map
c:0013 p:0030 s:0073 e:000072 BLOCK /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/runner.rb:121
c:0012 p:0026 s:0070 e:000069 METHOD /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/configuration.rb:2070
c:0011 p:0007 s:0066 e:000065 BLOCK /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/runner.rb:116
c:0010 p:0009 s:0062 e:000061 METHOD /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/reporter.rb:74
c:0009 p:0019 s:0057 e:000056 METHOD /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/runner.rb:115
c:0008 p:0035 s:0050 e:000049 METHOD /var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/runner.rb:89
c:0007 p:0201 s:0044 e:000043 METHOD /var/www/vendor/bundle/ruby/3.2.0/gems/knapsack_pro-3.11.0/lib/knapsack_pro/runners/queue/rspec_runner.rb:93
c:0006 p:0161 s:0027 e:000026 METHOD /var/www/vendor/bundle/ruby/3.2.0/gems/knapsack_pro-3.11.0/lib/knapsack_pro/runners/queue/rspec_runner.rb:40
c:0005 p:0041 s:0019 E:000928 METHOD bin/rspec_runner:60
c:0004 p:0016 s:0014 e:000013 METHOD bin/rspec_runner:43
c:0003 p:0005 s:0010 e:000009 METHOD bin/rspec_runner:18
c:0002 p:0060 s:0006 e:000005 EVAL bin/rspec_runner:166 [FINISH]
c:0001 p:0000 s:0003 E:000c50 DUMMY [FINISH]
-- Ruby level backtrace information ----------------------------------------
bin/rspec_runner:166:in `<main>'
bin/rspec_runner:18:in `run'
bin/rspec_runner:43:in `run'
bin/rspec_runner:60:in `run_with_knapsack_pro'
/var/www/vendor/bundle/ruby/3.2.0/gems/knapsack_pro-3.11.0/lib/knapsack_pro/runners/queue/rspec_runner.rb:40:in `run'
/var/www/vendor/bundle/ruby/3.2.0/gems/knapsack_pro-3.11.0/lib/knapsack_pro/runners/queue/rspec_runner.rb:93:in `run_tests'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/runner.rb:89:in `run'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/runner.rb:115:in `run_specs'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/reporter.rb:74:in `report'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/runner.rb:116:in `block in run_specs'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/configuration.rb:2070:in `with_suite_hooks'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/runner.rb:121:in `block (2 levels) in run_specs'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/runner.rb:121:in `map'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/runner.rb:121:in `block (3 levels) in run_specs'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example_group.rb:608:in `run'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example_group.rb:608:in `map'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example_group.rb:608:in `block in run'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example_group.rb:608:in `run'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example_group.rb:608:in `map'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example_group.rb:608:in `block in run'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example_group.rb:607:in `run'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example_group.rb:642:in `run_examples'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example_group.rb:642:in `map'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example_group.rb:646:in `block in run_examples'
/var/www/components/flake_quarantine/lib/flake_quarantine/rspec/example.rb:11:in `run'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:259:in `run'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:511:in `with_around_and_singleton_context_hooks'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:468:in `with_around_example_hooks'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:486:in `run'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:629:in `run_around_example_hooks_for'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:352:in `call'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:628:in `block (2 levels) in run_around_example_hooks_for'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:390:in `execute_with'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:457:in `instance_exec'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:457:in `instance_exec'
/var/www/spec/support/initializers/stream_interception.rb:10:in `block (2 levels) in <top (required)>'
/var/www/spec/support/lib/stream_interceptor.rb:38:in `intercept'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:352:in `call'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:628:in `block (2 levels) in run_around_example_hooks_for'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:390:in `execute_with'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:457:in `instance_exec'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:457:in `instance_exec'
/var/www/vendor/bundle/ruby/3.2.0/gems/singed-0.2.1/lib/singed/rspec.rb:8:in `block (2 levels) in <main>'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:352:in `call'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:628:in `block (2 levels) in run_around_example_hooks_for'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:390:in `execute_with'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:457:in `instance_exec'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:457:in `instance_exec'
/var/www/spec/support/initializers/flake_quarantine.rb:131:in `block (2 levels) in <main>'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:352:in `call'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:628:in `block (2 levels) in run_around_example_hooks_for'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:390:in `execute_with'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:457:in `instance_exec'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:457:in `instance_exec'
/var/www/vendor/bundle/ruby/3.2.0/gems/knapsack_pro-3.11.0/lib/knapsack_pro/adapters/rspec_adapter.rb:72:in `block (2 levels) in bind_time_tracker'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:352:in `call'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:628:in `block (2 levels) in run_around_example_hooks_for'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:390:in `execute_with'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:457:in `instance_exec'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:457:in `instance_exec'
/var/www/spec/support/initializers/logged_examples.rb:8:in `block (2 levels) in <main>'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:352:in `call'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:628:in `block (2 levels) in run_around_example_hooks_for'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:390:in `execute_with'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:457:in `instance_exec'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:457:in `instance_exec'
/var/www/spec/support/initializers/prosopite.rb:36:in `block (2 levels) in <main>'
/var/www/vendor/bundle/ruby/3.2.0/gems/prosopite-1.3.1/lib/prosopite.rb:49:in `scan'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:352:in `call'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:628:in `block (2 levels) in run_around_example_hooks_for'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:390:in `execute_with'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:457:in `instance_exec'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:457:in `instance_exec'
/var/www/spec/support/initializers/rake.rb:18:in `block (2 levels) in <main>'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:352:in `call'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:628:in `block (2 levels) in run_around_example_hooks_for'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:390:in `execute_with'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:457:in `instance_exec'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:457:in `instance_exec'
/var/www/spec/support/initializers/sidekiq.rb:38:in `block (2 levels) in <main>'
/var/www/vendor/bundle/ruby/3.2.0/gems/sidekiq-6.5.8/lib/sidekiq/testing.rb:30:in `fake!'
/var/www/vendor/bundle/ruby/3.2.0/gems/sidekiq-6.5.8/lib/sidekiq/testing.rb:16:in `__set_test_mode'
/var/www/spec/support/initializers/sidekiq.rb:38:in `block (3 levels) in <main>'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:352:in `call'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:628:in `block (2 levels) in run_around_example_hooks_for'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:390:in `execute_with'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:457:in `instance_exec'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:457:in `instance_exec'
/var/www/spec/support/initializers/sidekiq_batch_middleware.rb:17:in `block (2 levels) in <main>'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:352:in `call'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:628:in `block (2 levels) in run_around_example_hooks_for'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:390:in `execute_with'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:457:in `instance_exec'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:457:in `instance_exec'
/var/www/spec/support/initializers/system_exit.rb:14:in `block (2 levels) in <main>'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:352:in `call'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:628:in `block (2 levels) in run_around_example_hooks_for'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:390:in `execute_with'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:457:in `instance_exec'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:457:in `instance_exec'
/var/www/packs/tax_predictions/spec/support/tax_predictions.rb:10:in `block (2 levels) in <main>'
/var/www/packs/tax_predictions/app/services/tax_predictions/testing.rb:14:in `recompute_on_fetch!'
/var/www/packs/tax_predictions/spec/support/tax_predictions.rb:11:in `block (3 levels) in <main>'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:352:in `call'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:628:in `block (2 levels) in run_around_example_hooks_for'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/hooks.rb:390:in `execute_with'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:457:in `instance_exec'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-core-3.12.2/lib/rspec/core/example.rb:457:in `instance_exec'
/var/www/vendor/bundle/ruby/3.2.0/gems/rspec-rails-6.0.2/lib/rspec/rails/adapters.rb:74:in `block (2 levels) in <module:MinitestLifecycleAdapter>'
/var/www/vendor/bundle/ruby/3.2.0/bundler/gems/rails-c15ee6e7b506/activesupport/lib/active_support/execution_context/test_helper.rb:6:in `before_setup'
/var/www/vendor/bundle/ruby/3.2.0/bundler/gems/rails-c15ee6e7b506/activesupport/lib/active_support/current_attributes/test_helper.rb:6:in `before_setup'
/var/www/vendor/bundle/ruby/3.2.0/bundler/gems/rails-c15ee6e7b506/activerecord/lib/active_record/test_fixtures.rb:10:in `before_setup'
/var/www/vendor/bundle/ruby/3.2.0/gems/isolator-0.8.0/lib/isolator/railtie.rb:27:in `setup_fixtures'
/var/www/vendor/bundle/ruby/3.2.0/bundler/gems/rails-c15ee6e7b506/activerecord/lib/active_record/test_fixtures.rb:125:in `setup_fixtures'
/var/www/vendor/bundle/ruby/3.2.0/bundler/gems/rails-c15ee6e7b506/activerecord/lib/active_record/test_fixtures.rb:275:in `load_fixtures'
/var/www/vendor/bundle/ruby/3.2.0/bundler/gems/rails-c15ee6e7b506/activerecord/lib/active_record/fixtures.rb:575:in `create_fixtures'
/var/www/vendor/bundle/ruby/3.2.0/bundler/gems/rails-c15ee6e7b506/activerecord/lib/active_record/fixtures.rb:560:in `block in create_fixtures'
/var/www/vendor/bundle/ruby/3.2.0/bundler/gems/rails-c15ee6e7b506/activerecord/lib/active_record/connection_handling.rb:280:in `connection'
/var/www/vendor/bundle/ruby/3.2.0/bundler/gems/rails-c15ee6e7b506/activerecord/lib/active_record/connection_handling.rb:313:in `retrieve_connection'
/var/www/vendor/bundle/ruby/3.2.0/bundler/gems/rails-c15ee6e7b506/activerecord/lib/active_record/connection_adapters/abstract/connection_handler.rb:211:in `retrieve_connection'
/var/www/vendor/bundle/ruby/3.2.0/bundler/gems/rails-c15ee6e7b506/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:181:in `connection'
/var/www/components/rails-backports/lib/rails/backports/7.0/abstract_adapter_thread_local_by_default.rb:97:in `checkout'
/var/www/vendor/bundle/ruby/3.2.0/bundler/gems/rails-c15ee6e7b506/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:341:in `checkout'
/var/www/vendor/bundle/ruby/3.2.0/bundler/gems/rails-c15ee6e7b506/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:704:in `checkout_and_verify'
/var/www/vendor/bundle/ruby/3.2.0/bundler/gems/rails-c15ee6e7b506/activesupport/lib/active_support/callbacks.rb:929:in `_run_checkout_callbacks'
/var/www/vendor/bundle/ruby/3.2.0/bundler/gems/rails-c15ee6e7b506/activesupport/lib/active_support/callbacks.rb:107:in `run_callbacks'
/var/www/vendor/bundle/ruby/3.2.0/bundler/gems/rails-c15ee6e7b506/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:705:in `block in checkout_and_verify'
/var/www/vendor/bundle/ruby/3.2.0/bundler/gems/rails-c15ee6e7b506/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb:587:in `verify!'
-- C level backtrace information -------------------------------------------
/usr/lib/fullstaq-ruby/versions/3.2.2-jemalloc/lib/libruby.so.3.2(rb_vm_bugreport+0xb2b) [0x7fa19a87c18b]
/usr/lib/fullstaq-ruby/versions/3.2.2-jemalloc/lib/libruby.so.3.2(rb_bug_without_die+0x77) [0x7fa19a675937]
/usr/lib/fullstaq-ruby/versions/3.2.2-jemalloc/lib/libruby.so.3.2(rb_bug+0x9f) [0x7fa19a5d0cd2]
/usr/lib/fullstaq-ruby/versions/3.2.2-jemalloc/lib/libruby.so.3.2(_ZN4yjit4yjit17rb_bug_panic_hook28_$u7b$$u7b$closure$u7d$$u7d$17hfc31c2f18ccadc75E.llvm.12746241947442316067+0x5a) [0x7fa19a8b8d7a]
/usr/lib/fullstaq-ruby/versions/3.2.2-jemalloc/lib/libruby.so.3.2(_ZN3std9panicking20rust_panic_with_hook17h66309baf5235212fE+0x3d3) [0x7fa19a8c9d73]
/usr/lib/fullstaq-ruby/versions/3.2.2-jemalloc/lib/libruby.so.3.2(_ZN3std9panicking19begin_panic_handler28_$u7b$$u7b$closure$u7d$$u7d$17h3a147548aa082356E+0xb7) [0x7fa19a8ecb17]
/usr/lib/fullstaq-ruby/versions/3.2.2-jemalloc/lib/libruby.so.3.2(_ZN3std10sys_common9backtrace26__rust_end_short_backtrace17hcc62583c733bef84E+0x14) [0x7fa19a8ec824]
/usr/lib/fullstaq-ruby/versions/3.2.2-jemalloc/lib/libruby.so.3.2(rust_begin_unwind+0x42) [0x7fa19a8c9772]
/usr/lib/fullstaq-ruby/versions/3.2.2-jemalloc/lib/libruby.so.3.2(_ZN4core9panicking9panic_fmt17h8531284c14f462dcE+0x33) [0x7fa19a5d8823]
/usr/lib/fullstaq-ruby/versions/3.2.2-jemalloc/lib/libruby.so.3.2(_ZN4yjit4core20branch_stub_hit_body17h45fd758b20fb7aa6E+0xa03) [0x7fa19a89add3]
/usr/lib/fullstaq-ruby/versions/3.2.2-jemalloc/lib/libruby.so.3.2(_ZN4yjit5cruby12with_vm_lock17h09508b1ca41af130E+0x49) [0x7fa19a8936b9]
/usr/lib/fullstaq-ruby/versions/3.2.2-jemalloc/lib/libruby.so.3.2(_ZN4yjit4core15branch_stub_hit17h5cf8bd0b5727e3b9E.llvm.7796580109460741199+0x71) [0x7fa19a89ea31]
[0x7fa19b08501f]
-- Other runtime information -----------------------------------------------
* Loaded script: bin/rspec_runner
* Loaded features:
0 enumerator.so
1 thread.rb
2 fiber.so
3 rational.so
4 complex.so
5 ruby2_keywords.rb
6 /usr/lib/fullstaq-ruby/versions/3.2.2-jemalloc/lib/ruby/3.2.0/x86_64-linux/enc/encdb.so
7 /usr/lib/fullstaq-ruby/versions/3.2.2-jemalloc/lib/ruby/3.2.0/x86_64-linux/enc/trans/transdb.so
8 /usr/lib/fullstaq-ruby/versions/3.2.2-jemalloc/lib/ruby/3.2.0/x86_64-linux/rbconfig.rb
9 /usr/lib/fullstaq-ruby/versions/3.2.2-jemalloc/lib/ruby/3.2.0/rubygems/compatibility.rb
10 /usr/lib/fullstaq-ruby/versions/3.2.2-jemalloc/lib/ruby/3.2.0/rubygems/defaults.rb
11 /usr/lib/fullstaq-ruby/versions/3.2.2-jemalloc/lib/ruby/3.2.0/rubygems/deprecate.rb
12 /usr/lib/fullstaq-ruby/versions/3.2.2-jemalloc/lib/ruby/3.2.0/rubygems/errors.rb
13 /usr/lib/fullstaq-ruby/versions/3.2.2-jemalloc/lib/ruby/3.2.0/rubygems/unknown_command_spell_checker.rb
14 /usr/lib/fullstaq-ruby/versions/3.2.2-jemalloc/lib/ruby/3.2.0/rubygems/exceptions.rb
15 /usr/lib/fullstaq-ruby/versions/3.2.2-jemalloc/lib/ruby/3.2.0/rubygems/basic_specification.rb
16 /usr/lib/fullstaq-ruby/versions/3.2.2-jemalloc/lib/ruby/3.2.0/rubygems/stub_specification.rb
17 /usr/lib/fullstaq-ruby/versions/3.2.2-jemalloc/lib/ruby/3.2.0/rubygems/platform.rb
18 /usr/lib/fullstaq-ruby/versions/3.2.2-jemalloc/lib/ruby/3.2.0/rubygems/util/list.rb
19 /usr/lib/fullstaq-ruby/versions/3.2.2-jemalloc/lib/ruby/3.2.0/rubygems/version.rb
20 /usr/lib/fullstaq-ruby/versions/3.2.2-jemalloc/lib/ruby/3.2.0/rubygems/requirement.rb
21 /usr/lib/fullstaq-ruby/versions/3.2.2-jemalloc/lib/ruby/3.2.0/rubygems/specification.rb
22 /usr/lib/fullstaq-ruby/versions/3.2.2-jemalloc/lib/ruby/3.2.0/rubygems/util.rb
23 /usr/lib/fullstaq-ruby/versions/3.2.2-jemalloc/lib/ruby/3.2.0/rubygems/dependency.rb
24 /usr/lib/fullstaq-ruby/versions/3.2.2-jemalloc/lib/ruby/3.2.0/rubygems/core_ext/kernel_gem.rb
25 /usr/lib/fullstaq-ruby/versions/3.2.2-jemalloc/lib/ruby/3.2.0/x86_64-linux/monitor.so
26 /usr/lib/fullstaq-ruby/versions/3.2.2-jemalloc/lib/ruby/3.2.0/monitor.rb
27 /usr/lib/fullstaq-ruby/versions/3.2.2-jemalloc/lib/ruby/3.2.0/rubygems.rb
28 /usr/lib/fullstaq-ruby/versions/3.2.2-jemalloc/lib/ruby/3.2.0/rubygems/path_support.rb
29 /usr/lib/fullstaq-ruby/versions/3.2.2-jemalloc/lib/ruby/3.2.0/error_highlight/version.rb
30 /usr/lib/fullstaq-ruby/versions/3.2.2-jemalloc/lib/ruby/3.2.0/error_highlight/base.rb
31 /usr/lib/fullstaq-ruby/versions/3.2.2-jemalloc/lib/ruby/3.2.0/error_highlight/formatter.rb
32 /usr/lib/fullstaq-ruby/versions/3.2.2-jemalloc/lib/ruby/3.2.0/error_highlight/core_ext.rb
33 /usr/lib/fullstaq-ruby/versions/3.2.2-jemalloc/lib/ruby/3.2.0/error_highlight.rb
34 /usr/lib/fullstaq-ruby/versions/3.2.2-jemalloc/lib/ruby/3.2.0/did_you_mean/version.rb
35 /usr/lib/fullstaq-ruby/versions/3.2.2-jemalloc/lib/ruby/3.2.0/did_you_mean/core_ext/name_error.rb
36 /usr/lib/fullstaq-ruby/versions/3.2.2-jemalloc/lib/ruby/3.2.0/did_you_mean/levenshtein.rb
37 /usr/lib/fullstaq-ruby/versions/3.2.2-jemalloc/lib/ruby/3.2.0/did_you_mean/jaro_winkler.rb
38 /usr/lib/fullstaq-ruby/versions/3.2.2-jemalloc/lib/ruby/3.2.0/did_you_mean/spell_checker.rb
39 /usr/lib/fullstaq-ruby/versions/3.2.2-jemalloc/lib/ruby/3.2.0/did_you_mean/spell_checkers/name_error_checkers/class_name_checker.rb
40 /usr/lib/fullstaq-ruby/versions/3.2.2-jemalloc/lib/ruby/3.2.0/did_you_mean/spell_checkers/name_error_checkers/variable_name_checker.rb
41 /usr/lib/fullstaq-ruby/versions/3.2.2-jemalloc/lib/ruby/3.2.0/did_you_mean/spell_checkers/name_error_checkers.rb
42 /usr/lib/fullstaq-ruby/versions/3.2.2-jemalloc/lib/ruby/3.2.0/did_you_mean/spell_checkers/method_name_checker.rb
43 /usr/lib/fullstaq-ruby/versions/3.2.2-jemalloc/lib/ruby/3.2.0/did_you_mean/spell_checkers/key_error_checker.rb
44 /usr/lib/fullstaq-ruby/versions/3.2.2-jemalloc/lib/ruby/3.2.0/did_you_mean/spell_checkers/null_checker.rb
45 /usr/lib/fullstaq-ruby/versions/3.2.2-jemalloc/lib/ruby/3.2.0/did_you_mean/tree_spell_checker.rb
46 /usr/lib/fullstaq-ruby/versions/3.2.2-jemalloc/lib/ruby/3.2.0/did_you_mean/spell_checkers/require_path_checker.rb
47 /usr/lib/fullstaq-ruby/versions/3.2.2-jemalloc/lib/ruby/3.2.0/did_you_mean/spell_checkers/pattern_key_name_checker.rb
48 /usr/lib/fullstaq-ruby/versions/3.2.2-jemalloc/lib/ruby/3.2.0/did_you_mean/formatter.rb
49 /usr/lib/fullstaq-ruby/versions/3.2.2-jemalloc/lib/ruby/3.2.0/did_you_mean.rb
50 /usr/lib/fullstaq-ruby/versions/3.2.2-jemalloc/lib/ruby/3.2.0/syntax_suggest/core_ext.rb
</code></pre>
Ruby master - Bug #19636 (Open): String#encode EUC_JIS_2004で"¥"がEncoding::UndefinedConversionErro...
https://redmine.ruby-lang.org/issues/19636
2023-05-10T05:16:30Z
sagittalplane (sagital plane)
<p>既知のバグでしたらすみません。</p>
<p>EUC-JIS-2004はJIS X 0213の実装なので"¥"は含まれているはずですがEncoding::UndefinedConversionErrorになります。</p>
<p><a href="https://ja.wikipedia.org/wiki/EUC-JIS-2004" class="external">https://ja.wikipedia.org/wiki/EUC-JIS-2004</a><br>
<a href="https://ja.wikipedia.org/wiki/JIS_X_0213%E9%9D%9E%E6%BC%A2%E5%AD%97%E4%B8%80%E8%A6%A7" class="external">https://ja.wikipedia.org/wiki/JIS_X_0213%E9%9D%9E%E6%BC%A2%E5%AD%97%E4%B8%80%E8%A6%A7</a></p>
<p>リファレンスマニュアルにも特にないようなのでバグのように見えます。<br>
<a href="https://docs.ruby-lang.org/ja/latest/class/String.html#I_ENCODE" class="external">https://docs.ruby-lang.org/ja/latest/class/String.html#I_ENCODE</a></p>
<pre><code>root@d8c36610327f:/opt/app# ruby -v
ruby 3.2.2 (2023-03-30 revision e51014f9c0) [x86_64-linux]
root@d8c36610327f:/opt/app# ruby -e '"¥".encode(Encoding::EUC_JIS_2004)'
-e:1:in `encode': U+00A5 from UTF-8 to EUC-JIS-2004 (Encoding::UndefinedConversionError)
from -e:1:in `<main>'
root@d8c36610327f:/opt/app#
</code></pre>
Ruby master - Bug #19631 (Open): module_eval does not propulate absolute_path for Kernel.caller_l...
https://redmine.ruby-lang.org/issues/19631
2023-05-06T03:06:58Z
daveola (David Stellar)
<p>I am using module_eval and noticing that since ruby 3.2 the Kernel locations do not have absolute_path for any of the eval code, though the path is available. This is a regression since at least ruby 3.0 which still works.</p>
<p>I am on 3.2.2, and here is some sample code:</p>
<pre><code>class Script < Module
script = %q{
def self.locations
Kernel.caller_locations.each { |loc|
puts "LOCATION: #{loc}"
puts "ABSPATH: #{loc.absolute_path}"
puts "PATH: #{loc.path}"
}
end
self.locations
}
module_eval(script, "/this/is/my/path", 0)
end
</code></pre>
<p>The output for the code at the top of the caller locations (inside the module_eval) is:</p>
<pre><code>LOCATION: /this/is/my/path:9:in '<class:Script>'
ABSPATH:
PATH: /this/is/my/path
</code></pre>
<p>But the absolute_path should have the correct path data as well</p>
Ruby master - Bug #19609 (Open): net/http ignores open_timeout, read_timeout on Windows
https://redmine.ruby-lang.org/issues/19609
2023-04-20T13:27:54Z
inversion (Yura Babak)
<p>This small sample works fine on Linux (it takes 2 seconds to finish) but on Windows, it always fails with a timeout after some <strong>magical 21 seconds</strong>.</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="nb">require</span> <span class="s1">'net/http'</span>
<span class="n">uri</span> <span class="o">=</span> <span class="no">URI</span> <span class="s1">'http://1.2.3.4'</span>
<span class="n">http</span> <span class="o">=</span> <span class="no">Net</span><span class="o">::</span><span class="no">HTTP</span><span class="o">::</span><span class="n">new</span><span class="p">(</span><span class="n">uri</span><span class="p">.</span><span class="nf">host</span><span class="p">,</span> <span class="n">uri</span><span class="p">.</span><span class="nf">port</span><span class="p">)</span>
<span class="n">http</span><span class="p">.</span><span class="nf">open_timeout</span> <span class="o">=</span> <span class="mi">2</span>
<span class="n">http</span><span class="p">.</span><span class="nf">read_timeout</span> <span class="o">=</span> <span class="mi">2</span>
<span class="n">time_start</span> <span class="o">=</span> <span class="no">Time</span><span class="p">.</span><span class="nf">now</span>
<span class="k">begin</span>
<span class="n">response</span> <span class="o">=</span> <span class="n">http</span><span class="p">.</span><span class="nf">get</span> <span class="n">uri</span>
<span class="k">rescue</span> <span class="no">Exception</span>
<span class="nb">puts</span> <span class="vg">$!</span><span class="p">.</span><span class="nf">inspect</span>
<span class="k">end</span>
<span class="n">time_total</span> <span class="o">=</span> <span class="no">Time</span><span class="p">.</span><span class="nf">now</span> <span class="o">-</span> <span class="n">time_start</span>
<span class="nb">puts</span> <span class="n">time_total</span>
</code></pre>
<p>Strange that I have installed different versions and the results are not consistent:</p>
<p><strong>ruby 3.2.2</strong> (2023-03-30 revision e51014f9c0) [x64-mingw-ucrt]:</p>
<pre><code>#<Net::OpenTimeout: Failed to open TCP connection to 1.2.3.4:80 (execution expired)>
21.0494375
</code></pre>
<p><strong>ruby 3.1.2p20</strong> (2022-04-12 revision 4491bb740a) [x64-mingw-ucrt]:</p>
<pre><code>#<Net::OpenTimeout: Failed to open TCP connection to 1.2.3.4:80 (A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. - user specified timeout)>
2.0190419 # — works as expected
</code></pre>
<p><strong>ruby 3.0.1p64</strong> (2021-04-05 revision 0fb782ee38) [x64-mingw32]:</p>
<pre><code>#<Net::OpenTimeout: execution expired>
21.0423962
</code></pre>
Ruby master - Bug #19598 (Open): Inconsistent behaviour of TracePoint API
https://redmine.ruby-lang.org/issues/19598
2023-04-13T11:38:06Z
bgdimitrov (Bogdan Dimitrov)
<p>Hello,</p>
<p>I am seeing inconsistent behaviour of the TracePoint API. If I raise an error from within the <code>:raise</code> event block it crashes the entire program with a <code>exception reentered (fatal)</code> next time any error is raised. However if I add a simple <code>if</code> check in the <code>:raised</code> event block the same program doesn't crash anymore.</p>
<p>My specific use case is that sometimes when I have <code>Exception</code>s being raised in my application they are being handled by ActiveRecord and wrapped in a <code>ActiveRecord::StatementInvalid</code>, which is a <code>StandardError</code>. The codebase has a lot of <code>rescue StandardError</code> statements which swallow the <code>StatementInvalid</code> and therefore the <code>Exception</code>s get ignored. I would like to bypass the <code>rescue StandardError</code> statements in this case. My current solution is to manually check in every <code>rescue StandardError</code> if the <code>StatementInvalid</code> has an <code>Exception</code> in its <code>.cause</code> attribute and if there is re-raise it, but the codebase is very big and this is not a very good solution as every developer needs to remember to do this check if they add a new <code>rescue StandardError</code> or modify an existing one.</p>
<p>Using TracePoint to do the aforementioned check before any <code>rescue</code> statements are called and then re-raise the Exception seems like a very neat way to automate the handling of these masked <code>Exception</code>s. However I am getting inconsistent behaviour from Ruby depending on what code I put inside the <code>:raised</code> event handler. Here are two identical pieces of code apart from an extra <code>if</code> check in the second example. The first example crashes with <code>exception reentered (fatal)</code>, the second doesn't.</p>
<a name="Code-to-reproduce-crash"></a>
<h4 >Code to reproduce crash<a href="#Code-to-reproduce-crash" class="wiki-anchor">¶</a></h4>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="nb">require</span> <span class="s2">"active_record"</span>
<span class="k">class</span> <span class="nc">Test</span>
<span class="k">def</span> <span class="nf">run</span>
<span class="k">begin</span>
<span class="n">tp</span> <span class="o">=</span> <span class="no">TracePoint</span><span class="p">.</span><span class="nf">new</span><span class="p">(</span><span class="ss">:raise</span><span class="p">)</span> <span class="k">do</span> <span class="o">|</span><span class="n">t</span><span class="o">|</span>
<span class="nb">puts</span> <span class="s2">"TracePoint received: </span><span class="si">#{</span><span class="n">t</span><span class="p">.</span><span class="nf">raised_exception</span><span class="p">.</span><span class="nf">class</span><span class="si">}</span><span class="s2">"</span>
<span class="k">raise</span> <span class="n">t</span><span class="p">.</span><span class="nf">raised_exception</span><span class="p">.</span><span class="nf">cause</span>
<span class="k">end</span>
<span class="nb">puts</span> <span class="s2">"TracePoint created"</span>
<span class="n">tp</span><span class="p">.</span><span class="nf">enable</span> <span class="k">do</span>
<span class="nb">puts</span> <span class="s2">"TracePoint enabled"</span>
<span class="c1"># Generate an Exception masked as a StatementInvalid</span>
<span class="k">begin</span>
<span class="k">raise</span> <span class="no">Exception</span>
<span class="kp">catch</span> <span class="no">Exception</span>
<span class="k">raise</span> <span class="no">ActiveRecord</span><span class="o">::</span><span class="no">StatementInvalid</span>
<span class="k">end</span>
<span class="k">end</span>
<span class="k">rescue</span> <span class="no">Exception</span> <span class="o">=></span> <span class="n">e</span>
<span class="nb">puts</span> <span class="s2">"Got Exception instead of StatementInvalid"</span>
<span class="k">end</span>
<span class="k">end</span>
<span class="k">end</span>
<span class="n">t</span> <span class="o">=</span> <span class="no">Test</span><span class="p">.</span><span class="nf">new</span>
<span class="n">t</span><span class="p">.</span><span class="nf">run</span>
<span class="k">begin</span>
<span class="k">raise</span> <span class="no">ArgumentError</span>
<span class="k">rescue</span> <span class="no">ArgumentError</span> <span class="o">=></span> <span class="n">e</span>
<span class="nb">puts</span> <span class="s2">"Never reach here"</span>
<span class="k">end</span>
</code></pre>
<a name="Output"></a>
<h4 >Output<a href="#Output" class="wiki-anchor">¶</a></h4>
<pre><code>TracePoint created
TracePoint enabled
TracePoint received: Exception
Got Exception instead of StatementInvalid
tp_test2.rb: exception reentered (fatal)
</code></pre>
<a name="Code-that-doesnt-crash-extra-if-check-on-line-8"></a>
<h4 >Code that doesn't crash, extra if check on line 8<a href="#Code-that-doesnt-crash-extra-if-check-on-line-8" class="wiki-anchor">¶</a></h4>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="nb">require</span> <span class="s2">"active_record"</span>
<span class="k">class</span> <span class="nc">Test</span>
<span class="k">def</span> <span class="nf">run</span>
<span class="k">begin</span>
<span class="n">tp</span> <span class="o">=</span> <span class="no">TracePoint</span><span class="p">.</span><span class="nf">new</span><span class="p">(</span><span class="ss">:raise</span><span class="p">)</span> <span class="k">do</span> <span class="o">|</span><span class="n">t</span><span class="o">|</span>
<span class="nb">puts</span> <span class="s2">"TracePoint received: </span><span class="si">#{</span><span class="n">t</span><span class="p">.</span><span class="nf">raised_exception</span><span class="p">.</span><span class="nf">class</span><span class="si">}</span><span class="s2">"</span>
<span class="k">if</span> <span class="n">t</span><span class="p">.</span><span class="nf">raised_exception</span><span class="p">.</span><span class="nf">instance_of?</span><span class="p">(</span><span class="no">ActiveRecord</span><span class="o">::</span><span class="no">StatementInvalid</span><span class="p">)</span>
<span class="k">raise</span> <span class="n">t</span><span class="p">.</span><span class="nf">raised_exception</span><span class="p">.</span><span class="nf">cause</span>
<span class="k">end</span>
<span class="k">end</span>
<span class="nb">puts</span> <span class="s2">"TracePoint created"</span>
<span class="n">tp</span><span class="p">.</span><span class="nf">enable</span> <span class="k">do</span>
<span class="nb">puts</span> <span class="s2">"TracePoint enabled"</span>
<span class="c1"># Generate an Exception masked as a StatementInvalid</span>
<span class="k">begin</span>
<span class="k">raise</span> <span class="no">Exception</span>
<span class="kp">catch</span> <span class="no">Exception</span>
<span class="k">raise</span> <span class="no">ActiveRecord</span><span class="o">::</span><span class="no">StatementInvalid</span>
<span class="k">end</span>
<span class="k">end</span>
<span class="k">rescue</span> <span class="no">Exception</span> <span class="o">=></span> <span class="n">e</span>
<span class="nb">puts</span> <span class="s2">"Got Exception instead of StatementInvalid"</span>
<span class="k">end</span>
<span class="k">end</span>
<span class="k">end</span>
<span class="n">t</span> <span class="o">=</span> <span class="no">Test</span><span class="p">.</span><span class="nf">new</span>
<span class="n">t</span><span class="p">.</span><span class="nf">run</span>
<span class="k">begin</span>
<span class="k">raise</span> <span class="no">ArgumentError</span>
<span class="k">rescue</span> <span class="no">ArgumentError</span> <span class="o">=></span> <span class="n">e</span>
<span class="nb">puts</span> <span class="s2">"Never reach here"</span>
<span class="k">end</span>
</code></pre>
<a name="Output-2"></a>
<h4 >Output<a href="#Output-2" class="wiki-anchor">¶</a></h4>
<pre><code>TracePoint created
TracePoint enabled
TracePoint received: Exception
Got Exception instead of StatementInvalid
Never reach here
</code></pre>
Ruby master - Bug #19562 (Open): Setting default_(in|ex)ternal encoding after running an Ractor f...
https://redmine.ruby-lang.org/issues/19562
2023-03-30T13:19:54Z
larskanis (Lars Kanis)
<p>The following command blocks infinitely and must be killed with "kill -9"</p>
<pre><code>ruby -e "Ractor.new{}.take; Encoding.default_external = Encoding::ISO8859_2"
</code></pre>
<p>Backtrace is:</p>
<pre><code>#0 futex_wait (private=0, expected=2, futex_word=0x55555555abd0) at ../sysdeps/nptl/futex-internal.h:146
#1 __GI___lll_lock_wait (futex=futex@entry=0x55555555abd0, private=0) at ./nptl/lowlevellock.c:49
#2 0x00007ffff760a082 in lll_mutex_lock_optimized (mutex=0x55555555abd0) at ./nptl/pthread_mutex_lock.c:48
#3 ___pthread_mutex_lock (mutex=mutex@entry=0x55555555abd0) at ./nptl/pthread_mutex_lock.c:93
#4 0x00007ffff7c5a40d in rb_native_mutex_lock (lock=lock@entry=0x55555555abd0) at ruby-3.2.1/thread_pthread.c:556
#5 0x00007ffff7cc5376 in vm_lock_enter (cr=0x55555555deb0, vm=0x55555555aba0, locked=locked@entry=false, no_barrier=no_barrier@entry=false, lev=0x55555555ac00) at vm_sync.c:56
#6 0x00007ffff7cc5747 in rb_vm_lock_body () at vm_sync.c:175
#7 0x00007ffff7bc02c2 in rb_vm_lock (line=1829, file=0x7ffff7e209cb "ractor.c") at ruby-3.2.1/vm_sync.h:57
#8 ractor_check_blocking (remained_thread_cnt=<optimized out>, file=0x7ffff7e209cb "ractor.c", line=1865, cr=0x55555555deb0) at ractor.c:1829
#9 ractor_check_blocking (line=1865, file=0x7ffff7e209cb "ractor.c", remained_thread_cnt=<optimized out>, cr=0x55555555deb0) at ractor.c:1811
#10 rb_ractor_blocking_threads_inc (cr=0x55555555deb0, file=file@entry=0x7ffff7e29b04 "thread.c", line=line@entry=1488) at ractor.c:1865
#11 0x00007ffff7c60977 in blocking_region_begin (th=0x55555555d070, region=0x7fffffffd220, ubf=0x7ffff7c5b300 <ubf_select>, arg=0x55555555d070, fail_if_interrupted=<optimized out>) at thread.c:1488
#12 0x00007ffff7c61edf in rb_nogvl (func=0x7ffff7ac66e0 <no_gvl_stat>, data1=0x7fffffffd2a0, ubf=<optimized out>, data2=0x55555555d070, flags=<optimized out>) at thread.c:1548
#13 0x00007ffff7acdfbc in stat_without_gvl (st=0x7fffffffd2b0, path=0x7ffff27dfe88 "ruby-3.2.1/lib/ruby/3.2.0/x86_64-linux/enc/iso_8859_2.so") at file.c:1171
#14 rb_check_realpath_internal (basedir=basedir@entry=4, path=path@entry=140737261984200, origenc=0x555555565030, mode=mode@entry=RB_REALPATH_STRICT) at file.c:4491
#15 0x00007ffff7acebaa in rb_realpath_internal (basedir=basedir@entry=4, path=path@entry=140737261984200, strict=strict@entry=1) at file.c:4536
#16 0x00007ffff7b2cdd4 in require_internal (ec=0x55555555e1f0, fname=<optimized out>, exception=1, warn=<optimized out>) at load.c:1195
#17 0x00007ffff7aa0a17 in load_encoding (name=0x5555556049b0 "ISO-8859-2") at encoding.c:779
#18 0x00007ffff7aa2ef8 in check_encoding (enc=0x5555556049d0) at encoding.c:191
#19 enc_check_encoding (obj=140737335533800) at encoding.c:202
#20 rb_to_encoding (enc=enc@entry=140737335533800) at encoding.c:307
#21 0x00007ffff7aa4049 in enc_set_default_encoding (name=0x7ffff7de6287 "external", encoding=140737335533800, def=0x7ffff7fb00c0 <default_external>) at encoding.c:1563
#22 rb_enc_set_default_external (encoding=140737335533800) at encoding.c:1637
#23 0x00007ffff7aa411f in set_default_external (klass=<optimized out>, encoding=140737335533800) at encoding.c:1658
#24 0x00007ffff7c99037 in vm_call_cfunc_with_frame (ec=0x55555555e1f0, reg_cfp=0x7ffff6f7df90, calling=<optimized out>) at ruby-3.2.1/vm_insnhelper.c:3268
#25 0x00007ffff7ca9564 in vm_sendish (method_explorer=<optimized out>, block_handler=<optimized out>, cd=<optimized out>, reg_cfp=<optimized out>, ec=<optimized out>)
at ruby-3.2.1/vm_callinfo.h:367
#26 vm_exec_core (ec=0x55555555e1f0, initial=128) at ruby-3.2.1/insns.def:820
#27 0x00007ffff7caee93 in rb_vm_exec (ec=0x55555555e1f0, jit_enable_p=true) at vm.c:2374
#28 0x00007ffff7abfbf1 in rb_ec_exec_node (ec=ec@entry=0x55555555e1f0, n=n@entry=0x7ffff796c2c0) at eval.c:289
#29 0x00007ffff7ac60b3 in ruby_run_node (n=0x7ffff796c2c0) at eval.c:330
#30 0x0000555555555187 in rb_main (argv=0x7fffffffdb98, argc=3) at ./main.c:38
#31 main (argc=<optimized out>, argv=<optimized out>) at ./main.c:57
</code></pre>
<p>When the encoding was already loaded before running <code>Ractor.new</code>, then it works and doesn't block:</p>
<pre><code>ruby -e "''.encode(Encoding::ISO8859_2); Ractor.new{}.take; Encoding.default_internal = Encoding::ISO8859_2"
</code></pre>
<p>When the encoding is not assigned as default encoding, but used otherwise, it works too:</p>
<pre><code>ruby -e "Ractor.new{}.take; ''.encode(Encoding::ISO8859_2)"
</code></pre>
Ruby master - Bug #19558 (Open): str.dump.undump crashes when str contains both Unicode and ASCII...
https://redmine.ruby-lang.org/issues/19558
2023-03-29T13:47:47Z
ikaronen-relex (Ilmari Karonen)
<p>Recently, as a result of a question I asked on Stack Overflow (<a href="https://stackoverflow.com/q/75866159" class="external">https://stackoverflow.com/q/75866159</a>), I learned about the existence of String#dump and String#undump. However, I also found what seems like a bug in them, in that apparently dumping and then undumping a string containing a sufficiently diverse selection of characters (such as at least one ASCII C0 control character and at least one non-ASCII Unicode character) causes the undump to raise a RuntimeError.</p>
<p>Specifically, evaluating e.g. any of the following expressions:</p>
<pre><code>"\u0000\uFFFF".dump.undump
"\u0001\uABCD".dump.undump
"\u007F\u0080".dump.undump
</code></pre>
<p>raises a RuntimeError with the message "hex escape and Unicode escape are mixed". This contradicts the documentation of String#undump, which says that it "does the inverse of String#dump."</p>
<p>The behavior is the same on all Ruby versions I have tested this on, including master (3.3.0), 2.6.10 and JRuby 9.3.10.0.</p>
<p>The obvious fix would be to simply remove the check for mixed hex and Unicode escape sequences, essentially reverting <a href="https://github.com/ruby/ruby/commit/05d1d29d1f4a87620371463d8c7942e170be031f" class="external">https://github.com/ruby/ruby/commit/05d1d29d1f4a87620371463d8c7942e170be031f</a>. However, as I don't understand why the check is there in the first place, I'm also not sure if removing it could somehow have some unwanted consequences.</p>
Ruby master - Bug #19557 (Open): Deadlock on STDOUT(ERR) lock on signal handler
https://redmine.ruby-lang.org/issues/19557
2023-03-29T08:27:05Z
ko1 (Koichi Sasada)
<p>The following Ruby code produces <code>deadlock; recursive locking (ThreadError)</code>.<br>
It means some IO operations (<code>puts</code>, ...) is not used on trap handlers safely.</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="nb">trap</span><span class="p">(</span><span class="ss">:USR1</span><span class="p">){</span><span class="nb">puts</span> <span class="s1">'world'</span><span class="p">}</span>
<span class="no">Thread</span><span class="p">.</span><span class="nf">new</span><span class="p">{</span><span class="kp">loop</span><span class="p">{</span><span class="no">Process</span><span class="p">.</span><span class="nf">kill</span><span class="p">(</span><span class="ss">:USR1</span><span class="p">,</span> <span class="vg">$$</span><span class="p">);</span> <span class="nb">sleep</span> <span class="mf">0.5</span><span class="p">}}</span>
<span class="kp">loop</span><span class="p">{</span><span class="nb">puts</span> <span class="s1">'hello'</span><span class="p">}</span>
</code></pre>
<pre><code>...
hello
hello
hello
hello
hello
../../src/clean/test.rb:2:in `write': deadlock; recursive locking (ThreadError)
from ../../src/clean/test.rb:2:in `puts'
from ../../src/clean/test.rb:2:in `puts'
from ../../src/clean/test.rb:2:in `block in <main>'
from ../../src/clean/test.rb:4:in `write'
from ../../src/clean/test.rb:4:in `puts'
from ../../src/clean/test.rb:4:in `puts'
from ../../src/clean/test.rb:4:in `block in <main>'
from <internal:kernel>:187:in `loop'
from ../../src/clean/test.rb:4:in `<main>'
</code></pre>
<a name="Reason"></a>
<h2 >Reason<a href="#Reason" class="wiki-anchor">¶</a></h2>
<ul>
<li>
<code>puts()</code> calls <code>rb_io_writev()</code>
</li>
<li>it calls <code>IO#write</code>
</li>
<li>it calls <code>io_write_m()</code>
</li>
<li>it calls <code>io_writev()</code>
</li>
<li>it calls <code>io_fwritev()</code>
</li>
<li>it calls <code>io_binwritev()</code>
</li>
<li>it calls <code>rb_mutex_synchronize()</code> with <code>io_binwritev_internal()</code>
<ul>
<li>STDOUT's <code>fptr->write_lock</code> is acquired here</li>
</ul>
</li>
<li>
<code>io_binwritev_internal()</code> calls <code>rb_writev_internal()</code>
</li>
<li>it calls <code>rb_thread_io_blocking_region()</code> with <code>internal_writev_func()</code>
</li>
</ul>
<p>Here, <code>internal_writev_func()</code> can be interrupted by signals and if a trap handler is registered, call the trap handler (written in Ruby, <code>puts 'world'</code> in this case) and call <code>Kernel#puts()</code> and <code>fptr->write_lock</code> is already acquired -> <code>deadlock; recursive locking</code>.</p>
<a name="Ideas"></a>
<h2 >Ideas<a href="#Ideas" class="wiki-anchor">¶</a></h2>
<p>I'm not sure why <code>fptr->write_lock</code> is needed, but if there is no internal consistency issue, we can make <code>fptr->write_lock</code> <code>nil</code> at least for STDOUT/ERR.</p>
<p>Another idea is, calling trap handlers (or other interruptible Ruby code such as finalizers and so on) after releasing the lock. But I'm not sure it is feasible.</p>
Ruby master - Bug #19473 (Open): can't be called from trap context (ThreadError) is too limiting
https://redmine.ruby-lang.org/issues/19473
2023-03-02T12:04:28Z
Eregon (Benoit Daloze)
<p>Simple reproducer:</p>
<pre><code>$ ruby -ve 'm=Mutex.new; trap(:HUP) { m.synchronize { p :OK } }; Process.kill :HUP, Process.pid; sleep 0.1'
ruby 3.2.1 (2023-02-08 revision 31819e82c8) [x86_64-linux]
-e:1:in `synchronize': can't be called from trap context (ThreadError)
from -e:1:in `block in <main>'
from -e:1:in `kill'
from -e:1:in `<main>'
</code></pre>
<p>Expected behavior:</p>
<pre><code>$ ruby -ve 'm=Mutex.new; trap(:HUP) { m.synchronize { p :OK } }; Process.kill :HUP, Process.pid; sleep 0.1'
truffleruby 22.3.1, like ruby 3.0.3, GraalVM CE Native [x86_64-linux]
:OK
$ ruby -ve 'm=Mutex.new; trap(:HUP) { m.synchronize { p :OK } }; Process.kill :HUP, Process.pid; sleep 0.1'
jruby 9.4.0.0 (3.1.0) 2022-11-23 95c0ec159f OpenJDK 64-Bit Server VM 17.0.6+10 on 17.0.6+10 +jit [x86_64-linux]
:OK
</code></pre>
<p>This exception is highly problematic, for instance it breaks <code>Timeout.timeout</code> in <code>trap</code>:<br>
<a href="https://github.com/ruby/timeout/issues/17#issuecomment-1142035939" class="external">https://github.com/ruby/timeout/issues/17#issuecomment-1142035939</a></p>
<p>I suppose this behavior is because <em>sometimes</em> it's problematic to lock a Mutex in trap, e.g., if it's already locked by the main thread/fiber.<br>
But that would otherwise already raise <code>deadlock; recursive locking (ThreadError)</code>, so there is no point to fail early.<br>
And that's just one case, not all, so we should not always raise an exception.</p>
<p>There seems to be no valid reason to prevent <em>all</em> <code>Mutex#synchronize</code> in <code>trap</code>.<br>
After all, if the Mutex for instance is only used in <code>trap</code>, it's well-defined AFAIK.<br>
For instance a given trap handler does not seem executed concurrently:</p>
<pre><code>$ ruby -ve 'trap(:HUP) { puts "in trap\n"+caller.join("\n")+"\n\n"; sleep 0.1 }; pid = Process.pid; Process.wait fork { 20.times { Process.kill :HUP, pid } }; sleep 1'
ruby 3.2.1 (2023-02-08 revision 31819e82c8) [x86_64-linux]
in trap
-e:1:in `wait'
-e:1:in `<main>'
in trap
-e:1:in `wait'
-e:1:in `<main>'
in trap
-e:1:in `wait'
-e:1:in `<main>'
in trap
-e:1:in `wait'
-e:1:in `<main>'
in trap
-e:1:in `wait'
-e:1:in `<main>'
in trap
-e:1:in `wait'
-e:1:in `<main>'
</code></pre>
<p>And if the trap handler using the Mutex is never called while the Mutex is held by the main thread/fiber, there is also no problem.</p>
Ruby master - Bug #19470 (Open): Frequent small range-reads from and then writes to a large array...
https://redmine.ruby-lang.org/issues/19470
2023-03-01T05:36:52Z
giner (Stanislav German-Evtushenko)
<p>Write to a large array gets very slow when done after range-reading more than 3 items. In such case the original array gets marked as shared which triggers CoW on a small change afterwards. This leads to a significant performance impact and high memory utilization in cases when we need to range-read/write from/to the same array many times. While this issue can be avoided by reading <= 3 elements at a time the main problem is that this behaviour is not obvious and hard to catch on on-trivial projects.</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="n">times</span> <span class="o">=</span> <span class="p">[]</span>
<span class="n">arr</span> <span class="o">=</span> <span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">*</span> <span class="mi">100000</span>
<span class="n">times</span><span class="p">.</span><span class="nf">push</span> <span class="mi">0</span>
<span class="mi">100000</span><span class="p">.</span><span class="nf">times</span> <span class="k">do</span>
<span class="n">time_start</span> <span class="o">=</span> <span class="no">Time</span><span class="p">.</span><span class="nf">now</span>
<span class="n">arr</span><span class="p">[</span><span class="mi">5</span><span class="p">]</span> <span class="o">=</span> <span class="mi">100</span> <span class="c1"># takes 0.01662315899999512</span>
<span class="n">times</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">+=</span> <span class="no">Time</span><span class="p">.</span><span class="nf">now</span> <span class="o">-</span> <span class="n">time_start</span>
<span class="k">end</span>
<span class="n">times</span><span class="p">.</span><span class="nf">push</span> <span class="mi">0</span>
<span class="mi">100000</span><span class="p">.</span><span class="nf">times</span> <span class="k">do</span>
<span class="n">arr</span><span class="p">[</span><span class="mi">0</span><span class="o">..</span><span class="mi">2</span><span class="p">]</span>
<span class="n">time_start</span> <span class="o">=</span> <span class="no">Time</span><span class="p">.</span><span class="nf">now</span>
<span class="n">arr</span><span class="p">[</span><span class="mi">5</span><span class="p">]</span> <span class="o">=</span> <span class="mi">100</span> <span class="c1"># takes 0.01826406799999659</span>
<span class="n">times</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">+=</span> <span class="no">Time</span><span class="p">.</span><span class="nf">now</span> <span class="o">-</span> <span class="n">time_start</span>
<span class="k">end</span>
<span class="n">times</span><span class="p">.</span><span class="nf">push</span> <span class="mi">0</span>
<span class="mi">100000</span><span class="p">.</span><span class="nf">times</span> <span class="k">do</span>
<span class="n">arr</span><span class="p">[</span><span class="mi">0</span><span class="o">..</span><span class="mi">3</span><span class="p">]</span>
<span class="n">time_start</span> <span class="o">=</span> <span class="no">Time</span><span class="p">.</span><span class="nf">now</span>
<span class="n">arr</span><span class="p">[</span><span class="mi">5</span><span class="p">]</span> <span class="o">=</span> <span class="mi">100</span> <span class="c1"># takes 7.757753919000069</span>
<span class="n">times</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">+=</span> <span class="no">Time</span><span class="p">.</span><span class="nf">now</span> <span class="o">-</span> <span class="n">time_start</span>
<span class="k">end</span>
<span class="n">times</span><span class="p">.</span><span class="nf">push</span> <span class="mi">0</span>
<span class="mi">100000</span><span class="p">.</span><span class="nf">times</span> <span class="k">do</span>
<span class="n">arr</span><span class="p">.</span><span class="nf">dup</span>
<span class="n">time_start</span> <span class="o">=</span> <span class="no">Time</span><span class="p">.</span><span class="nf">now</span>
<span class="n">arr</span><span class="p">[</span><span class="mi">5</span><span class="p">]</span> <span class="o">=</span> <span class="mi">100</span> <span class="c1"># takes 7.626929300999957</span>
<span class="n">times</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">+=</span> <span class="no">Time</span><span class="p">.</span><span class="nf">now</span> <span class="o">-</span> <span class="n">time_start</span>
<span class="k">end</span>
<span class="n">times</span><span class="p">.</span><span class="nf">push</span> <span class="mi">0</span>
<span class="mi">100000</span><span class="p">.</span><span class="nf">times</span> <span class="k">do</span>
<span class="n">arr</span><span class="p">.</span><span class="nf">clone</span>
<span class="n">time_start</span> <span class="o">=</span> <span class="no">Time</span><span class="p">.</span><span class="nf">now</span>
<span class="n">arr</span><span class="p">[</span><span class="mi">5</span><span class="p">]</span> <span class="o">=</span> <span class="mi">100</span> <span class="c1"># takes 8.216933763000046</span>
<span class="n">times</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">+=</span> <span class="no">Time</span><span class="p">.</span><span class="nf">now</span> <span class="o">-</span> <span class="n">time_start</span>
<span class="k">end</span>
<span class="nb">p</span> <span class="n">times</span>
</code></pre>
Ruby master - Bug #19438 (Open): Ruby 2.7 -> 3.2 Performance Regression in so_k_nucleotide benchmark
https://redmine.ruby-lang.org/issues/19438
2023-02-15T13:30:14Z
nick.schwaderer (Nicholas Schwaderer)
nicholas.schwaderer@gmail.com
<a name="Introduction"></a>
<h2 >Introduction<a href="#Introduction" class="wiki-anchor">¶</a></h2>
<p>Recently I had been going through some of the old benchmarks in the <a href="https://programmingzen.com/the-great-ruby-shootout-july-2010/" class="external">Ruby Great Implementation Shootout</a> from around 2010.</p>
<p>As an experiment, one night I ran the benchmarks against Ruby 3.2.0, Ruby 3.2.0 --yjit, TruffleRuby, TruffleRuby +GraalVM, and Ruby 2.6.10.</p>
<p>Most results were as expected. However there was a benchmark that Ruby 2.6.10 was <em>consistently</em> outperforming all new Rubies on.</p>
<a name="Method"></a>
<h2 >Method<a href="#Method" class="wiki-anchor">¶</a></h2>
<p>After pairing with <a class="user active user-mention" href="https://redmine.ruby-lang.org/users/31800">@eightbitraptor (Matthew Valentine-House)</a>, we discovered that this old benchmark was remarkably similar to an existing benchmark in the <code>/benchmark</code><br>
directory, <a href="https://github.com/ruby/ruby/blob/master/benchmark/so_k_nucleotide.yml" class="external">so_k_nucleotide.yml</a>. We decided to go with that benchmark. For brevity I have not included the full 150 lines of the benchmark here.</p>
<p>I tested this benchmark out with 100 runs using <code>benchmark-driver</code> against Ruby 2.7,3.0,3.1,3.2. (I had discovered that 2.7 was even faster than 2.6.).</p>
<p>It appears that about half of the regression occured from 2.7 -> 3.0; the other half from 3.0 -> 3.2. One other interesting finding is that each minor version does appear to regress<br>
from the last, even if a little.</p>
<a name="Code"></a>
<h2 >Code<a href="#Code" class="wiki-anchor">¶</a></h2>
<p>This is my benchmark running code and harnass. <a href="https://gist.github.com/Schwad/16edf3d7cc5316af4baf23497f3c6a8f" class="external">The full code and data can be found here</a></p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="no">RUNS</span> <span class="o">=</span> <span class="mi">100</span>
<span class="n">results</span> <span class="o">=</span> <span class="no">Hash</span><span class="p">.</span><span class="nf">new</span> <span class="p">{</span> <span class="o">|</span><span class="n">h</span><span class="p">,</span> <span class="n">k</span><span class="o">|</span> <span class="n">h</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span> <span class="p">}</span>
<span class="no">RUNS</span><span class="p">.</span><span class="nf">times</span> <span class="k">do</span> <span class="o">|</span><span class="n">i</span><span class="o">|</span>
<span class="nb">puts</span> <span class="n">i</span>
<span class="n">run</span> <span class="o">=</span> <span class="sb">`benchmark-driver so_k_nucleotide.yml --chruby '2.7.5;3.0.5;3.1.3;3.2.0' -o simple`</span>
<span class="n">run</span><span class="p">.</span><span class="nf">scan</span><span class="p">(</span><span class="sr">/\d\.\d\.\d/</span><span class="p">).</span><span class="nf">each_with_index</span> <span class="k">do</span> <span class="o">|</span><span class="n">version</span><span class="p">,</span> <span class="n">index</span><span class="o">|</span>
<span class="n">results</span><span class="p">[</span><span class="n">version</span><span class="p">]</span> <span class="o"><<</span> <span class="n">run</span><span class="p">.</span><span class="nf">scan</span><span class="p">(</span><span class="sr">/\d\.\d\d\d/</span><span class="p">)[</span><span class="n">index</span><span class="p">]</span>
<span class="k">end</span>
<span class="k">end</span>
<span class="nb">require</span> <span class="s1">'csv'</span>
<span class="n">columns</span> <span class="o">=</span> <span class="n">results</span><span class="p">.</span><span class="nf">keys</span>
<span class="n">outdata</span> <span class="o">=</span> <span class="no">CSV</span><span class="p">.</span><span class="nf">generate</span> <span class="k">do</span> <span class="o">|</span><span class="n">csv</span><span class="o">|</span>
<span class="n">csv</span> <span class="o"><<</span> <span class="n">columns</span>
<span class="no">RUNS</span><span class="p">.</span><span class="nf">times</span> <span class="k">do</span> <span class="o">|</span><span class="n">i</span><span class="o">|</span>
<span class="n">csv</span> <span class="o"><<</span> <span class="n">columns</span><span class="p">.</span><span class="nf">map</span> <span class="p">{</span> <span class="o">|</span><span class="n">c</span><span class="o">|</span> <span class="n">results</span><span class="p">[</span><span class="n">c</span><span class="p">][</span><span class="n">i</span><span class="p">]</span> <span class="p">}</span>
<span class="k">end</span>
<span class="k">end</span>
<span class="no">File</span><span class="p">.</span><span class="nf">write</span><span class="p">(</span><span class="s2">"output.csv"</span><span class="p">,</span> <span class="n">outdata</span><span class="p">)</span>
</code></pre>
<a name="Data"></a>
<h2 >Data<a href="#Data" class="wiki-anchor">¶</a></h2>
<p>Ruby 2.7.5 was consistently ~18-20% faster than Ruby 3.2.0 in this Benchmark</p>
<p><img src="https://user-images.githubusercontent.com/7865030/219038430-4a124cc6-0d23-46e2-9794-d89d1f26e227.png" alt="Screenshot 2023-02-15 at 13 16 10"></p>
<a name="Next-Steps"></a>
<h2 >Next Steps<a href="#Next-Steps" class="wiki-anchor">¶</a></h2>
<p>I am happy to help investigate or learn more about this regression if anyone has any ideas.</p>
Ruby master - Bug #19413 (Open): Can't move object when 2 ivars refer to same object
https://redmine.ruby-lang.org/issues/19413
2023-02-04T22:15:59Z
luke-gru (Luke Gruber)
luke.gru@gmail.com
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="k">class</span> <span class="nc">A</span>
<span class="k">def</span> <span class="nf">initialize</span>
<span class="vi">@a</span> <span class="o">=</span> <span class="no">Object</span><span class="p">.</span><span class="nf">new</span>
<span class="vi">@b</span> <span class="o">=</span> <span class="vi">@a</span>
<span class="k">end</span>
<span class="k">end</span>
<span class="n">r</span> <span class="o">=</span> <span class="no">Ractor</span><span class="p">.</span><span class="nf">new</span> <span class="k">do</span> <span class="o">|</span><span class="n">err</span><span class="o">|</span>
<span class="n">obj</span> <span class="o">=</span> <span class="n">receive</span>
<span class="nb">p</span> <span class="n">obj</span>
<span class="k">end</span>
<span class="n">r</span><span class="p">.</span><span class="nf">send</span><span class="p">(</span><span class="no">A</span><span class="p">.</span><span class="nf">new</span><span class="p">,</span> <span class="ss">move: </span><span class="kp">true</span><span class="p">)</span> <span class="c1"># Allocator undefined for Ractor::MovedObject</span>
<span class="n">r</span><span class="p">.</span><span class="nf">take</span>
</code></pre>
<p>To fix it we could have a hash of old to new objects during traversal/replacement and use the same new object over again if necessary.</p>
Ruby master - Bug #19412 (Open): Socket starts queueing and not responding after a certain amount...
https://redmine.ruby-lang.org/issues/19412
2023-02-03T23:44:54Z
brodock (Gabriel Mazetto)
brodock@gmail.com
<p>Here is a an example code:</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="nb">require</span> <span class="s1">'socket'</span>
<span class="no">PORT</span> <span class="o">=</span> <span class="mi">8080</span>
<span class="no">BACKLOG</span> <span class="o">=</span> <span class="mi">50</span>
<span class="no">LISTEN</span> <span class="o">=</span> <span class="s1">'127.0.0.1'</span>
<span class="k">def</span> <span class="nf">handle_connection</span><span class="p">(</span><span class="n">connection</span><span class="p">,</span> <span class="n">_addrinfo</span><span class="p">)</span>
<span class="n">request</span> <span class="o">=</span> <span class="n">connection</span><span class="p">.</span><span class="nf">gets</span>
<span class="nb">puts</span> <span class="n">request</span>
<span class="n">connection</span><span class="p">.</span><span class="nf">write</span> <span class="s2">"HTTP/1.1 200</span><span class="se">\r\n</span><span class="s2">"</span>
<span class="n">connection</span><span class="p">.</span><span class="nf">write</span> <span class="s2">"Content-Type: text/html</span><span class="se">\r\n</span><span class="s2">"</span>
<span class="n">connection</span><span class="p">.</span><span class="nf">write</span> <span class="s2">"</span><span class="se">\r\n</span><span class="s2">"</span>
<span class="n">connection</span><span class="p">.</span><span class="nf">write</span> <span class="s2">"Hello world! Current time is </span><span class="si">#{</span><span class="no">Time</span><span class="p">.</span><span class="nf">now</span><span class="si">}</span><span class="s2">"</span>
<span class="k">ensure</span>
<span class="n">connection</span><span class="p">.</span><span class="nf">close</span>
<span class="k">end</span>
<span class="k">begin</span>
<span class="n">socket</span> <span class="o">=</span> <span class="no">Socket</span><span class="p">.</span><span class="nf">new</span><span class="p">(</span><span class="ss">:INET</span><span class="p">,</span> <span class="ss">:STREAM</span><span class="p">)</span>
<span class="n">socket</span><span class="p">.</span><span class="nf">bind</span><span class="p">(</span><span class="no">Addrinfo</span><span class="p">.</span><span class="nf">tcp</span><span class="p">(</span><span class="no">LISTEN</span><span class="p">,</span> <span class="no">PORT</span><span class="p">))</span>
<span class="n">socket</span><span class="p">.</span><span class="nf">listen</span><span class="p">(</span><span class="no">BACKLOG</span><span class="p">)</span>
<span class="nb">puts</span> <span class="s2">"Requested queue size: </span><span class="si">#{</span><span class="no">BACKLOG</span><span class="si">}</span><span class="s2"> bigger then limit: </span><span class="si">#{</span><span class="no">Socket</span><span class="o">::</span><span class="no">SOMAXCONN</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="no">BACKLOG</span> <span class="o">></span> <span class="no">Socket</span><span class="o">::</span><span class="no">SOMAXCONN</span>
<span class="kp">loop</span> <span class="k">do</span>
<span class="n">listening</span><span class="p">,</span> <span class="o">=</span> <span class="no">IO</span><span class="p">.</span><span class="nf">select</span><span class="p">([</span><span class="n">socket</span><span class="p">])</span>
<span class="n">io</span><span class="p">,</span> <span class="o">=</span> <span class="n">listening</span>
<span class="n">connection</span><span class="p">,</span> <span class="n">addrinfo</span> <span class="o">=</span> <span class="n">io</span><span class="p">.</span><span class="nf">accept</span>
<span class="n">handle_connection</span><span class="p">(</span><span class="n">connection</span><span class="p">,</span> <span class="n">addrinfo</span><span class="p">)</span>
<span class="k">end</span>
<span class="k">ensure</span>
<span class="n">socket</span><span class="p">.</span><span class="nf">close</span>
<span class="k">end</span>
</code></pre>
<p>This tries to simulate a TCP server that responds as if it was an HTTP server.</p>
<p>The amount of requests it can sustain seems to depend on the OS. On a Linux machine running ubuntu 20.04 I get something around 7.6K to 7.8K until it stops responding.</p>
<pre><code>$ uname -a
Linux ... 5.17.5-x86_64-linode154 #1 SMP PREEMPT Mon May 2 15:07:22 EDT 2022 x86_64 x86_64 x86_64 GNU/Linux
$ ab -n 20000 -c 50 http://127.0.0.1:8080/
This is ApacheBench, Version 2.3 <$Revision: 1843412 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 127.0.0.1 (be patient)
Completed 2000 requests
Completed 4000 requests
Completed 6000 requests
apr_pollset_poll: The timeout specified has expired (70007)
Total of 7883 requests completed
</code></pre>
<p>on MacOS Ventura I get around 16K:</p>
<pre><code>$ uname -a
Darwin ... 22.2.0 Darwin Kernel Version 22.2.0: Fri Nov 11 02:04:44 PST 2022; root:xnu-8792.61.2~4/RELEASE_ARM64_T8103 arm64
$ ab -n 20000 -c 50 http://127.0.0.1:8080/
This is ApacheBench, Version 2.3 <$Revision: 1901567 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 127.0.0.1 (be patient)
Completed 2000 requests
Completed 4000 requests
Completed 6000 requests
Completed 8000 requests
Completed 10000 requests
Completed 12000 requests
Completed 14000 requests
Completed 16000 requests
apr_socket_recv: Operation timed out (60)
Total of 16375 requests completed
</code></pre>
<p>in both cases when that limit reaches, if I abort the program (CTRL-C) and try to run it again it takes a while until the port is released:</p>
<pre><code>...
GET / HTTP/1.0
GET / HTTP/1.0
GET / HTTP/1.0
^Csocketserver.rb:29:in `select': Interrupt
from socketserver.rb:29:in `block in <main>'
from socketserver.rb:28:in `loop'
from socketserver.rb:28:in `<main>'
$ ruby socketserver.rb
socketserver.rb:23:in `bind': Address already in use - bind(2) for 127.0.0.1:8080 (Errno::EADDRINUSE)
from socketserver.rb:23:in `<main>'
</code></pre>
<p>After killing the process it seems no process is holding the port:</p>
<pre><code>lsof -wni tcp:8080
</code></pre>
<p>Running the command above does not return anything (it does when the program is still running).</p>
<p>I think we may be failing to release something when interacting with the Socket on syscalls/kernel level and we endup filling up some queue/buffer that eventually gets freed.</p>
Ruby master - Bug #19387 (Open): Issue with ObjectSpace.each_objects not returning objects after ...
https://redmine.ruby-lang.org/issues/19387
2023-01-27T19:27:19Z
luke-gru (Luke Gruber)
luke.gru@gmail.com
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="n">r</span> <span class="o">=</span> <span class="no">Ractor</span><span class="p">.</span><span class="nf">new</span> <span class="k">do</span>
<span class="n">receive</span> <span class="c1"># block, the problem is not the termination of the ractor but the starting</span>
<span class="k">end</span>
<span class="no">ObjectSpace</span><span class="p">.</span><span class="nf">each_object</span><span class="p">(</span><span class="no">IO</span><span class="p">)</span> <span class="p">{</span> <span class="o">|</span><span class="n">io</span><span class="o">|</span>
<span class="nb">p</span> <span class="n">io</span> <span class="c1"># we get no objects</span>
<span class="p">}</span>
</code></pre>
Ruby master - Bug #19384 (Open): ASCII 128..154 characters in IO.popen or %x output do not reflec...
https://redmine.ruby-lang.org/issues/19384
2023-01-26T21:17:30Z
stringsn88keys (Thomas Powell)
<p>Operating systems: Windows 10 and Windows Server 2022 (likely all recent versions of Windows)<br>
Ruby: confirmed on 2.7.7 through 3.1.3</p>
<p>On macOS and Linux I can create a file named "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ" and then do a directory listing via IO.popen or %x and find the file name in the output string.</p>
<p>In Windows, while the encoding is reported as #<a href="Encoding:UTF-8" class="external">Encoding:UTF-8</a>, I have to .force_encoding on the output to be able to find the string in the output:</p>
<a name="xdir-tmp"></a>
<h2 >%x|dir tmp|<a href="#xdir-tmp" class="wiki-anchor">¶</a></h2>
<p>output encoding: #<a href="Encoding:UTF-8" class="external">Encoding:UTF-8</a><br>
Output can be made to match by forcing the following encodings:<br>
IBM437<br>
CP850<br>
IBM865</p>
<a name="IOpopendir-tmpread"></a>
<h2 >IO.popen(dir tmp).read<a href="#IOpopendir-tmpread" class="wiki-anchor">¶</a></h2>
<p>output encoding: #<a href="Encoding:UTF-8" class="external">Encoding:UTF-8</a><br>
Output can be made to match by forcing the following encodings:<br>
IBM437<br>
CP850<br>
IBM865</p>
<p>But on macOS or Linux:<br>
❯ ruby directory_test.rb</p>
<a name="xls-tmp"></a>
<h2 >%x|ls tmp|<a href="#xls-tmp" class="wiki-anchor">¶</a></h2>
<p>output encoding: #<a href="Encoding:UTF-8" class="external">Encoding:UTF-8</a><br>
output matches without forcing encoding<br>
Output can be made to match by forcing the following encodings:<br>
UTF-8<br>
UTF8-MAC<br>
CESU-8<br>
UTF8-DoCoMo<br>
UTF8-KDDI<br>
UTF8-SoftBank</p>
<a name="IOpopenls-tmpread"></a>
<h2 >IO.popen(ls tmp).read<a href="#IOpopenls-tmpread" class="wiki-anchor">¶</a></h2>
<p>output encoding: #<a href="Encoding:UTF-8" class="external">Encoding:UTF-8</a><br>
output matches without forcing encoding<br>
Output can be made to match by forcing the following encodings:<br>
UTF-8<br>
UTF8-MAC<br>
CESU-8<br>
UTF8-DoCoMo<br>
UTF8-KDDI<br>
UTF8-SoftBank</p>
<p>Note:<br>
The example is contrived because the actual IO.popen output is from a customer system with umlaut characters. However, I have found creating a filename with these characters will adequately reproduce the issue.<br>
Also, I'm only using ASCII/IBM437 as an encoding to create a contiguous set of characters, "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ" as a contrived example.</p>
Ruby master - Bug #19363 (Open): Fix rb_transient_heap_mark: wrong header (T_STRUCT) segfault
https://redmine.ruby-lang.org/issues/19363
2023-01-21T18:53:10Z
bkuhlmann (Brooke Kuhlmann)
brooke@alchemists.io
<a name="Overview"></a>
<h2 >Overview<a href="#Overview" class="wiki-anchor">¶</a></h2>
<p>Hello. 👋 I'm hitting an issue where my build is constantly failing with a segfault. The following is a snippet taken from my local machine with YJIT enabled (see attachments for details):</p>
<pre><code>/Users/bkuhlmann/.cache/frum/versions/3.2.0/lib/ruby/gems/3.2.0/gems/puma-6.0.2/lib/puma/runner.rb: [BUG] rb_transient_heap_mark: wrong header, T_STRUCT (0x0000000109ea98a0)
ruby 3.2.0 (2022-12-25 revision a528908271) +YJIT [arm64-darwin22.2.0]
</code></pre>
<p>The closest issue I could find that might be related to this issue (but not sure) is this issue: <a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug: Segfault in rb_transient_heap_mark when running Sequel's specs (Closed)" href="https://redmine.ruby-lang.org/issues/15358">#15358</a>.</p>
<a name="Steps-to-Recreate"></a>
<h2 >Steps to Recreate<a href="#Steps-to-Recreate" class="wiki-anchor">¶</a></h2>
<p>You should be able to quickly recreate this issue via these steps:</p>
<ul>
<li>Download/clone my <a href="https://github.com/bkuhlmann/hemo" class="external">Hemo</a> project.</li>
<li>Run the setup steps.</li>
<li>Run the test suite by running <code>bin/rspec</code>.</li>
</ul>
<p>If you need an example of the same segfault (but not on my macOS machine), you can see the same segfault via my <a href="https://app.circleci.com/pipelines/github/bkuhlmann/hemo/11/workflows/f19abf41-60bc-4e8e-9ba9-b964a67ece73/jobs/10" class="external">Circle CI Build</a>. My Circle CI build is using my <a href="https://www.alchemists.io/projects/docker-alpine-ruby" class="external">Docker Alpine Linux Ruby</a> image which might be of interest as well. This Docker image is also built with YJIT enabled.</p>
<p>Interestingly, is if you were to run the test suite with <code>bin/guard</code> instead of <code>bin/rspec</code> then the segfault doesn't occur.</p>
<a name="Environment"></a>
<h2 >Environment<a href="#Environment" class="wiki-anchor">¶</a></h2>
<pre><code>ruby 3.2.0 (2022-12-25 revision a528908271) +YJIT [arm64-darwin22.2.0]
1.43.0 (using Parser 3.2.0.0, rubocop-ast 1.24.1, running on ruby 3.2.0) [arm64-darwin22.2.0]
- rubocop-performance 1.15.2
- rubocop-rake 0.6.0
- rubocop-rspec 2.18.1
- rubocop-sequel 0.3.4
- rubocop-thread_safety 0.4.4
</code></pre>
Ruby master - Bug #19313 (Open): Leaked file descriptors while running test-all
https://redmine.ruby-lang.org/issues/19313
2023-01-05T18:55:37Z
Eregon (Benoit Daloze)
<pre><code>$ make test-all TESTOPTS="-j8"
Run options:
--seed=25187
"--ruby=./miniruby -I./lib -I. -I.ext/common ./tool/runruby.rb --extout=.ext -- --disable-gems"
--excludes-dir=./test/excludes
--name=!/memory_leak/
-j8
# Running tests:
Skipping Gem::PackageTask tests. rake not found.s_test_2 227226=test_mjit 227227=test_signal 227228=test_gem_comman
Leaked file descriptor: TestFileUtils#test_chown_error: 11 #<File::Stat dev=0xfd00, ino=16777261, mode=0100664, nlink=1, uid=0, gid=0, rdev=0x0, size=9253600, blksize=4096, blocks=18080, atime=2023-01-05 18:16:02.96509764 +0100, mtime=2022-02-23 13:12:06.095215536 +0100, ctime=2022-02-23 13:12:06.095215536 +0100>
Leaked file descriptor: TestFileUtils#test_chown_error: 12 #<File::Stat dev=0xfd00, ino=16777274, mode=0100664, nlink=1, uid=0, gid=0, rdev=0x0, size=6940392, blksize=4096, blocks=13560, atime=2023-01-05 18:16:04.425114636 +0100, mtime=2022-02-23 13:13:58.955685143 +0100, ctime=2022-02-23 13:13:58.955685143 +0100>
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ruby 227230 eregon 11r REG 253,0 9253600 16777261 /var/lib/sss/mc/passwd
ruby 227230 eregon 12r REG 253,0 6940392 16777274 /var/lib/sss/mc/group
Leaked file descriptor: Fiddle::TestFunc#test_qsort1: 12 #<File::Stat dev=0x1, ino=9463, mode=0100777, nlink=0, uid=1000, gid=1000, rdev=0x0, size=4096, blksize=4096, blocks=8, atime=2023-01-05 19:50:42.892803183 +0100, mtime=2023-01-05 19:50:42.892803183 +0100, ctime=2023-01-05 19:50:42.892803183 +0100>
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ruby 227225 eregon 12u REG 0,1 4096 9463 /memfd:libffi (deleted)
Leaked file descriptor: TestFileExhaustive#test_expand_path_home_dir_string: 9 #<File::Stat dev=0xfd00, ino=16777261, mode=0100664, nlink=1, uid=0, gid=0, rdev=0x0, size=9253600, blksize=4096, blocks=18080, atime=2023-01-05 18:16:02.96509764 +0100, mtime=2022-02-23 13:12:06.095215536 +0100, ctime=2022-02-23 13:12:06.095215536 +0100>
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ruby 227226 eregon 9r REG 253,0 9253600 16777261 /var/lib/sss/mc/passwd
Leaked file descriptor: TestDir#test_home: 12 #<File::Stat dev=0xfd00, ino=16777261, mode=0100664, nlink=1, uid=0, gid=0, rdev=0x0, size=9253600, blksize=4096, blocks=18080, atime=2023-01-05 18:16:02.96509764 +0100, mtime=2022-02-23 13:12:06.095215536 +0100, ctime=2022-02-23 13:12:06.095215536 +0100>
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ruby 227224 eregon 12r REG 253,0 9253600 16777261 /var/lib/sss/mc/passwd
Leaked file descriptor: Fiddle::TestFunction#test_argument_count: 13 #<File::Stat dev=0x1, ino=13688, mode=0100777, nlink=0, uid=1000, gid=1000, rdev=0x0, size=4096, blksize=4096, blocks=8, atime=2023-01-05 19:50:49.882901778 +0100, mtime=2023-01-05 19:50:49.882901778 +0100, ctime=2023-01-05 19:50:49.882901778 +0100>
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ruby 227230 eregon 13u REG 0,1 4096 13688 /memfd:libffi (deleted)
Leaked file descriptor: TestProcess#test_uid_from_name: 12 #<File::Stat dev=0xfd00, ino=16777261, mode=0100664, nlink=1, uid=0, gid=0, rdev=0x0, size=9253600, blksize=4096, blocks=18080, atime=2023-01-05 18:16:02.96509764 +0100, mtime=2022-02-23 13:12:06.095215536 +0100, ctime=2022-02-23 13:12:06.095215536 +0100>
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ruby 227229 eregon 12r REG 253,0 9253600 16777261 /var/lib/sss/mc/passwd
Retrying...
Finished tests in 64.982686s, 360.4191 tests/s, 86076.9433 assertions/s.
23421 tests, 5593511 assertions, 0 failures, 0 errors, 156 skips
ruby -v: ruby 3.3.0dev (2023-01-05T18:06:01Z master 54950a78e3) [x86_64-linux]
</code></pre>
<p>On Fedora 37.</p>
<p>If this does not happen on Debian-based OS or macOS I guess it could be a glibc or maybe even a OS bug.</p>
<p>This doesn't cause test failures but makes the output quite noisy.<br>
I have a few leaked descriptors for a while on Fedora when running test-all, also on previous Fedora versions.</p>
Ruby master - Bug #19297 (Open): Don't download content from internet to execute Ruby test suite
https://redmine.ruby-lang.org/issues/19297
2023-01-02T13:41:57Z
vo.x (Vit Ondruch)
v.ondruch@tiscali.cz
<p>Trying to build Ruby 3.2.0 for Fedora and execute its test suite via <code>make check</code> as we always did <a href="https://src.fedoraproject.org/rpms/ruby/blob/631163e3b8a51ed610528181aabe0da008049bb6/f/ruby.spec#_1008" class="external">1</a>, the test suite suddenly fails (while it was working with <a class="changeset" title="darwin: resolve rb symbols from ext by `-flat_namespace` to see libruby transitively This repair..." href="https://redmine.ruby-lang.org/projects/ruby-master/repository/git/revisions/c5eefb7f37db2865891298dd1a1e60dff09560ad">git|c5eefb7f37</a>):</p>
<pre><code>... snip ...
C-API Util function ruby_strtod
- converts a string to a double and returns the remaining string
- returns 0 and the full string if there's no numerical value
Finished in 45.737677 seconds
3827 files, 31635 examples, 177877 expectations, 0 failures, 0 errors, 0 tagged
./miniruby -I/builddir/build/BUILD/ruby-3.2.0/lib -I. -I.ext/common /builddir/build/BUILD/ruby-3.2.0/tool/runruby.rb --extout=.ext -- --disable-gems -C "/builddir/build/BUILD/ruby-3.2.0" bin/gem install --no-document \
--install-dir .bundle --conservative "bundler" "rake" "rspec:~> 3" #"ruby-prof"
ERROR: Could not find a valid gem 'bundler' (>= 0), here is why:
Unable to download data from https://rubygems.org/ - SocketError: Failed to open TCP connection to rubygems.org:443 (getaddrinfo: Temporary failure in name resolution) (https://rubygems.org/specs.4.8.gz)
ERROR: Could not find a valid gem 'rspec' (~> 3), here is why:
Unable to download data from https://rubygems.org/ - SocketError: Failed to open TCP connection to rubygems.org:443 (getaddrinfo: Temporary failure in name resolution) (https://rubygems.org/specs.4.8.gz)
make: Leaving directory '/builddir/build/BUILD/ruby-3.2.0/redhat-linux-build'
make: *** [uncommon.mk:1464: yes-test-syntax-suggest-prepare] Error 2
</code></pre>
<p>This is obviously due to the test suite trying to download <code>rspec</code> from the internet, while Fedora builders does not have internet access (and won't ever have for security reasons). If I am not mistaken, this is caused by <a class="changeset" title="Test syntax_suggest by `make check`" href="https://redmine.ruby-lang.org/projects/ruby-master/repository/git/revisions/cae53842735237ccf71a13873fd0d1ae7f165582">git|cae53842735237ccf71a13873fd0d1ae7f165582</a>. Now</p>
<ol>
<li>Can this be fixed?</li>
<li>Can the tarball be always self contained?</li>
</ol>
Ruby master - Bug #19288 (Open): Ractor JSON parsing significantly slower than linear parsing
https://redmine.ruby-lang.org/issues/19288
2022-12-30T10:39:56Z
maciej.mensfeld (Maciej Mensfeld)
maciej@mensfeld.pl
<p>a simple benchmark:</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="nb">require</span> <span class="s1">'json'</span>
<span class="nb">require</span> <span class="s1">'benchmark'</span>
<span class="no">CONCURRENT</span> <span class="o">=</span> <span class="mi">5</span>
<span class="no">RACTORS</span> <span class="o">=</span> <span class="kp">true</span>
<span class="no">ELEMENTS</span> <span class="o">=</span> <span class="mi">100_000</span>
<span class="n">data</span> <span class="o">=</span> <span class="no">CONCURRENT</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">ELEMENTS</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="p">{</span>
<span class="nb">rand</span> <span class="o">=></span> <span class="nb">rand</span><span class="p">,</span>
<span class="nb">rand</span> <span class="o">=></span> <span class="nb">rand</span><span class="p">,</span>
<span class="nb">rand</span> <span class="o">=></span> <span class="nb">rand</span><span class="p">,</span>
<span class="nb">rand</span> <span class="o">=></span> <span class="nb">rand</span>
<span class="p">}.</span><span class="nf">to_json</span>
<span class="k">end</span>
<span class="k">end</span>
<span class="n">ractors</span> <span class="o">=</span> <span class="no">CONCURRENT</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="no">Ractor</span><span class="p">.</span><span class="nf">receive</span><span class="p">.</span><span class="nf">each</span> <span class="p">{</span> <span class="no">JSON</span><span class="p">.</span><span class="nf">parse</span><span class="p">(</span><span class="n">_1</span><span class="p">)</span> <span class="p">}</span>
<span class="k">end</span>
<span class="k">end</span>
<span class="n">result</span> <span class="o">=</span> <span class="no">Benchmark</span><span class="p">.</span><span class="nf">measure</span> <span class="k">do</span>
<span class="k">if</span> <span class="no">RACTORS</span>
<span class="no">CONCURRENT</span><span class="p">.</span><span class="nf">times</span> <span class="k">do</span> <span class="o">|</span><span class="n">i</span><span class="o">|</span>
<span class="n">ractors</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="nf">send</span><span class="p">(</span><span class="n">data</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="ss">move: </span><span class="kp">false</span><span class="p">)</span>
<span class="k">end</span>
<span class="n">ractors</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>
<span class="k">else</span>
<span class="c1"># Linear without any threads</span>
<span class="n">data</span><span class="p">.</span><span class="nf">each</span> <span class="k">do</span> <span class="o">|</span><span class="n">piece</span><span class="o">|</span>
<span class="n">piece</span><span class="p">.</span><span class="nf">each</span> <span class="p">{</span> <span class="no">JSON</span><span class="p">.</span><span class="nf">parse</span><span class="p">(</span><span class="n">_1</span><span class="p">)</span> <span class="p">}</span>
<span class="k">end</span>
<span class="k">end</span>
<span class="k">end</span>
<span class="nb">puts</span> <span class="n">result</span>
</code></pre>
<p>Gives following results on my 8 core machine:</p>
<pre><code class="shell syntaxhl" data-language="shell"><span class="c"># without ractors:</span>
2.731748 0.003993 2.735741 <span class="o">(</span> 2.736349<span class="o">)</span>
<span class="c"># with ractors</span>
12.580452 5.089802 17.670254 <span class="o">(</span> 5.209755<span class="o">)</span>
</code></pre>
<p>I would expect Ractors not to be two times slower on the CPU intense work.</p>
Ruby master - Bug #19268 (Open): Mingw64 Build Failure
https://redmine.ruby-lang.org/issues/19268
2022-12-27T09:42:22Z
cfis (Charlie Savage)
<p>For both Ruby 3.1.3 and Ruby 3.2.0, building on msys2/ucrt64 fails:</p>
<pre><code class="c syntaxhl" data-language="c"><span class="n">linking</span> <span class="n">miniruby</span><span class="p">.</span><span class="n">exe</span>
<span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">sh</span><span class="o">:</span> <span class="o">-</span><span class="n">c</span><span class="o">:</span> <span class="n">line</span> <span class="mi">1</span><span class="o">:</span> <span class="n">syntax</span> <span class="n">error</span> <span class="n">near</span> <span class="n">unexpected</span> <span class="n">token</span> <span class="err">`</span><span class="p">(</span><span class="err">'</span>
<span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">sh</span><span class="o">:</span> <span class="o">-</span><span class="n">c</span><span class="o">:</span> <span class="n">line</span> <span class="mi">1</span><span class="o">:</span> <span class="err">`</span><span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">local</span><span class="o">/</span><span class="n">ruby</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">ruby</span> <span class="o">--</span><span class="n">disable</span><span class="o">=</span><span class="n">gems</span> <span class="o">-</span><span class="n">n</span> <span class="o">-</span><span class="n">e</span> <span class="n">BEGIN</span><span class="p">{</span><span class="n">version</span><span class="o">=</span><span class="n">ARGV</span><span class="p">.</span><span class="n">shift</span><span class="p">;</span><span class="n">mis</span><span class="o">=</span><span class="n">ARGV</span><span class="p">.</span><span class="n">dup</span><span class="p">}</span> <span class="o">-</span><span class="n">e</span> <span class="n">END</span><span class="p">{</span><span class="n">abort</span> <span class="s">"UNICODE version mismatch: #{mis}"</span> <span class="n">unless</span> <span class="n">mis</span><span class="p">.</span><span class="n">empty</span><span class="o">?</span><span class="p">}</span> <span class="o">-</span><span class="n">e</span> <span class="p">(</span><span class="n">mis</span><span class="p">.</span><span class="n">delete</span><span class="p">(</span><span class="n">ARGF</span><span class="p">.</span><span class="n">path</span><span class="p">);</span> <span class="n">ARGF</span><span class="p">.</span><span class="n">close</span><span class="p">)</span> <span class="k">if</span> <span class="o">/</span><span class="n">ONIG_UNICODE_VERSION_STRING</span> <span class="o">+</span><span class="s">"#{Regexp.quote(version)}"</span><span class="o">/</span><span class="n">o</span> <span class="mi">15</span><span class="p">.</span><span class="mi">0</span><span class="p">.</span><span class="mi">0</span> <span class="p">.</span><span class="o">/</span><span class="n">enc</span><span class="o">/</span><span class="n">unicode</span><span class="o">/</span><span class="mi">15</span><span class="p">.</span><span class="mi">0</span><span class="p">.</span><span class="mi">0</span><span class="o">/</span><span class="n">casefold</span><span class="p">.</span><span class="n">h</span> <span class="p">.</span><span class="o">/</span><span class="n">enc</span><span class="o">/</span><span class="n">unicode</span><span class="o">/</span><span class="mi">15</span><span class="p">.</span><span class="mi">0</span><span class="p">.</span><span class="mi">0</span><span class="o">/</span><span class="n">name2ctype</span><span class="p">.</span><span class="n">h</span><span class="err">'</span>
<span class="n">make</span><span class="o">:</span> <span class="o">***</span> <span class="p">[</span><span class="n">uncommon</span><span class="p">.</span><span class="n">mk</span><span class="o">:</span><span class="mi">878</span><span class="o">:</span> <span class="p">.</span><span class="n">rbconfig</span><span class="p">.</span><span class="n">time</span><span class="p">]</span> <span class="n">Error</span> <span class="mi">2</span>
</code></pre>
<p>The fix that works for me is changing:</p>
<pre><code class="c syntaxhl" data-language="c"> <span class="o">-</span><span class="n">e</span> <span class="err">'</span><span class="p">(</span><span class="n">mis</span><span class="p">.</span><span class="n">delete</span><span class="p">(</span><span class="n">ARGF</span><span class="p">.</span><span class="n">path</span><span class="p">);</span> <span class="n">ARGF</span><span class="p">.</span><span class="n">close</span><span class="p">)</span> <span class="k">if</span> <span class="o">/</span><span class="n">ONIG_UNICODE_VERSION_STRING</span> <span class="o">+</span><span class="s">"#{Regexp.quote(version)}"</span><span class="o">/</span><span class="n">o</span><span class="err">'</span> \
</code></pre>
<p>To</p>
<pre><code class="c syntaxhl" data-language="c"> <span class="o">-</span><span class="n">e</span> <span class="s">"(mis.delete(ARGF.path); ARGF.close) if /ONIG_UNICODE_VERSION_STRING +</span><span class="se">\"</span><span class="s">#{Regexp.quote(version)}</span><span class="se">\"</span><span class="s">/o"</span> \
</code></pre>
<pre><code></code></pre>
Ruby master - Bug #19266 (Open): URI::Generic should use URI::RFC3986_PARSER instead of URI::DEFA...
https://redmine.ruby-lang.org/issues/19266
2022-12-26T18:52:36Z
gareth (Gareth Adams)
<p>In June 2014, <a href="https://github.com/ruby/ruby/commit/bb83f32dc3e0424d25fa4e55d8ff32b061320e41" class="external"><code>uri/common</code> was updated</a> to introduce a RFC3986-compliant parser (<code>URI::RFC3986_PARSER</code>) as an alternative to the previous RFC2396 parser, and common methods like <code>URI()</code> were updated to use that new parser by default. The only methods in <code>common</code> not updated were <a href="https://github.com/ruby/ruby/blob/28a17436503c3c4cb7a35b423a894b697cd80da9/lib/uri/common.rb#L233-L297" class="external"><code>URI.extract</code> and <code>URI.regexp</code></a> which are marked as obsolete. (The old parser was kept in the <code>DEFAULT_PARSER</code> constant despite it not being the default for those methods, presumably for backward compatibility.)</p>
<p>However, similar <a href="https://github.com/ruby/ruby/blob/28a17436503c3c4cb7a35b423a894b697cd80da9/lib/uri/generic.rb#L169-L175" class="external">methods called on <code>URI::Generic</code></a> were never updated to use this new parser. This means that methods like <code>URI::Generic.build</code> fail when given input that succeeds normally, and this also affects subclasses like URI::HTTP:</p>
<pre><code>$ pry -r uri -r uri/common -r uri/generic
[1] pry(main)> URI::Generic.build(host: "underscore_host.example")
URI::InvalidComponentError: bad component(expected host component): underscore_host.example
from /Users/gareth/.asdf/installs/ruby/3.1.3/lib/ruby/3.1.0/uri/generic.rb:591:in `check_host'
[2] pry(main)> URI::HTTP.build(host: "underscore_host.example")
URI::InvalidComponentError: bad component(expected host component): underscore_host.example
from /Users/gareth/.asdf/installs/ruby/3.1.3/lib/ruby/3.1.0/uri/generic.rb:591:in `check_host'
[3] pry(main)> URI("http://underscore_host.example")
=> #<URI::HTTP http://underscore_host.example>
</code></pre>
<p><code>URI::Generic.new</code> allows a configurable <code>parser</code> positional argument to override the class' default parser, but other factory methods like <code>.build</code> don't allow this override.</p>
<p>Arguably this doesn't cause problems because at least in the case above, the URI can be built with the polymorphic constructor, but having the option to build URIs from explicit named parts is useful, and leaving the outdated functionality in the <code>Generic</code> class is ambiguous. It's possible that the whole Generic class and its subclasses aren't intended to be used directly how I'm intending here, but there's nothing I could see that suggested this is the case.</p>
<p>I'm not aware of the entire list of differences between RFC2396 and RFC3986. The relevant difference here is that in RFC2396 an individual segment of a host (<a href="https://www.rfc-editor.org/rfc/rfc2396#section-3.2.2" class="external"><code>domainlabel</code>s</a>) could only be <code>alphanum | alphanum *( alphanum | "-" ) alphanum</code>, whereas RFC3986 allows <a href="https://www.rfc-editor.org/rfc/rfc3986#page-13" class="external">hostnames</a> to include any of <code>ALPHA / DIGIT / "-" / "." / "_" / "~"</code>. It's possible that other differences might cause issues for developers, but since this has gone over 8 years without anyone else caring about this, this is definitely not especially urgent.</p>
Ruby master - Bug #19251 (Open): Limit amount of test failures due to updates of tzdata
https://redmine.ruby-lang.org/issues/19251
2022-12-22T08:19:02Z
vo.x (Vit Ondruch)
v.ondruch@tiscali.cz
<p>It seems that recently, Ruby test suite is broken ~ twice a year due to changes in tzdata. I am not sure how detailed the test suite needs to be to have the right amount of test coverage, but it would be nice if Ruby developers had more control above this changes then this changes being forced upon us via OS update. This is followup to <a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug: Ruby 3.1.3 testsuite fails after timezone 2022g update is applied (Closed)" href="https://redmine.ruby-lang.org/issues/19187">#19187</a>.</p>
<p>BTW with my Fedora / RHEL maintainer hat on, this is a bit annoying, because:</p>
<ol>
<li>It tends to hide other issues</li>
<li>In Fedora, it might block other development</li>
<li>Especially in RHEL, where there is not so big churn, it is unpleasant to start work on fixing CVE just to discover one needs to fix the tzdata test failures first</li>
</ol>
Ruby master - Bug #19231 (Open): Integer#step and Float::INFINITY - inconsistent behaviour when c...
https://redmine.ruby-lang.org/issues/19231
2022-12-13T15:17:41Z
andrykonchin (Andrew Konchin)
<p>The initial issue was reported here <a href="https://github.com/oracle/truffleruby/issues/2797" class="external">https://github.com/oracle/truffleruby/issues/2797</a>.</p>
<p><code>0.step(Float::INFINITY, 10)</code> returns:</p>
<ul>
<li>
<code>Integers</code> when called with a block</li>
<li>
<code>Floats</code> when called without a block</li>
</ul>
<p>I would expect <code>Floats</code> to be returned in both cases.</p>
<p>Examples:</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="mi">0</span><span class="p">.</span><span class="nf">step</span><span class="p">(</span><span class="no">Float</span><span class="o">::</span><span class="no">INFINITY</span><span class="p">,</span> <span class="mi">10</span><span class="p">).</span><span class="nf">take</span><span class="p">(</span><span class="mi">1</span><span class="p">).</span><span class="nf">map</span><span class="p">(</span><span class="o">&</span><span class="ss">:class</span><span class="p">)</span>
<span class="o">=></span> <span class="p">[</span><span class="no">Float</span><span class="p">]</span>
</code></pre>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="mi">0</span><span class="p">.</span><span class="nf">step</span><span class="p">(</span><span class="no">Float</span><span class="o">::</span><span class="no">INFINITY</span><span class="p">,</span> <span class="mi">10</span><span class="p">)</span> <span class="p">{</span> <span class="o">|</span><span class="n">offset</span><span class="o">|</span> <span class="nb">p</span> <span class="n">offset</span><span class="p">.</span><span class="nf">class</span><span class="p">;</span> <span class="k">break</span> <span class="p">}</span>
<span class="c1"># Integer</span>
</code></pre>
<p>When <code>to</code> argument is a finite <code>Float</code> value then calling with a block returns <code>Floats</code> as well:</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="mi">0</span><span class="p">.</span><span class="nf">step</span><span class="p">(</span><span class="mf">100.0</span><span class="p">,</span> <span class="mi">10</span><span class="p">)</span> <span class="p">{</span> <span class="o">|</span><span class="n">offset</span><span class="o">|</span> <span class="nb">p</span> <span class="n">offset</span><span class="p">.</span><span class="nf">class</span><span class="p">;</span> <span class="k">break</span> <span class="p">}</span>
<span class="c1"># Float</span>
</code></pre>
<p>Wondering whether it's intentional behaviour.</p>
<p>I've found a related issue <a href="https://bugs.ruby-lang.org/issues/15518" class="external">https://bugs.ruby-lang.org/issues/15518</a>.</p>
Ruby master - Bug #19192 (Open): IO has third data mode, document is incomplete.
https://redmine.ruby-lang.org/issues/19192
2022-12-09T16:02:34Z
YO4 (Yoshinao Muramatsu)
<p>The documentation on the mode parameter of File.open is incomplete, I would like to clarify IO's data mode actual behavior here.</p>
<p>document says</p>
<pre><code>To specify whether data is to be treated as text or as binary data, either of the following may be suffixed to any of the string read/write modes above:
't': Text data; sets the default external encoding to Encoding::UTF_8; on Windows, enables conversion between EOL and CRLF and enables interpreting 0x1A as an end-of-file marker.
'b': Binary data; sets the default external encoding to Encoding::ASCII_8BIT; on Windows, suppresses conversion between EOL and CRLF and disables interpreting 0x1A as an end-of-file marker.
If neither is given, the stream defaults to text data.
</code></pre>
<p>But actually it's more complicated than that.</p>
<p>There is three Data Mode</p>
<ul>
<li>text mode. Can convert encoding and newline.</li>
<li>binary mode. Cannot convert encoding nor newline. Encoding is treated as Encoding::ASCII_8BIT.</li>
<li>third mode: DOS TEXT mode. That enables conversion between EOL and CRLF and enables interpreting 0x1A as an end-of-file marker.</li>
</ul>
<p>On Windows platform<br>
't' textmode with universal newline conversion.<br>
'b' binary mode.<br>
If neither is given, DOS TEXT mode.</p>
<p>On other platforms<br>
't' textmode with universal newline conversion.<br>
'b' binary mode.<br>
If neither is given, textmode without newline conversion.</p>
<p>On Windows, there are some special cases.<br>
If Encoding conversion is specified, DOS TEXT mode is ignored and universal newline conversion applied.<br>
If access mode is "a+", last (only one) EOF charactor is overwritten when DOS TEXT mode.<br>
There are more parameter combinations, see <a href="https://gist.github.com/YO4/262e9bd5e44a37a7a2fa9118e271b30b" class="external">https://gist.github.com/YO4/262e9bd5e44a37a7a2fa9118e271b30b</a><br>
Is this all? I have not fully investigated.</p>
<p>Since the topic of data mode spanned access mode and encoding conversion, I don't think my English skills will allow me to summarize this into rdoc without breaking something...</p>
Ruby master - Bug #19172 (Open): `ruby_thread_has_gvl_p` is innacurate sometimes -- document or c...
https://redmine.ruby-lang.org/issues/19172
2022-12-02T09:14:59Z
ivoanjo (Ivo Anjo)
ivo.anjo@datadoghq.com
<p>Howdy 👋! I work for Datadog <a href="https://github.com/DataDog/dd-trace-rb" class="external">on the ddtrace gem</a> and I found a... sharp edge on the internal <code>ruby_thread_has_gvl_p</code> API.</p>
<p>I am aware that <code>ruby_thread_has_gvl_p</code> is documented an experimental API that is exported as a symbol but not present on the VM include files.</p>
<a name="Background"></a>
<h3 >Background<a href="#Background" class="wiki-anchor">¶</a></h3>
<p>In the ddtrace profiling component, we setup a signal handler and then periodically send SIGPROF signals to try to interrupt the running Ruby thread (e.g. the thread that is holding the global VM lock or equivalent).</p>
<p>In the signal handler, we need to perform some API calls which are not safe to do without the GVL. So we need to check if the signal handler got called in the thread that has the GVL.</p>
<a name="The-issue"></a>
<h3 >The issue<a href="#The-issue" class="wiki-anchor">¶</a></h3>
<pre><code class="c syntaxhl" data-language="c"><span class="kt">int</span>
<span class="nf">ruby_thread_has_gvl_p</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span>
<span class="p">{</span>
<span class="n">rb_thread_t</span> <span class="o">*</span><span class="n">th</span> <span class="o">=</span> <span class="n">ruby_thread_from_native</span><span class="p">();</span>
<span class="k">if</span> <span class="p">(</span><span class="n">th</span> <span class="o">&&</span> <span class="n">th</span><span class="o">-></span><span class="n">blocking_region_buffer</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">else</span> <span class="p">{</span>
<span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
</code></pre>
<p>In its current implementation, <code>ruby_thread_has_gvl_p</code> only checks if the thread has a <code>blocking_region_buffer</code> or not. Unfortunately, this means that when called from a thread that lost the GVL but not due to blocking (e.g. via <code>rb_thread_schedule()</code>), it can still claim that a thread is holding the GVL when that is not the case.</p>
<p>I ran into this issue in <a href="https://github.com/DataDog/dd-trace-rb/pull/2415" class="external">https://github.com/DataDog/dd-trace-rb/pull/2415</a>, and needed to find a workaround.</p>
<a name="Next-steps"></a>
<h3 >Next steps<a href="#Next-steps" class="wiki-anchor">¶</a></h3>
<p>Since this is an internal VM API, I'm not sure you'd want to change the current behavior, so I was thinking of perhaps two options:</p>
<ul>
<li>
<p>Is it worth changing <code>ruby_thread_has_gvl_p</code> to be accurate in the case I've listed?</p>
</li>
<li>
<p>If not, would you accept a PR to document its current limitations, so that others don't run into the same issue I did?</p>
</li>
</ul>
Ruby master - Bug #19165 (Open): Method (with no param) delegation with *, **, and ... is slow
https://redmine.ruby-lang.org/issues/19165
2022-12-01T08:49:16Z
matsuda (Akira Matsuda)
ronnie@dio.jp
<p>I found that method delegation via Forwardable is much slower than normal method call when delegating a method that does not take parameters.</p>
<p>Here's a benchmark that explains what I mean.</p>
<pre><code>require 'forwardable'
require 'pp'
require 'benchmark/ips'
class Obj
extend Forwardable
attr_accessor :other
def initialize
@other = Other.new
end
def foo_without_splat
@other.foo
end
def foo_with_splat(*)
@other.foo(*)
end
def foo_with_splat_with_name(*args)
@other.foo(*args)
end
def foo_with_splat_and_double_splat(*, **)
@other.foo(*, **)
end
def foo_with_triple_dots(...)
@other.foo(...)
end
delegate :foo => :@other
end
class Other
def foo() end
end
o = Obj.new
Benchmark.ips do |x|
x.report 'simple call' do
o.other.foo
end
x.report 'delegate without splat' do
o.foo_without_splat
end
x.report 'delegate with splat' do
o.foo_with_splat
end
x.report 'delegate with splat with name' do
o.foo_with_splat_with_name
end
x.report 'delegate with splat and double splat' do
o.foo_with_splat_and_double_splat
end
x.report 'delegate with triple dots' do
o.foo_with_triple_dots
end
x.report 'delegate via forwardable' do
o.foo
end
end
(result)
simple call 38.918M (± 0.9%) i/s - 194.884M
delegate without splat
31.933M (± 1.6%) i/s - 159.611M
delegate with splat 10.269M (± 1.6%) i/s - 51.631M
delegate with splat with name
9.888M (± 1.0%) i/s - 49.588M
delegate with splat and double splat
4.117M (± 0.9%) i/s - 20.696M
delegate with triple dots
4.169M (± 0.9%) i/s - 20.857M
delegate via forwardable
9.204M (± 2.1%) i/s - 46.295M
</code></pre>
<p>It shows that Method delegation with a splat is 3-4 times slower (regardless of whether the parameter is named or not), and delegation with a triple-dot literal is 9-10 times slower than a method delegation without an argument.<br>
This may be because calling a method taking a splat always assigns an Array object even when no actual argument was given, and calling a method taking triple-dots assigns five Array objects and two Hash objects (this is equivalent to <code>*, **</code>).</p>
<p>Are there any chance reducing these object assignments and making them faster? My concern is that the Rails framework heavily uses this kind of method delegations, and presumably it causes unignorable performance overhead.</p>
Ruby master - Bug #19157 (Open): URI bad component validation can be tricked
https://redmine.ruby-lang.org/issues/19157
2022-11-28T23:46:13Z
straight-shoota (Johannes Müller)
<p><code>URI::HTTP</code> checks the validity of the URI components. For example, the path of a URI with authority component must be either empty or start with a slash.</p>
<p>This validation applies on the <code>.build</code> constructor as well as on the <code>path</code> setter.<br>
But it can be tricked when setting an empty authority component and scheme before setting a relative path, and then setting the authority and scheme again.<br>
This produces an invalid and incorrect URI.</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="nb">require</span> <span class="s2">"uri"</span>
<span class="n">uri</span> <span class="o">=</span> <span class="no">URI</span><span class="o">::</span><span class="no">HTTP</span><span class="p">.</span><span class="nf">build</span><span class="p">({})</span>
<span class="n">uri</span><span class="p">.</span><span class="nf">scheme</span> <span class="o">=</span> <span class="kp">nil</span>
<span class="n">uri</span><span class="p">.</span><span class="nf">path</span> <span class="o">=</span> <span class="s2">"resource"</span>
<span class="n">uri</span><span class="p">.</span><span class="nf">host</span> <span class="o">=</span> <span class="s2">"example.com"</span> <span class="c1"># this should raise URI::InvalidComponentError</span>
<span class="n">uri</span><span class="p">.</span><span class="nf">scheme</span> <span class="o">=</span> <span class="s2">"http"</span>
<span class="n">uri</span><span class="p">.</span><span class="nf">to_s</span> <span class="c1"># => "http://example.comresource"</span>
</code></pre>