[firstboot][PATCH] Fix exception handling (#952633)
Martin Kolman
mkolman at redhat.com
Thu Sep 18 14:02:18 UTC 2014
Provide python-meh and libreport with correctly formated data
and dump broken interactive console error reporting.
Resolves: rhbz#952633
Signed-off-by: Martin Kolman <mkolman at redhat.com>
---
progs/firstboot | 26 ++++++++++++++++----------
1 file changed, 16 insertions(+), 10 deletions(-)
diff --git a/progs/firstboot b/progs/firstboot
index ba57ca6..f690a86 100755
--- a/progs/firstboot
+++ b/progs/firstboot
@@ -53,7 +53,11 @@ def exception_handler(type, value, tb, obj):
meh_conf = meh.Config(programName='firstboot',
programVersion='@VERSION@')
- dump_obj = meh.dump.ExceptionDump((type, value, tb), meh_conf)
+ # python-meh expects the exception data in a named tuple
+ ExcInfo = namedtuple("ExcInfo", ["type", "value", "stack"])
+ exc_info = ExcInfo(type, value, tb)
+
+ dump_obj = meh.dump.ReverseExceptionDump(exc_info, meh_conf)
exn_dump = dump_obj.traceback_and_object_dump(obj)
fd, path = tempfile.mkstemp(prefix='firstboot-tb-')
@@ -66,6 +70,17 @@ def exception_handler(type, value, tb, obj):
params = dict()
params.update(dump_obj.environment_info)
+ # turn the python-meh package info to a key/value pairs
+ pkg_info = params.pop("pkg_info", None)
+ if pkg_info:
+ params["pkg_name"] = pkg_info.name
+ params["pkg_version"] = pkg_info.version
+ params["pkg_release"] = pkg_info.release
+ params["pkg_epoch"] = pkg_info.epoch
+ params["pkg_arch"] = pkg_info.arch
+ params["package"] = "%s-%s-%s.%s" % (pkg_info.name, pkg_info.version,
+ pkg_info.release, pkg_info.arch)
+
params.setdefault('component', 'firstboot')
params.setdefault('package', 'firstboot- at VERSION@')
@@ -80,15 +95,6 @@ def exception_handler(type, value, tb, obj):
problem_data.create_dump_dir(ABRT_DIR)
- print _('Unhandled exception in firstboot occured.')
- print _('Bugreport directory was created and once you login, ABRT should\n'
- 'let you file a bug. (Don\'t forget to check "Show all problems")')
- answer = raw_input (_('Do you want to start /usr/bin/setup so that you can\n'
- 'create your user account? [Y/n] '))
-
- if not answer.lower() in [_('n'), _('no')]:
- os.system('/usr/bin/setup')
-
if __name__ == '__main__':
# set up exception handling first
--
1.9.3
More information about the anaconda-patches
mailing list