Hi, At Mon, 7 Jan 2008 23:54:17 +0900, Paul Brannan wrote in [ruby-core:14823]: > On Mon, Jan 07, 2008 at 03:01:45AM +0900, Brent Roman wrote: > > > I've tried getting rid of the stack copying, but it's definitely > > > nontrivial. The stack copying causes problems in our C++ extensions, > > > so our rule of thumb is to not use threads at all when those > > > extensions are being used (there is a safe way to make it work, but > > > it's easier just to use an event loop). > > > > Have you been able to isolate what operations in your C++ extensions > > break when threads are used? I could see were signal handlers and C++ > > exceptions could be troublesome... > > It has to do with keeping pointers/references on the heap to objects on > the stack. When Ruby switches threads, it copies the stack, overwriting > those objects. And those pointers are referred asynchronously? Such objects have to be on heap in 1.8 implementation. -- Nobu Nakada