diff --git a/lib/ansible/module_utils/basic.py b/lib/ansible/module_utils/basic.py index e303925cf59..9dd3ee53090 100644 --- a/lib/ansible/module_utils/basic.py +++ b/lib/ansible/module_utils/basic.py @@ -2384,10 +2384,15 @@ class AnsibleModule(object): raise AssertionError("implementation error -- msg to explain the error is required") kwargs['failed'] = True - # add traceback if debug or high verbosity and it is missing - # Note: badly named as exception, it is really always been 'traceback' + # Add traceback if debug or high verbosity and it is missing + # NOTE: Badly named as exception, it really always has been a traceback if 'exception' not in kwargs and sys.exc_info()[2] and (self._debug or self._verbosity >= 3): - kwargs['exception'] = ''.join(traceback.format_tb(sys.exc_info()[2])) + if PY2: + # On Python 2 this is the last (stack frame) exception and as such may be unrelated to the failure + kwargs['exception'] = 'WARNING: The below traceback may *not* be related to the actual failure.\n' +\ + ''.join(traceback.format_tb(sys.exc_info()[2])) + else: + kwargs['exception'] = ''.join(traceback.format_tb(sys.exc_info()[2])) self.do_cleanup_files() self._return_formatted(kwargs)