<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ruby.git/test/fiber/test_scheduler.rb, branch v3_4_9</title>
<subtitle>The Ruby Programming Language</subtitle>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/'/>
<entry>
<title>Push a real iseq in rb_vm_push_frame_fname()</title>
<updated>2025-03-14T19:04:25+00:00</updated>
<author>
<name>Alan Wu</name>
<email>XrXr@users.noreply.github.com</email>
</author>
<published>2025-03-11T02:37:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=6ca43e9b16ded4f884e9a54e9f8f6f6c4e5f0f73'/>
<id>6ca43e9b16ded4f884e9a54e9f8f6f6c4e5f0f73</id>
<content type='text'>
Previously, vm_make_env_each() (used during proc
creation and for the debug inspector C API) picked up the
non-GC-allocated iseq that rb_vm_push_frame_fname() creates,
which led to a SEGV when the GC tried to mark the non GC object.

Put a real iseq imemo instead. Speed should be about the same since
the old code also did a imemo allocation and a malloc allocation.

Real iseq allows ironing out the special-casing of dummy frames in
rb_execution_context_mark() and rb_execution_context_update(). A check
is added to RubyVM::ISeq#eval, though, to stop attempts to run dummy
iseqs.

[Bug #21180]

Co-authored-by: Aaron Patterson &lt;tenderlove@ruby-lang.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Previously, vm_make_env_each() (used during proc
creation and for the debug inspector C API) picked up the
non-GC-allocated iseq that rb_vm_push_frame_fname() creates,
which led to a SEGV when the GC tried to mark the non GC object.

Put a real iseq imemo instead. Speed should be about the same since
the old code also did a imemo allocation and a malloc allocation.

Real iseq allows ironing out the special-casing of dummy frames in
rb_execution_context_mark() and rb_execution_context_update(). A check
is added to RubyVM::ISeq#eval, though, to stop attempts to run dummy
iseqs.

[Bug #21180]

Co-authored-by: Aaron Patterson &lt;tenderlove@ruby-lang.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Ensure fiber scheduler re-acquires mutex when interrupted from sleep. (#12158)</title>
<updated>2024-11-23T23:54:12+00:00</updated>
<author>
<name>Samuel Williams</name>
<email>samuel.williams@oriontransfer.co.nz</email>
</author>
<published>2024-11-23T23:54:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=a8c2d5e7bee5fad0965baeb58d312ddc5932ec26'/>
<id>a8c2d5e7bee5fad0965baeb58d312ddc5932ec26</id>
<content type='text'>
[Bug #20907]</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[Bug #20907]</pre>
</div>
</content>
</entry>
<entry>
<title>Reduce number of iterations in `TestFiberScheduler#test_autoload`. (#8391)</title>
<updated>2023-09-07T01:53:51+00:00</updated>
<author>
<name>Samuel Williams</name>
<email>samuel.williams@oriontransfer.co.nz</email>
</author>
<published>2023-09-07T01:53:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=05aaff2191cbe777d1efb915ab9652eeaa1c16b8'/>
<id>05aaff2191cbe777d1efb915ab9652eeaa1c16b8</id>
<content type='text'>
`ppc64le` appears to be struggling with this test due to timeout. Let's see
if reducing the number of iterations can help improve the test performance.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
`ppc64le` appears to be struggling with this test due to timeout. Let's see
if reducing the number of iterations can help improve the test performance.</pre>
</div>
</content>
</entry>
<entry>
<title>Wait killed threads</title>
<updated>2022-12-02T14:46:21+00:00</updated>
<author>
<name>Nobuyoshi Nakada</name>
<email>nobu@ruby-lang.org</email>
</author>
<published>2022-12-02T14:44:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=bb0ec7df3220de317f719d1e8b5aa45bd40dad25'/>
<id>bb0ec7df3220de317f719d1e8b5aa45bd40dad25</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Avoid missed wakeup with fiber scheduler and Fiber.blocking. (#6588)</title>
<updated>2022-10-20T00:38:52+00:00</updated>
<author>
<name>Samuel Williams</name>
<email>samuel.williams@oriontransfer.co.nz</email>
</author>
<published>2022-10-20T00:38:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=7f175e564875b011efb43537907867dd08d659e8'/>
<id>7f175e564875b011efb43537907867dd08d659e8</id>
<content type='text'>
* Ensure that blocked fibers don't prevent valid wakeups.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Ensure that blocked fibers don't prevent valid wakeups.</pre>
</div>
</content>
</entry>
<entry>
<title>Add missing `f.resume` to fiber test. (#6539)</title>
<updated>2022-10-13T06:04:06+00:00</updated>
<author>
<name>Samuel Williams</name>
<email>samuel.williams@oriontransfer.co.nz</email>
</author>
<published>2022-10-13T06:04:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=765ee822b54026e6cafa107d93475c2883e2bad8'/>
<id>765ee822b54026e6cafa107d93475c2883e2bad8</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Introduce `Fiber.blocking{}` for bypassing the fiber scheduler. (#6498)</title>
<updated>2022-10-06T10:00:49+00:00</updated>
<author>
<name>Samuel Williams</name>
<email>samuel.williams@oriontransfer.co.nz</email>
</author>
<published>2022-10-06T10:00:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=e696ec67ac7bd14ff8436f9ee7724c17c5bf6689'/>
<id>e696ec67ac7bd14ff8436f9ee7724c17c5bf6689</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Retain reference to blocking fibers.</title>
<updated>2022-05-25T03:24:24+00:00</updated>
<author>
<name>Samuel Williams</name>
<email>samuel.williams@oriontransfer.co.nz</email>
</author>
<published>2022-05-21T12:32:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=42bcc629fba518215c844488223bc279006a4fa2'/>
<id>42bcc629fba518215c844488223bc279006a4fa2</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>test/fiber/test_scheduler.rb: Remove the test file from $LOADED_FEATURES</title>
<updated>2022-05-09T01:20:25+00:00</updated>
<author>
<name>Yusuke Endoh</name>
<email>mame@ruby-lang.org</email>
</author>
<published>2022-05-09T01:20:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=df0bcb3385746e010e100dfb4e66a25dddc2c8fd'/>
<id>df0bcb3385746e010e100dfb4e66a25dddc2c8fd</id>
<content type='text'>
to prevent the following failure on `make test-all --repeat-count=2`

http://ci.rvm.jp/results/trunk-repeat20-asserts@phosphorus-docker/3957774
```
  1) Error:
TestFiberScheduler#test_autoload:
NameError: uninitialized constant TestFiberSchedulerAutoload
          Object.const_get(:TestFiberSchedulerAutoload)
                ^^^^^^^^^^
```
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
to prevent the following failure on `make test-all --repeat-count=2`

http://ci.rvm.jp/results/trunk-repeat20-asserts@phosphorus-docker/3957774
```
  1) Error:
TestFiberScheduler#test_autoload:
NameError: uninitialized constant TestFiberSchedulerAutoload
          Object.const_get(:TestFiberSchedulerAutoload)
                ^^^^^^^^^^
```
</pre>
</div>
</content>
</entry>
<entry>
<title>Use a proper mutex for autoloading features. (#5788)</title>
<updated>2022-05-07T22:22:58+00:00</updated>
<author>
<name>Samuel Williams</name>
<email>samuel.williams@oriontransfer.co.nz</email>
</author>
<published>2022-05-07T22:22:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=fd6cef79f54bebab1a49256034687dcc01a09eab'/>
<id>fd6cef79f54bebab1a49256034687dcc01a09eab</id>
<content type='text'>
Object#autoload implements a custom per-thread "mutex" for blocking
threads waiting on autoloading a feature. This causes problems when used
with the fiber scheduler. We swap the implementation to use a Ruby mutex
which is fiber aware.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Object#autoload implements a custom per-thread "mutex" for blocking
threads waiting on autoloading a feature. This causes problems when used
with the fiber scheduler. We swap the implementation to use a Ruby mutex
which is fiber aware.</pre>
</div>
</content>
</entry>
</feed>
