[#62904] [ruby-trunk - Feature #9894] [Open] [RFC] README.EXT: document rb_gc_register_mark_object — normalperson@...
Issue #9894 has been reported by Eric Wong.
3 messages
2014/06/02
[#63321] [ANN] ElixirConf 2014 - Don't Miss Jos辿 Valim and Dave Thomas — Jim Freeze <jimfreeze@...>
Just a few more weeks until ElixirConf 2014!
6 messages
2014/06/24
[#63391] Access Modifiers (Internal Interfaces) — Daniel da Silva Ferreira <danieldasilvaferreira@...>
Hi,
3 messages
2014/06/28
[ruby-core:62950] [ruby-trunk - Bug #9905] [Assigned] Fiber does not work on AIX
From:
nobu@...
Date:
2014-06-06 01:35:00 UTC
List:
ruby-core #62950
Issue #9905 has been updated by Nobuyoshi Nakada. Description updated Category set to platform/aix Status changed from Open to Assigned Assignee set to Yutaka Kanemoto Target version set to current: 2.2.0 Seems fine. ---------------------------------------- Bug #9905: Fiber does not work on AIX https://bugs.ruby-lang.org/issues/9905#change-47050 * Author: Rei Odaira * Status: Assigned * Priority: Normal * Assignee: Yutaka Kanemoto * Category: platform/aix * Target version: current: 2.2.0 * ruby -v: ruby 2.2.0dev (2014-06-02 trunk 45270) [powerpc-aix7.1.0.0] * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN ---------------------------------------- `test/ruby/test_fiber.rb` fails on AIX. ~~~ [ 2/23] TestFiber#test_argument/ss/home/rayod/Dev/Contribution/ruby-trunk-blue1/test/ruby/test_fiber.rb:19: [BUG] machine_stack_cache size is not canonicalized ruby 2.2.0dev (2014-06-02 trunk 45270) [powerpc-aix7.1.0.0] ~~~ Here is what happens for this test: 1. A fiber is created by setting `context->uc_stack.ss_size` to a certain value and calling `makecontext()`. 2. While the fiber is switched with other fibers by `swapcontext()`, `context->uc_stack.ss_size` is changed to a very large value by AIX. 3. When the fiber finishes, its stack pointer and size are cached in `machine_stack_cache[]`. 4. When a new fiber is created, a specified stack size is different from the cached stack size, so the error is thrown. I feel AIX's behavior is strange, but I also suppose in general, `context->uc_stack.ss_size` is not guaranteed to be preserved after `makecontext()` or `swapcontext()`. (Please correct me if I am wrong.) Rather than disabling `FIBER_USE_NATIVE` for AIX, I propose saving the original stack pointer and size not in `ucontext_t` but in new dedicated fields in `rb_fiber_t`, as you can find in the attached patch. With this patch, `test/ruby/test_fiber.rb` results in no errors on AIX. This did not cause any error on Linux, either, for test or test-all. ---Files-------------------------------- sp_and_size_for_fiber.patch (1.9 KB) -- https://bugs.ruby-lang.org/