# At\_exit in C extension

**URL:** <https://www.ruby-forum.com/t/at-exit-in-c-extension/123408>\
**Category:** Ruby\
**Created:** [December 17, 2007, 1:33pm UTC](https://www.ruby-forum.com/t/at-exit-in-c-extension/123408 "2007-12-17T13:33:04Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![jandrake](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/85e7bf/32.png) [@jandrake](https://www.ruby-forum.com/u/jandrake)\
**Post date:** [December 17, 2007, 1:33pm UTC](https://www.ruby-forum.com/t/at-exit-in-c-extension/123408/1 "2007-12-17T13:33:04Z")

</div>

Hello,

For ruby 1.8 i used registering at\_exit in C via eval (quite hackish i  
know)  
as in:

void Init\_Mymodule()  
{  
…  
module = rb\_define\_module(“Mymodule”);  
rb\_define\_module\_function(module,“myfunc”, …  
…  
rb\_eval\_string(“at\_exit do Mymodule.myfunc end”);  
}

but that doesn’t work with 1.9/head anymore (crash). However when i move  
the  
at\_exit call to the ruby script which uses the extension, it works just  
fine.  
So, what is the correct way of using at\_exit for C extension function ?

Thanks,  
Jan

---

<div class="post-metadata">

**Author:** ![jandrake](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/85e7bf/32.png) [@jandrake](https://www.ruby-forum.com/u/jandrake)\
**Post date:** [December 17, 2007, 5:57pm UTC](https://www.ruby-forum.com/t/at-exit-in-c-extension/123408/2 "2007-12-17T17:57:54Z")

</div>

On Mon, Dec 17, 2007 at 09:29:53PM +0900, Jan D. wrote:

> So, what is the correct way of using at\_exit for C extension function ?

Usually I use rb\_set\_end\_proc().

Still, what you wrote shouldn’t crash. Have you submitted a bug report?

Paul

---

<div class="post-metadata">

**Author:** ![jandrake](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/85e7bf/32.png) [@jandrake](https://www.ruby-forum.com/u/jandrake)\
**Post date:** [December 17, 2007, 11:17pm UTC](https://www.ruby-forum.com/t/at-exit-in-c-extension/123408/3 "2007-12-17T23:17:15Z")

</div>

On Monday 17 December 2007 17:49:19 Paul B. wrote:

> Usually I use rb\_set\_end\_proc().  
> That worked fine, thanks.

> Still, what you wrote shouldn’t crash. Have you submitted a bug report?  
> I just did.

Thanks again,  
Jan
