summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJiri Moskovcak <jmoskovc@redhat.com>2011-03-09 13:06:17 +0100
committerJiri Moskovcak <jmoskovc@redhat.com>2011-03-09 13:06:17 +0100
commit7d6883304c12eb0f8be3fcf2e10e400b6aef267d (patch)
tree13b7af7e32b0dca332ad03a4ff0b5d09d18a5121
parentcb8a2fd64a901ed29eff8f7bee1538414d1112b3 (diff)
parenteff4b0bab24476e96e2a1d32ef05d6e35840bafa (diff)
downloadabrt-7d6883304c12eb0f8be3fcf2e10e400b6aef267d.tar.gz
abrt-7d6883304c12eb0f8be3fcf2e10e400b6aef267d.tar.xz
abrt-7d6883304c12eb0f8be3fcf2e10e400b6aef267d.zip
Merge branch 'master' of ssh://git.fedorahosted.org/git/abrt
-rw-r--r--.gitignore4
-rw-r--r--src/retrace/retrace.py33
-rwxr-xr-xsrc/retrace/worker.py26
3 files changed, 53 insertions, 10 deletions
diff --git a/.gitignore b/.gitignore
index 0bf1d396..727bd413 100644
--- a/.gitignore
+++ b/.gitignore
@@ -19,6 +19,8 @@ src/plugins/abrt-action-upload
src/plugins/abrt-action-mailx
src/plugins/abrt-action-print
src/plugins/abrt-dump-oops
+src/plugins/abrt-action-install-debuginfo
+src/plugins/abrt-retrace-client
src/daemon/abrt-action-save-package-data
src/daemon/abrt-handle-crashdump
@@ -39,6 +41,8 @@ src/gui/abrt.desktop
src/gui-wizard-gtk/bug-reporting-wizard
+src/retrace/abrt-retrace-worker
+
# cscope files
cscope.*
ncscope.*
diff --git a/src/retrace/retrace.py b/src/retrace/retrace.py
index cc67f62f..ddeb9ffd 100644
--- a/src/retrace/retrace.py
+++ b/src/retrace/retrace.py
@@ -121,6 +121,39 @@ def guess_release(package):
return None, None
+def run_gdb(savedir):
+ try:
+ exec_file = open("%s/crash/executable" % savedir, "r")
+ executable = exec_file.read().replace("'", "")
+ exec_file.close()
+ except:
+ return ""
+
+ mockr = "../../%s/mock" % savedir
+
+ chmod = Popen(["mock", "shell", "-r", mockr, "--",
+ "/bin/chmod", "777", executable])
+ if chmod.wait() != 0:
+ return ""
+
+ pipe = Popen(["mock", "shell", "-r", mockr, "--",
+ "gdb", "-batch",
+ "-ex", "'file %s'" % executable,
+ "-ex", "'core-file /var/spool/abrt/crash/coredump'",
+ "-ex", "'thread apply all backtrace 2048 full'",
+ "-ex", "'info sharedlib'",
+ "-ex", "'print (char*)__abort_msg'",
+ "-ex", "'print (char*)__glib_assert_msg'",
+ "-ex", "'info registers'",
+ "-ex", "'disassemble'",
+ # redirect GDB's stderr, ignore mock's stderr
+ "2>&1"], stdout=PIPE).stdout
+
+ backtrace = pipe.read()
+ pipe.close()
+
+ return backtrace
+
def gen_task_password(taskdir):
generator = random.SystemRandom()
taskpass = ""
diff --git a/src/retrace/worker.py b/src/retrace/worker.py
index f7381c72..48ef8402 100755
--- a/src/retrace/worker.py
+++ b/src/retrace/worker.py
@@ -150,7 +150,7 @@ if __name__ == "__main__":
mockcfg = open("%s/mock.cfg" % savedir, "w")
mockcfg.write("config_opts['root'] = 'chroot'\n")
mockcfg.write("config_opts['target_arch'] = '%s'\n" % arch)
- mockcfg.write("config_opts['chroot_setup_cmd'] = 'install %s shadow-utils abrt-addon-ccpp gdb'\n" % packages)
+ mockcfg.write("config_opts['chroot_setup_cmd'] = 'install %s shadow-utils gdb'\n" % packages)
mockcfg.write("config_opts['basedir'] = '%s'\n" % workdir)
mockcfg.write("config_opts['plugin_conf']['ccache_enable'] = False\n")
mockcfg.write("config_opts['plugin_conf']['yum_cache_enable'] = False\n")
@@ -201,12 +201,6 @@ if __name__ == "__main__":
mockcfg.write("baseurl=file://%s/%s-%s-%s-updates-testing-debuginfo/\n" % (CONFIG["RepoDir"], distribution, version, arch))
mockcfg.write("failovermethod=priority\n")
mockcfg.write("\n")
- # custom ABRT repo with ABRT 2.0 binaries - obsolete after release of ABRT 2.0
- mockcfg.write("[abrt]\n")
- mockcfg.write("name=abrt\n")
- mockcfg.write("baseurl=http://repos.fedorapeople.org/repos/mtoman/abrt20/%s-%s/%s/\n" % (distribution, version, arch))
- mockcfg.write("failovermethod=priority\n")
- mockcfg.write("\n")
mockcfg.write("\"\"\"\n")
mockcfg.close()
except Exception as ex:
@@ -251,9 +245,21 @@ if __name__ == "__main__":
# generate backtrace
LOG.write("Generating backtrace... ")
- retrace_run(28, ["mock", "shell", "-r", mockr, "--", "/usr/bin/abrt-action-generate-backtrace", "-d", "/var/spool/abrt/crash/"])
- retrace_run(29, ["mock", "-r", mockr, "--copyout", "/var/spool/abrt/crash/backtrace", savedir])
- retrace_run(30, ["chmod", "a+r", "%s/backtrace" % savedir])
+ backtrace = run_gdb(savedir)
+
+ if not backtrace:
+ LOG.write("Error\n")
+ LOG.close()
+ sys.exit(29)
+
+ try:
+ bt_file = open("%s/backtrace" % savedir, "w")
+ bt_file.write(backtrace)
+ bt_file.close()
+ except Exception as ex:
+ LOG.write("Error: %s.\n" % ex)
+ LOG.close()
+ sys.exit(30)
LOG.write("OK\n")