# Rb\_rescue2 crashes 1.9.0-0

**URL:** <https://www.ruby-forum.com/t/rb-rescue2-crashes-1-9-0-0/125825>\
**Category:** Ruby\
**Created:** [January 12, 2008, 2:45pm UTC](https://www.ruby-forum.com/t/rb-rescue2-crashes-1-9-0-0/125825 "2008-01-12T14:45:19Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![j4nusx](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/898d66/32.png) [@j4nusx](https://www.ruby-forum.com/u/j4nusx)\
**Post date:** [January 12, 2008, 2:45pm UTC](https://www.ruby-forum.com/t/rb-rescue2-crashes-1-9-0-0/125825/1 "2008-01-12T14:45:19Z")

</div>

good day all,

the following rb\_rescue2 works with old versions - tested with 1.8.5 and  
1.8.6. but crashes 1.9.0-0.  
something’s wrong with the code or is it a problem in 1.9.0-0’s  
rb\_rescue2?

#include \<ruby.h\>  
#include \<stdio.h\>

#ifndef RSTRING\_PTR  
#define RSTRING\_PTR(o) RSTRING(o)-\>ptr  
#endif

static VALUE eval\_failed(VALUE v, VALUE exc)  
{  
printf(“eval\_failed\n”);  
return exc;  
}

int main() {  
VALUE retv;  
int i;  
char \*codes[] = {  
“de foo; puts "in foo()"; end”,  
“1/0”  
};

```
ruby_init();
ruby_init_loadpath();

for (i = 0; i < 2; i++) {

```

#ifdef USE\_RB\_STR\_NEW2  
retv = rb\_rescue2(rb\_eval\_string, rb\_str\_new2(codes[i]),  
eval\_failed, Qnil, rb\_eException, 0);  
#else  
retv = rb\_rescue2(rb\_eval\_string, (VALUE)codes[i], eval\_failed,  
Qnil, rb\_eException, 0);  
#endif  
if (rb\_obj\_is\_kind\_of(retv, rb\_eException))  
{  
VALUE msg = rb\_funcall(retv, rb\_intern(“message”), 0);  
printf(“Error: %s\n”, RSTRING\_PTR(msg));  
}  
}

```
ruby_finalize();
exit(0);

```

}

rgds,  
Edwin

```
  ________________________________________________________

```

Bergabunglah dengan orang-orang yang berwawasan, di di bidang Anda!  
Kunjungi Yahoo! Answers saat ini juga di [http://id.answers.yahoo.com/](http://id.answers.yahoo.com/)

---

<div class="post-metadata">

**Author:** ![j4nusx](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/898d66/32.png) [@j4nusx](https://www.ruby-forum.com/u/j4nusx)\
**Post date:** [January 12, 2008, 3:46pm UTC](https://www.ruby-forum.com/t/rb-rescue2-crashes-1-9-0-0/125825/2 "2008-01-12T15:46:23Z")

</div>

> > > > > “E” == Edwin P. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) writes:

E\> the following rb\_rescue2 works with old versions - tested with 1.8.5  
and  
E\> 1.8.6. but crashes 1.9.0-0. something’s wrong with the code or is it  
a  
E\> problem in 1.9.0-0’s rb\_rescue2?

See [ruby-talk:286536]

[http://blade.nagaokaut.ac.jp/ruby/ruby-talk/286536](http://blade.nagaokaut.ac.jp/ruby/ruby-talk/286536)

You must at least call RUBY\_INIT\_STACK and use rb\_protect()

Guy Decoux

---

<div class="post-metadata">

**Author:** ![j4nusx](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/898d66/32.png) [@j4nusx](https://www.ruby-forum.com/u/j4nusx)\
**Post date:** [January 12, 2008, 6:40pm UTC](https://www.ruby-forum.com/t/rb-rescue2-crashes-1-9-0-0/125825/3 "2008-01-12T18:40:17Z")

</div>

> > > > > “E” == Edwin P. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) writes:

E\> is it a problem in 1.9.0-0’s rb\_rescue2?

Well, apparently there is also a problem in 1.9.0 but it’s not specific  
to  
rb\_rescue2(). I’ll send a message to ruby-core to try to explain  
it.

Guy Decoux
