Not sure if this may help, but I remember reading about some changes wrt ordering in nested calls to at_exit in recent MRI code.
Before attempting to change rspec I'd take a look if the bug happens in jruby which has the "right" behaviour, otherwise the resolution would be "use 1.9.3".
There are lots of people using rspec with MRI-1.8.x. How would this be a reasonable resolution?
I have a script on a port installed ruby 1.9.2p290 (2011-07-09 revision 32553) OSX 10.7.1 that hangs in an at_exit and must be kill -9'ed.
Is this maybe a ruby-core bug?
You may want to post this question with additional detail to stackoverflow.
Just a thought.