From 07ea110f8694b5b3a36fb936e7eaa46a9ce86050 Mon Sep 17 00:00:00 2001 From: danielsdeleo Date: Fri, 5 Jul 2013 15:01:31 -0700 Subject: Print debug stacktraces from within a forked worker Fixes CHEF-4357: http://tickets.opscode.com/browse/CHEF-4357 Rescue exceptions from within a forker worker and feed them to `Chef::Application.debug_stacktrace()`, then exit non-zero. This fixes an issue where Chef would spew ruby stacktraces with forking enabled (stacktraces should only be printed to console with `-l debug`). Additionally fixes an issue where a generic exception was passed to `debug_stacktrace`, leaving a stacktrace.out file with no useful information. In addition to the above fixes, includes the following improvements: * Update the forked worker's argv0 to clearly indicate it's the worker process, and include ppid and run start time. * When reaping the worker process, include more useful information when the worker exited non-successfully, such as exit code or signal that killed the process. In particular, OOM kill (e.g., when running resource intensive code compile, etc. on small machine) should be a little more obvious. --- lib/chef/application/windows_service.rb | 1 - 1 file changed, 1 deletion(-) (limited to 'lib/chef/application/windows_service.rb') diff --git a/lib/chef/application/windows_service.rb b/lib/chef/application/windows_service.rb index 5b77a44392..85a18c7a17 100644 --- a/lib/chef/application/windows_service.rb +++ b/lib/chef/application/windows_service.rb @@ -99,7 +99,6 @@ class Chef Chef::Log.error("#{e.class}: #{e}") rescue Exception => e Chef::Log.error("#{e.class}: #{e}") - Chef::Application.debug_stacktrace(e) end end end -- cgit v1.2.1