On Sat, May 11, 2013 at 9:49 PM, Yukihiro Nakadaira <
[email protected]> wrote:

> On Sat, May 11, 2013 at 8:47 PM, Bram Moolenaar <[email protected]>wrote:
>
>>
>> Hiroshi Shirosaki wrote:
>>
>> > This is originally reported here.
>> > https://bugs.ruby-lang.org/issues/8364
>> >
>> > Ruby crashes due to GC failure on mac osx. It seems ruby
>> > initialization in if_ruby.c is not a portable way.
>> > Stack start address should be prior to ruby stack region of every ruby
>> > eval for GC working correctly.  It would be better to get the stack
>> > start address at startup timing of vim.
>> > Ruby 1.8.7 on Linux also has this issue.
>> >
>> > I've created a patch to fix this. Tested with ruby 1.8.7, 1.9.3 and
>> > trunk on osx.
>> > ruby_init_stack() also exists in ruby 1.8.7.
>> >
>> > https://gist.github.com/shirosaki/5547805
>>
>> Thanks.  Ruby does appear to have a special kind of GC.
>>
>
> ruby_init_stack() is also required for static linked version.
>

And ruby_init_stack() is defined as

ruby-2.0-0-p0:
#ifdef __ia64
void ruby_init_stack(volatile VALUE*, void*);
#define ruby_init_stack(addr) ruby_init_stack((addr), rb_ia64_bsp())
#else
void ruby_init_stack(volatile VALUE*);
#endif


ruby-1.8.7-p371:
#ifdef __ia64
void ruby_init_stack(VALUE*, void*);
#define RUBY_INIT_STACK \
    VALUE variable_in_this_stack_frame; \
    ruby_init_stack(&variable_in_this_stack_frame, rb_ia64_bsp());
#else
void ruby_init_stack(VALUE*);
#define RUBY_INIT_STACK \
    VALUE variable_in_this_stack_frame; \
    ruby_init_stack(&variable_in_this_stack_frame);
#endif


So, We should handle __ia64.


-- 
Yukihiro Nakadaira - [email protected]

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Raspunde prin e-mail lui