[#25936] [Bug:1.9] [rubygems] $LOAD_PATH includes bin directory — Nobuyoshi Nakada <nobu@...>

Hi,

10 messages 2009/10/05

[#25943] Disabling tainting — Tony Arcieri <tony@...>

Would it make sense to have a flag passed to the interpreter on startup that

16 messages 2009/10/05

[#26028] [Bug #2189] Math.atanh(1) & Math.atanh(-1) should not raise an error — Marc-Andre Lafortune <redmine@...>

Bug #2189: Math.atanh(1) & Math.atanh(-1) should not raise an error

14 messages 2009/10/10

[#26222] [Bug #2250] IO::for_fd() objects' finalization dangerously closes underlying fds — Mike Pomraning <redmine@...>

Bug #2250: IO::for_fd() objects' finalization dangerously closes underlying fds

11 messages 2009/10/22

[#26244] [Bug #2258] Kernel#require inside rb_require() inside rb_protect() inside SysV context fails — Suraj Kurapati <redmine@...>

Bug #2258: Kernel#require inside rb_require() inside rb_protect() inside SysV context fails

24 messages 2009/10/22

[#26361] [Feature #2294] [PATCH] ruby_bind_stack() to embed Ruby in coroutine — Suraj Kurapati <redmine@...>

Feature #2294: [PATCH] ruby_bind_stack() to embed Ruby in coroutine

42 messages 2009/10/27

[#26371] [Bug #2295] segmentation faults — tomer doron <redmine@...>

Bug #2295: segmentation faults

16 messages 2009/10/27

[ruby-core:26266] [Bug #2258] Kernel#require inside rb_require() inside rb_protect() inside SysV context fails

From: Suraj Kurapati <redmine@...>
Date: 2009-10-24 06:30:14 UTC
List: ruby-core #26266
Issue #2258 has been updated by Suraj Kurapati.


Hi,

I did some more debugging to find out why the value of "stdin"
was incorrect inside Ruby's prep_stdio() but correct in main().

In my compilation of the ruby-ucontext-full.tgz test case, the
value of "stdin" is always located at memory address 0x8202fa4.

Before the System V context that houses Ruby is created in
main(), the value at memory address 0x8202fa4 is 0xb7f3b420.

During the course of running the System V context, the stack
pointer occupies memory address 0x8202fa4 (which is supposed
to be reserved for the "stdin" variable!) and overwrites its
value with 0x8213008 -- which is the value of "stdin" as read
inside Ruby's prep_stdio() function.

By setting a watchpoint in GDB to stop the debugger as soon as
the value at memory address 0x8202fa4 does not equal 0xb7f3b420,
I found that the stack pointer was occupying the memory for "stdin".

In conclusion, the problem is that the System V context's
pre-allocated stack of SIGSTKSZ bytes (8192 bytes on my system)
is insuffient to support the execution of the Ruby interpreter.

I will try to malloc() a large region of heap memory according to
getrlimit() results for use as the System V context's stack and
I will post a new example test case that makes ruby-ucontext-full.tgz
behave in the same way as ruby-ucontext-half.tgz:  failure at
Kernel#require inside rb_require() inside rb_protect inside SysV context.

Thanks for your consideration.
----------------------------------------
http://redmine.ruby-lang.org/issues/show/2258

----------------------------------------
http://redmine.ruby-lang.org

In This Thread