From: "Suraj N. Kurapati" Date: 2008-03-30T00:47:29+09:00 Subject: Re: embedding Ruby 1.9.0 inside rb_thread_create() This is a multi-part message in MIME format. --------------010105030807000401040808 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit ts wrote: > Suraj N. Kurapati wrote: >> Why does this example fail with Ruby 1.9.0 ? > > For 2 reasons > > * you don't make a full initialisation of the interpreter, i.e. you > are missing a call to Init_prelude() after ruby_init_loadpath() Thanks! I made this correction and the example proceeds further. > * you never protect your program against error that ruby can > generate The main reason for the crash seems to be the following line inside the_ruby_thread() function: rb_eval_string("p :current => Thread.current, :main => Thread.main"); This is harmless code that shouldn't raise any exceptions. So I wonder: did I miss any other steps in the Ruby interpreter initialization process? --- Please try the attached example both (1) as-is, and (2) by uncommenting the following lines inside the_ruby_thread() function: // printf("R: "); // fflush(stdout); // rb_eval_string("p :current => Thread.current, :main => Thread.main"); The example should work as-is with Ruby 1.9.0, but it should fail when the above lines are uncommented. > it's normal that Init_prelude() is not declared in any include > file ? Interesting. That function is not declared in any header file, but only inside ruby.c:917. Why am I able to call it then? Thanks for your consideration. --------------010105030807000401040808 Content-Type: application/x-gzip; name="embed-ruby-1.9-thread.tar.gz" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="embed-ruby-1.9-thread.tar.gz" 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 --------------010105030807000401040808--