diff --git a/src/ruby_supportlib/phusion_passenger/public_api.rb b/src/ruby_supportlib/phusion_passenger/public_api.rb index a59b518259..d0d5553bc7 100644 --- a/src/ruby_supportlib/phusion_passenger/public_api.rb +++ b/src/ruby_supportlib/phusion_passenger/public_api.rb @@ -30,6 +30,7 @@ class << self @@event_credentials = [] @@event_after_installing_signal_handlers = [] @@event_oob_work = [] + @@event_unhandled_exception_before_exit = [] @@advertised_concurrency_level = nil def on_event(name, &block) @@ -69,6 +70,8 @@ def callback_list_for_event(name) @@event_after_installing_signal_handlers when :oob_work @@event_oob_work + when :unhandled_exception_before_exit + @@event_unhandled_exception_before_exit else raise ArgumentError, "Unknown event name '#{name}'" end diff --git a/src/ruby_supportlib/phusion_passenger/utils.rb b/src/ruby_supportlib/phusion_passenger/utils.rb index ddfade4e4c..14ae6e1a69 100644 --- a/src/ruby_supportlib/phusion_passenger/utils.rb +++ b/src/ruby_supportlib/phusion_passenger/utils.rb @@ -115,6 +115,7 @@ def create_thread_and_abort_on_exception(*args) raise rescue Exception => e print_exception(nil, e) + PhusionPassenger.call_event(:unhandled_exception_before_exit, e) exit(1) end end