SASADA Koichi <ko1 / atdot.net> wrote:
> (2014/03/15 17:34), Eric Wong wrote:
> >> > BTW,
> >> > 
> >>> > > +    rb_thread_t *th = ruby_thread_from_native();
> >> > 
> >> > `th' can be NULL because no Ruby threads can call this code.
> > Did you mean: gsub(/no Ruby/, "non-Ruby") ?
> 
> Yes.
> 
> > I should put a FATAL exit there (but not much different than crashing).
> 
> You shouldn't.  It should pass.  For example, C-method creates another
> native threads, and they can use ruby_xmalloc().  This is why this is
> not `rb_xmalloc()' but `ruby_xmalloc()'.

xmalloc hits FATAL if called from a non-Ruby thread:
	http://yhbt.net/xmalloc_from_pthread.diff

$ ./miniruby -e 'Thread.test_xmalloc 50000000'
[FATAL] failed to allocate memory

Should we care to support xmalloc/xfree in non-Ruby native threads?
I think it's too much work.