I'm working on embedding ruby as a scripting language into a large
application (Autodesk Maya) using SWIG.  Currently, on x86-64 on linux.

All is working fine for doing plugins for the applications (gotta love
swig).

However, for rendering, it is not.  Ruby is being used as a shading
language here -- the interpreter is invoked for each pixel thru a
callback from C++.

I'm getting strange:
	stack level too deep errors
followed by a:
	[BUG] cross-thread violation on rb_gc()
which makes the application segfault.

I've tried increasing the stack size with ulimit -s 32767 (from my 8192
default) but this did not improve things.  Stack level errors keep
showing up in the same place.

I'm making sure that the application also uses a single thread.

Finally, the callback routine that is called from the application resets
the ruby stack using RUBY_INIT_STACK (ie. Init_stack and a local
variable), and the stack level errors happen only a couple of calls down
the main callback routine -- which is puzzling.

I was wondering if someone with more knowledge of the ruby core could
suggest something I could try to figure out what's going on.

P.S. this is more academic than anything else, as ruby is too slow to be
used as a shading language.  I just like to be thorough.


-- 
Gonzalo Garramu?o
ggarra / advancedsl.com.ar

AMD4400 - ASUS48N-E
GeForce7300GT
Kubuntu Edgy