From: "sunaku (Suraj Kurapati)" <sunaku@...> Date: 2013-02-13T07:28:49+09:00 Subject: [ruby-core:52166] [ruby-trunk - Feature #2294] [PATCH] ruby_bind_stack() to embed Ruby in coroutine Issue #2294 has been updated by sunaku (Suraj Kurapati). Hello ko1, Thanks for committing changeset r38905 into Ruby 2.0.0-rc2. But, I am seeing the following problems with that changeset: 1. Cannot bind Ruby to a pre-allocated stack address range. 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 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.) Thanks for your consideration. ---------------------------------------- Feature #2294: [PATCH] ruby_bind_stack() to embed Ruby in coroutine https://bugs.ruby-lang.org/issues/2294#change-36181 Author: sunaku (Suraj Kurapati) Status: Closed 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-V-contexts.html [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 -- http://bugs.ruby-lang.org/