Skip to content

Instantly share code, notes, and snippets.

@mpage
Created July 13, 2012 20:05
Show Gist options
  • Save mpage/3107072 to your computer and use it in GitHub Desktop.
Save mpage/3107072 to your computer and use it in GitHub Desktop.
def self.instance
@instance ||= begin
new.tap { |instance|
prev_handler = Signal.trap("CLD") {
if EM.reactor_running?
EM.add_timer(0) { instance.signal }
end
prev_handler.call if prev_handler
}
}
end
end
static EventMachine_t *EventMachine;
// ...
extern "C" void ensure_eventmachine (const char *caller = "unknown caller")
{
if (!EventMachine) {
const int err_size = 128;
char err_string[err_size];
snprintf (err_string, err_size, "eventmachine not initialized: %s", caller);
#ifdef BUILD_FOR_RUBY
rb_raise(rb_eRuntimeError, "%s", err_string);
#else
throw std::runtime_error (err_string);
#endif
}
}
Running test 4009
ERROR!: eventmachine not initialized: evma_install_oneshot_timer
/home/mpage/.rbenv/versions/1.9.2-p180/lib/ruby/gems/1.9.1/bundler/gems/eventmachine-2806c630d863/lib/eventmachine.rb:375:in `add_oneshot_timer'
/home/mpage/.rbenv/versions/1.9.2-p180/lib/ruby/gems/1.9.1/bundler/gems/eventmachine-2806c630d863/lib/eventmachine.rb:375:in `add_timer'
/home/mpage/.rbenv/versions/1.9.2-p180/lib/ruby/gems/1.9.1/bundler/gems/common-3f6636fca4fc/em-posix-spawn/lib/em/posix/spawn/child.rb:100:in `block (2 levels) in instance'
/home/mpage/.rbenv/versions/1.9.2-p180/lib/ruby/gems/1.9.1/bundler/gems/eventmachine-2806c630d863/lib/eventmachine.rb:263:in `call'
/home/mpage/.rbenv/versions/1.9.2-p180/lib/ruby/gems/1.9.1/bundler/gems/eventmachine-2806c630d863/lib/eventmachine.rb:263:in `run'
iso_stress.rb:160:in `run'
iso_stress.rb:201:in `block in <main>'
iso_stress.rb:198:in `times'
iso_stress.rb:198:in `<main>'
iso_stress.rb: eventmachine not initialized: evma_install_oneshot_timer (RuntimeError)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment