provide equivalent of MRI's rb_exec_end_proc
--------------------------------------------

                 Key: JRUBY-6020
                 URL: https://jira.codehaus.org/browse/JRUBY-6020
             Project: JRuby
          Issue Type: Bug
            Reporter: John Firebaugh
            Assignee: Thomas E Enebo


MRI's 
[rb_exec_end_proc](https://github.com/ruby/ruby/blob/1df42597d15416357a20bd68700ce1a2d245e8bb/eval_jump.c#L96)
 executes all the at_exit blocks.

The ruby-debug-base C extension [calls this 
method](https://github.com/ruby-debug/ruby-debug/blob/8ff6f477b17ded583d72c773e91b9c4803b9a0ea/ext/ruby_debug.c#L1418-L1420),
 allowing at_exit blocks to be properly debugged prior to the debugger shutting 
down. This is essential for debugging tests, as many test frameworks use 
at_exit to auto-run all registered tests.

JRuby's ruby-debug-base currently [calls 
Ruby.tearDown()](https://github.com/jruby/jruby-debug/blob/master/src/org/jruby/debug/Debugger.java#L105)
 when stopping the debugger via Debugger.stop. Ruby.tearDown does run at_exit 
blocks, but also tears down the entire runtime. I'm amazed that this even sort 
of works considering that Debugger.start/Debugger.stop can be called multiple 
times during a program run, and there's always more Ruby code executing 
following Debugger.stop. Tearing down the runtime while things are still in 
flight definitely has some bad side effects (test failures in the ruby-debug 
test suite, random debugger hangs due to corruption of internal structures).

I'd like to have a Ruby.executeAtExitBlock() so JRuby's ruby-debug-base can 
mimic the behavior of the C extension.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply via email to