On Wed, 22 Apr 2009 13:44:52 -0500, Eric Hodel wrote: > On Apr 22, 2009, at 10:05, bdezonia / wisc.edu wrote: >> I am using Ruby 1.8.6-26 from the One Click Installer on Windows. I >> have a C extension that tries to calloc() memory. If the calloc() fails >> I call rb_raise(rb_eNoMemError,"Cannot allocate data"). My program is >> getting stuck in this code. Debugging (unfortunately via print >> statements) I can see that rb_raise() is going to be called. After that >> the exception is never caught by the outermost rescue loop. The program >> just stops doing anything (0% cpu) except it keeps updating a timer in >> another thread. Are there things I need to know about rb_raise() and >> how to use it? > > If ruby is out of memory how could it allocate more memory to raise an > exception? > > Ruby itself allocates a NoMemError at startup to ensure it can raise one > when it runs out of memory. You'll probably need to do the same. See > gc.c rb_memerror(). Is rb_memerror() exposed for him to call? He could just call that, and it would spare him all issues with preallocation. --Ken -- Chanoch (Ken) Bloom. PhD candidate. Linguistic Cognition Laboratory. Department of Computer Science. Illinois Institute of Technology. http://www.iit.edu/~kbloom1/