Forum: Ruby-core [Assigned] [PATCH] ruby_bind_stack() to embed Ruby in coroutine

C4e88907313843cf07f6d85ba8162120?d=identicon&s=25 ko1 (Koichi Sasada) (Guest)
on 2013-02-13 00:46
(Received via mailing list)
Issue #2294 has been updated by ko1 (Koichi Sasada).

Status changed from Closed to Assigned

> 1.  Cannot bind Ruby to a pre-allocated stack address range.

I'm not sure what you are saying. `ucontext' version do
`pre-allocation'.

> 2.  In my coroutine example, only ucontext works correctly:
>
>     # see https://github.com/sunaku/ruby-coroutine-example
>     sh run.sh ucontext dynamic ~/.rvm/rubies/ruby-2.0.0-rc2  # OK
>     sh run.sh ucontext static ~/.rvm/rubies/ruby-2.0.0-rc2   # OK
>     sh run.sh libpcl dynamic ~/.rvm/rubies/ruby-2.0.0-rc2    # NG: infinite loop
>     sh run.sh libpcl static ~/.rvm/rubies/ruby-2.0.0-rc2     # NG: infinite loop
>     sh run.sh pthread dynamic ~/.rvm/rubies/ruby-2.0.0-rc2   # NG: infinite loop
>     sh run.sh pthread static ~/.rvm/rubies/ruby-2.0.0-rc2    # NG: infinite loop

I checked pthread and it okay...

I'll check again soon. Please wait.

> Sorry for the late feedback.  (Even though I am "watching" this issue in the
> Ruby issue tracker, it did not notify me by e-mail about your updates.)

I should notice any comments. Sorry.

----------------------------------------
Feature #2294: [PATCH] ruby_bind_stack() to embed Ruby in coroutine
https://bugs.ruby-lang.org/issues/2294#change-36182

Author: sunaku (Suraj Kurapati)
Status: Assigned
Priority: High
Assignee: ko1 (Koichi Sasada)
Category: core
Target version: 2.0.0


=begin
 Hi,

 I am attaching a "ruby_bind_stack.patch" patch file
 that adds a ruby_bind_stack() function to the Ruby C API.

 This function allows me to inform the GC about the stack
 boundaries of the coroutine inside which Ruby is embedded:

   void ruby_bind_stack(void *lower, void *upper);

 I am also attaching tarballs containing code examples that
 embed Ruby inside two different coroutine environments:
 UNIX System V contexts[1] and libpcl[2] coroutines.

 Each tarball has an "output.log" file which contains the
 result of running `script -c ./run.sh output.log` on my
 machine:

 Linux yantram 2.6.31-ARCH #1 SMP PREEMPT Tue Oct 13 13:36:23 CEST 2009
i686 Intel(R) Pentium(R) D CPU 3.00GHz GenuineIntel GNU/Linux

 The last section in "output.log" corresponds to Ruby @ SVN
 trunk that is patched with the "ruby_bind_stack.patch"
 patch file that is attached to this issue.

 Thanks for your consideration.

 [1]: http://www.gnu.org/s/libc/manual/html_node/System-...
 [2]: http://www.xmailserver.org/libpcl.html

 See also:
 * http://redmine.ruby-lang.org/issues/show/2258
 * http://redmine.ruby-lang.org/issues/show/2126
=end
This topic is locked and can not be replied to.