update to 2.0.1
This commit is contained in:
parent
1d0a84238c
commit
cb93e6bf51
15 changed files with 48 additions and 1030 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -3,3 +3,4 @@ abrt-1.1.13.tar.gz
|
|||
/abrt-1.1.14.tar.gz
|
||||
/abrt-1.1.17.tar.gz
|
||||
/abrt-2.0.0.tar.gz
|
||||
/abrt-2.0.1.tar.gz
|
||||
|
|
|
|||
|
|
@ -1,35 +0,0 @@
|
|||
commit 4def4f1609679232ea2c457ccc6bc4621184201d
|
||||
Author: Karel Klic <kklic@redhat.com>
|
||||
Date: Mon Mar 28 18:08:55 2011 +0200
|
||||
|
||||
abrt-action-analyze-backtrace: log backtrace parser failure every time; remove dead code
|
||||
|
||||
diff --git a/src/plugins/abrt-action-analyze-backtrace.c b/src/plugins/abrt-action-analyze-backtrace.c
|
||||
index e65b178..b690fc9 100644
|
||||
--- a/src/plugins/abrt-action-analyze-backtrace.c
|
||||
+++ b/src/plugins/abrt-action-analyze-backtrace.c
|
||||
@@ -88,13 +88,7 @@ int main(int argc, char **argv)
|
||||
char *executable = dd_load_text(dd, FILENAME_EXECUTABLE);
|
||||
|
||||
/* Read backtrace */
|
||||
- /* NB: get_backtrace() closes dd */
|
||||
char *backtrace_str = dd_load_text(dd, FILENAME_BACKTRACE);
|
||||
- if (!backtrace_str)
|
||||
- {
|
||||
- backtrace_str = xstrdup("");
|
||||
- log("Backtrace file is missing");
|
||||
- }
|
||||
|
||||
/* Compute backtrace hash */
|
||||
struct btp_location location;
|
||||
@@ -110,8 +104,8 @@ int main(int argc, char **argv)
|
||||
* The parser failed. Compute the UUID from the executable
|
||||
* and package only. This is not supposed to happen often.
|
||||
*/
|
||||
- VERB1 log(_("Backtrace parsing failed for %s"), dump_dir_name);
|
||||
- VERB1 log("%d:%d: %s", location.line, location.column, location.message);
|
||||
+ log(_("Backtrace parsing failed for %s"), dump_dir_name);
|
||||
+ log("%d:%d: %s", location.line, location.column, location.message);
|
||||
struct strbuf *emptybt = strbuf_new();
|
||||
strbuf_prepend_str(emptybt, executable);
|
||||
strbuf_prepend_str(emptybt, package);
|
||||
|
|
@ -1,25 +0,0 @@
|
|||
commit 1972460bf7ad803097f8fb669dcb858f6135c7d5
|
||||
Author: Karel Klic <kklic@redhat.com>
|
||||
Date: Mon Mar 28 18:19:01 2011 +0200
|
||||
|
||||
abrt-action-analyze-backtrace: report failure when run on a dump_dir without backtrace
|
||||
|
||||
diff --git a/src/plugins/abrt-action-analyze-backtrace.c b/src/plugins/abrt-action-analyze-backtrace.c
|
||||
index b690fc9..7ae7e47 100644
|
||||
--- a/src/plugins/abrt-action-analyze-backtrace.c
|
||||
+++ b/src/plugins/abrt-action-analyze-backtrace.c
|
||||
@@ -88,7 +88,13 @@ int main(int argc, char **argv)
|
||||
char *executable = dd_load_text(dd, FILENAME_EXECUTABLE);
|
||||
|
||||
/* Read backtrace */
|
||||
- char *backtrace_str = dd_load_text(dd, FILENAME_BACKTRACE);
|
||||
+ char *backtrace_str = dd_load_text_ext(dd, FILENAME_BACKTRACE,
|
||||
+ DD_LOAD_TEXT_RETURN_NULL_ON_FAILURE);
|
||||
+ if (!backtrace_str)
|
||||
+ {
|
||||
+ dd_close(dd);
|
||||
+ return 1;
|
||||
+ }
|
||||
|
||||
/* Compute backtrace hash */
|
||||
struct btp_location location;
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
--- abrt-1.0.9/src/Gui/ccgui.glade 2010-03-31 10:34:14.000000000 +0200
|
||||
+++ abrt-1.0.9_hideprefs/src/Gui/ccgui.glade 2010-03-31 21:39:27.653364662 +0200
|
||||
@@ -102,7 +102,7 @@
|
||||
<child>
|
||||
<widget class="GtkImageMenuItem" id="miPreferences">
|
||||
<property name="label">gtk-preferences</property>
|
||||
- <property name="visible">True</property>
|
||||
+ <property name="visible">False</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
<property name="always_show_image">True</property>
|
||||
68
abrt.spec
68
abrt.spec
|
|
@ -16,12 +16,12 @@
|
|||
%if "0%{?_buildid}" != "0"
|
||||
%define pkg_release 0.%{?_buildid}%{?dist}
|
||||
%else
|
||||
%define pkg_release 5%{?dist}
|
||||
%define pkg_release 1%{?dist}
|
||||
%endif
|
||||
|
||||
Summary: Automatic bug detection and reporting tool
|
||||
Name: abrt
|
||||
Version: 2.0.0
|
||||
Version: 2.0.1
|
||||
Release: %{?pkg_release}
|
||||
License: GPLv2+
|
||||
Group: Applications/System
|
||||
|
|
@ -31,16 +31,7 @@ Source1: abrt.init
|
|||
Source2: abrt-ccpp.init
|
||||
Patch0: remove_libreport_python.patch
|
||||
Patch1: blacklist.patch
|
||||
Patch2: notify_persistence.patch
|
||||
Patch3: notify_init_name.patch
|
||||
Patch4: hash_not_in_bz.patch
|
||||
Patch5: dont_continue_if_event_fails.patch
|
||||
Patch6: cli_analyze_action_select.patch
|
||||
Patch7: a-a-a-backtrace_better_error_handling.patch
|
||||
Patch8: a-a-a_better2.patch
|
||||
Patch9: g_prgname.patch
|
||||
Patch10: settings_warning.patch
|
||||
Patch11: split_debuginfo_install.patch
|
||||
Patch2: allow_bz_for_koops.patch
|
||||
BuildRequires: dbus-devel
|
||||
BuildRequires: gtk2-devel
|
||||
BuildRequires: curl-devel
|
||||
|
|
@ -263,7 +254,7 @@ Group: System Environment/Daemons
|
|||
Requires: abrt-addon-ccpp
|
||||
Requires: gdb >= 7.0-3
|
||||
Requires: httpd, mod_wsgi, mod_ssl, python-webob
|
||||
Requires: mock, xz, elfutils, createrepo
|
||||
Requires: mock, xz, elfutils, createrepo, rsync
|
||||
%{?el6:Requires: python-argparse}
|
||||
Requires(preun): /sbin/install-info
|
||||
Requires(post): /sbin/install-info
|
||||
|
|
@ -276,17 +267,7 @@ generation service over a network using HTTP protocol.
|
|||
%setup -q
|
||||
%patch0 -p1 -b .libreport_py
|
||||
%patch1 -p1 -b .blacklist
|
||||
%patch2 -p1 -b .persistence
|
||||
%patch3 -p1 -b .notify_progname
|
||||
%patch4 -p1 -b .bz_hash
|
||||
%patch5 -p1 -b .analyze_fail
|
||||
%patch6 -p1 -b .cli_analyze_select
|
||||
%patch7 -p1 -b .error_handling
|
||||
%patch8 -p1 -b .error_handling2
|
||||
%patch9 -p1 -b .prgname
|
||||
# FIXME remove when settings check is implemented
|
||||
%patch10 -p1 -b .warning
|
||||
%patch11 -p1 -b .diinstall
|
||||
%patch2 -p1 -b bz_for_oops
|
||||
|
||||
%build
|
||||
autoconf
|
||||
|
|
@ -309,6 +290,9 @@ install -m 755 %SOURCE2 ${RPM_BUILD_ROOT}/%{_initrddir}/abrt-ccpp
|
|||
mkdir -p $RPM_BUILD_ROOT/var/cache/abrt-di
|
||||
mkdir -p $RPM_BUILD_ROOT/var/run/abrt
|
||||
mkdir -p $RPM_BUILD_ROOT/var/spool/abrt
|
||||
mkdir -p $RPM_BUILD_ROOT/var/spool/abrt-retrace
|
||||
mkdir -p $RPM_BUILD_ROOT/var/cache/abrt-retrace
|
||||
mkdir -p $RPM_BUILD_ROOT/var/log/abrt-retrace
|
||||
mkdir -p $RPM_BUILD_ROOT/var/spool/abrt-upload
|
||||
|
||||
desktop-file-install \
|
||||
|
|
@ -358,6 +342,7 @@ chown -R abrt:abrt %{_localstatedir}/cache/abrt-di
|
|||
|
||||
%post retrace-server
|
||||
/sbin/install-info %{_infodir}/abrt-retrace-server %{_infodir}/dir 2> /dev/null || :
|
||||
/usr/sbin/usermod -G mock apache 2> /dev/null || :
|
||||
|
||||
%preun
|
||||
if [ "$1" -eq "0" ] ; then
|
||||
|
|
@ -457,6 +442,7 @@ fi
|
|||
%dir %{_sysconfdir}/%{name}
|
||||
%dir %{_sysconfdir}/%{name}/plugins
|
||||
%dir %{_sysconfdir}/%{name}/events.d
|
||||
%dir %{_sysconfdir}/%{name}/events
|
||||
#%dir %{_libdir}/%{name}
|
||||
%{_mandir}/man8/abrtd.8.gz
|
||||
%{_mandir}/man5/%{name}.conf.5.gz
|
||||
|
|
@ -491,9 +477,10 @@ fi
|
|||
%defattr(-,root,root,-)
|
||||
%{_includedir}/abrt/*
|
||||
%{_libdir}/libabrt*.so
|
||||
%{_includedir}/btparser/*
|
||||
%{_libdir}/libbtparser.so
|
||||
#FIXME: this should go to libreportgtk-devel package
|
||||
%{_libdir}/libreportgtk.so*
|
||||
%{_libdir}/libreportgtk.so
|
||||
%{_libdir}/pkgconfig/*
|
||||
%doc doc/abrt-plugin doc/howto-write-reporter
|
||||
|
||||
|
|
@ -534,7 +521,7 @@ fi
|
|||
%defattr(-,root,root,-)
|
||||
%config(noreplace) %{_sysconfdir}/%{name}/plugins/Kerneloops.conf
|
||||
%{_sysconfdir}/%{name}/events/report_Kerneloops.xml
|
||||
%{_sysconfdir}/%{name}/events.d/koops_events.conf
|
||||
%config(noreplace) %{_sysconfdir}/%{name}/events.d/koops_events.conf
|
||||
%{_mandir}/man7/abrt-KerneloopsReporter.7.gz
|
||||
%{_bindir}/abrt-dump-oops
|
||||
%{_bindir}/abrt-action-analyze-oops
|
||||
|
|
@ -549,7 +536,7 @@ fi
|
|||
%files plugin-mailx
|
||||
%defattr(-,root,root,-)
|
||||
%{_sysconfdir}/%{name}/events/report_Mailx.xml
|
||||
%{_sysconfdir}/%{name}/events.d/mailx_events.conf
|
||||
%config(noreplace) %{_sysconfdir}/%{name}/events.d/mailx_events.conf
|
||||
%{_mandir}/man7/abrt-Mailx.7.gz
|
||||
%{_bindir}/abrt-action-mailx
|
||||
|
||||
|
|
@ -565,6 +552,7 @@ fi
|
|||
%files plugin-rhtsupport
|
||||
%defattr(-,root,root,-)
|
||||
%{_sysconfdir}/%{name}/events/report_RHTSupport.xml
|
||||
%config(noreplace) %{_sysconfdir}/%{name}/events.d/rhtsupport_events.conf
|
||||
# {_mandir}/man7/abrt-RHTSupport.7.gz
|
||||
%{_bindir}/abrt-action-rhtsupport
|
||||
|
||||
|
|
@ -578,7 +566,7 @@ fi
|
|||
%defattr(-,root,root,-)
|
||||
%config(noreplace) %{_sysconfdir}/%{name}/plugins/Python.conf
|
||||
%{_bindir}/abrt-action-analyze-python
|
||||
%{python_site}/*.py*
|
||||
%{python_site}/abrt*.py*
|
||||
%{python_site}/abrt.pth
|
||||
|
||||
%files cli
|
||||
|
|
@ -595,12 +583,34 @@ fi
|
|||
%config(noreplace) %{_sysconfdir}/%{name}/retrace.conf
|
||||
%config(noreplace) %{_sysconfdir}/httpd/conf.d/retrace_httpd.conf
|
||||
%config(noreplace) %{_sysconfdir}/yum.repos.d/retrace.repo
|
||||
%{_bindir}/abrt-retrace-worker
|
||||
%dir %attr(0775, apache, abrt) %{_localstatedir}/spool/abrt-retrace
|
||||
%dir %attr(0755, abrt, abrt) %{_localstatedir}/cache/abrt-retrace
|
||||
%dir %attr(0755, abrt, abrt) %{_localstatedir}/log/abrt-retrace
|
||||
%caps(cap_setuid=ep) %{_bindir}/abrt-retrace-worker
|
||||
%{_bindir}/abrt-retrace-cleanup
|
||||
%{_bindir}/abrt-retrace-reposync
|
||||
%{_bindir}/coredump2packages
|
||||
%{python_site}/retrace.py*
|
||||
%{_datadir}/abrt-retrace/*.py*
|
||||
%{_datadir}/abrt-retrace/plugins/*.py*
|
||||
%{_datadir}/abrt-retrace/*.wsgi
|
||||
%{_infodir}/abrt-retrace-server*
|
||||
|
||||
%changelog
|
||||
* Wed Apr 20 2011 Jiri Moskovcak <jmoskovc@redhat.com> 2.0.1-1
|
||||
- updated to 2.0.1
|
||||
- updated translation
|
||||
- allowed reporting oops to bugzilla
|
||||
- added warning when the plugin settings are wrong
|
||||
- added help text in plugins settings
|
||||
- the plugin settings dialog is translatable
|
||||
- improved dir rescanning logic in abrt-gui
|
||||
- fixed icons for child dialogs
|
||||
- retrace-client: human readable messages instead of http codes
|
||||
- save envirnment variables when app crashes
|
||||
- fixed gpg/pgp check
|
||||
- revert to the old icon
|
||||
|
||||
* Fri Apr 15 2011 Jiri Moskovcak <jmoskovc@redhat.com> 2.0.0-5
|
||||
- fixed problem with abrt-action-debuginfo-install rhbz#692064
|
||||
|
||||
|
|
|
|||
7
allow_bz_for_koops.patch
Normal file
7
allow_bz_for_koops.patch
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
--- abrt-2.0.1/src/plugins/koops_events.conf 2011-03-30 21:10:14.000000000 +0200
|
||||
+++ abrt-2.0.1_/src/plugins/koops_events.conf 2011-04-20 14:43:46.460859863 +0200
|
||||
@@ -9,3 +9,4 @@
|
||||
|
||||
# report
|
||||
EVENT=report_Kerneloops analyzer=Kerneloops abrt-action-kerneloops
|
||||
+EVENT=report_Bugzilla analyzer=Kerneloops abrt-action-bugzilla
|
||||
|
|
@ -1,311 +0,0 @@
|
|||
Signed-off-by: Nikola Pajkovsky <npajkovs@redhat.com>
|
||||
---
|
||||
src/cli/cli.c | 31 ++++++++++-
|
||||
src/cli/report.cpp | 135 ++++++++++++++++++++++++++++++++++++++++-------
|
||||
src/cli/report.h | 4 +-
|
||||
src/plugins/Makefile.am | 4 +-
|
||||
4 files changed, 148 insertions(+), 26 deletions(-)
|
||||
|
||||
diff --git a/src/cli/cli.c b/src/cli/cli.c
|
||||
index 0c895a7..4e0042f 100644
|
||||
--- a/src/cli/cli.c
|
||||
+++ b/src/cli/cli.c
|
||||
@@ -360,6 +360,9 @@ int main(int argc, char** argv)
|
||||
print_usage_and_die(argv[0]);
|
||||
}
|
||||
|
||||
+ /* Get settings */
|
||||
+ load_event_config_data();
|
||||
+
|
||||
/* Do the selected operation. */
|
||||
int exitcode = 0;
|
||||
switch (op)
|
||||
@@ -409,15 +412,37 @@ int main(int argc, char** argv)
|
||||
}
|
||||
case OPT_INFO:
|
||||
{
|
||||
- if (run_analyze_event(dump_dir_name) != 0)
|
||||
- return 1;
|
||||
-
|
||||
/* Load crash_data from (possibly updated by analyze) dump dir */
|
||||
struct dump_dir *dd = dd_opendir(dump_dir_name, /*flags:*/ 0);
|
||||
if (!dd)
|
||||
return -1;
|
||||
+
|
||||
+ char *analyze_events_as_lines = list_possible_events(dd, NULL, "analyze");
|
||||
+ dd_close(dd);
|
||||
+
|
||||
+ if (analyze_events_as_lines && *analyze_events_as_lines)
|
||||
+ {
|
||||
+ GList *list_analyze_events = str_to_glist(analyze_events_as_lines, '\n');
|
||||
+ free(analyze_events_as_lines);
|
||||
+
|
||||
+ char *event = select_event_option(list_analyze_events);
|
||||
+ list_free_with_free(list_analyze_events);
|
||||
+
|
||||
+ int analyzer_result = run_analyze_event(dump_dir_name, event);
|
||||
+ free(event);
|
||||
+
|
||||
+ if (analyzer_result != 0)
|
||||
+ return 1;
|
||||
+ }
|
||||
+
|
||||
+ /* Load crash_data from (possibly updated by analyze) dump dir */
|
||||
+ dd = dd_opendir(dump_dir_name, /*flags:*/ 0);
|
||||
+ if (!dd)
|
||||
+ return -1;
|
||||
+
|
||||
crash_data_t *crash_data = create_crash_data_from_dump_dir(dd);
|
||||
dd_close(dd);
|
||||
+
|
||||
add_to_crash_data_ext(crash_data, CD_DUMPDIR, dump_dir_name,
|
||||
CD_FLAG_TXT + CD_FLAG_ISNOTEDITABLE);
|
||||
|
||||
diff --git a/src/cli/report.cpp b/src/cli/report.cpp
|
||||
index da37bea..7181fe3 100644
|
||||
--- a/src/cli/report.cpp
|
||||
+++ b/src/cli/report.cpp
|
||||
@@ -15,9 +15,9 @@
|
||||
with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*/
|
||||
-#include "report.h"
|
||||
-#include "run-command.h"
|
||||
#include "abrtlib.h"
|
||||
+#include "run-command.h"
|
||||
+#include "report.h"
|
||||
|
||||
/* Field separator for the crash report file that is edited by user. */
|
||||
#define FIELD_SEP "%----"
|
||||
@@ -553,7 +553,8 @@ static int run_events(const char *dump_dir_name,
|
||||
int r = run_event_on_dir_name(run_state, dump_dir_name, event.c_str());
|
||||
if (r == 0 && run_state->children_count == 0)
|
||||
{
|
||||
- l_state.last_line = xasprintf("Error: no processing is specified for event '%s'", event.c_str());
|
||||
+ l_state.last_line = xasprintf("Error: no processing is specified for event '%s'",
|
||||
+ event.c_str());
|
||||
r = -1;
|
||||
}
|
||||
if (r == 0)
|
||||
@@ -585,31 +586,128 @@ static char *do_log(char *log_line, void *param)
|
||||
log("%s", log_line);
|
||||
return log_line;
|
||||
}
|
||||
-int run_analyze_event(const char *dump_dir_name)
|
||||
+
|
||||
+int run_analyze_event(const char *dump_dir_name, const char *analyzer)
|
||||
{
|
||||
VERB2 log("run_analyze_event('%s')", dump_dir_name);
|
||||
|
||||
struct run_event_state *run_state = new_run_event_state();
|
||||
run_state->logging_callback = do_log;
|
||||
- int res = run_event_on_dir_name(run_state, dump_dir_name, "analyze_LocalGDB");
|
||||
+ int res = run_event_on_dir_name(run_state, dump_dir_name, analyzer);
|
||||
free_run_event_state(run_state);
|
||||
return res;
|
||||
}
|
||||
|
||||
+/* show even description? */
|
||||
+char *select_event_option(GList *list_options)
|
||||
+{
|
||||
+ if (!list_options)
|
||||
+ return NULL;
|
||||
+
|
||||
+ unsigned count = g_list_length(list_options) - 1;
|
||||
+ if (!count)
|
||||
+ return NULL;
|
||||
+
|
||||
+ int pos = -1;
|
||||
+ fprintf(stdout, _("Select how you would like to analyze the problem:\n"));
|
||||
+ for (GList *li = list_options; li; li = li->next)
|
||||
+ {
|
||||
+ char *opt = (char*)li->data;
|
||||
+ event_config_t *config = get_event_config(opt);
|
||||
+ if (config)
|
||||
+ {
|
||||
+ ++pos;
|
||||
+ printf(" %i) %s\n", pos, config->screen_name);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ unsigned picked;
|
||||
+ unsigned ii;
|
||||
+ for (ii = 0; ii < 3; ++ii)
|
||||
+ {
|
||||
+ fprintf(stdout, _("Choose option [0 - %u]: "), count);
|
||||
+ fflush(NULL);
|
||||
+
|
||||
+ char answer[16];
|
||||
+ if (!fgets(answer, sizeof(answer), stdin))
|
||||
+ continue;
|
||||
+
|
||||
+ answer[strlen(answer) - 1] = '\0';
|
||||
+ if (!*answer)
|
||||
+ continue;
|
||||
+
|
||||
+ picked = xatou(answer);
|
||||
+ if (picked > count)
|
||||
+ {
|
||||
+ fprintf(stdout, _("You have chosen number out of range"));
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ if (ii == 3)
|
||||
+ error_msg_and_die(_("Invalid input, program exiting..."));
|
||||
+
|
||||
+ GList *choosen = g_list_nth(list_options, picked);
|
||||
+ return xstrdup((char*)choosen->data);
|
||||
+}
|
||||
+
|
||||
+GList *str_to_glist(char *str, int delim)
|
||||
+{
|
||||
+ GList *list = NULL;
|
||||
+ while (*str)
|
||||
+ {
|
||||
+ char *end = strchrnul(str, delim);
|
||||
+ char *tmp = xstrndup(str, end - str);
|
||||
+ if (*tmp)
|
||||
+ list = g_list_append(list, tmp);
|
||||
+
|
||||
+ str = end;
|
||||
+ if (!*str)
|
||||
+ break;
|
||||
+ str++;
|
||||
+ }
|
||||
+
|
||||
+ if (!list && !g_list_length(list))
|
||||
+ return NULL;
|
||||
+
|
||||
+ return list;
|
||||
+}
|
||||
|
||||
/* Report the crash */
|
||||
int report(const char *dump_dir_name, int flags)
|
||||
{
|
||||
- if (run_analyze_event(dump_dir_name) != 0)
|
||||
- return 1;
|
||||
-
|
||||
/* Load crash_data from (possibly updated by analyze) dump dir */
|
||||
struct dump_dir *dd = dd_opendir(dump_dir_name, /*flags:*/ 0);
|
||||
if (!dd)
|
||||
return -1;
|
||||
|
||||
+ char *analyze_events_as_lines = list_possible_events(dd, NULL, "analyze");
|
||||
+ dd_close(dd);
|
||||
+
|
||||
+ if (analyze_events_as_lines && *analyze_events_as_lines)
|
||||
+ {
|
||||
+ GList *list_analyze_events = str_to_glist(analyze_events_as_lines, '\n');
|
||||
+ free(analyze_events_as_lines);
|
||||
+
|
||||
+ char *event = select_event_option(list_analyze_events);
|
||||
+ list_free_with_free(list_analyze_events);
|
||||
+
|
||||
+ int analyzer_result = run_analyze_event(dump_dir_name, event);
|
||||
+ free(event);
|
||||
+
|
||||
+ if (analyzer_result != 0)
|
||||
+ return 1;
|
||||
+ }
|
||||
+
|
||||
+ /* Load crash_data from (possibly updated by analyze) dump dir */
|
||||
+ dd = dd_opendir(dump_dir_name, /*flags:*/ 0);
|
||||
+ if (!dd)
|
||||
+ return -1;
|
||||
+
|
||||
+ char *report_events_as_lines = list_possible_events(dd, NULL, "report");
|
||||
crash_data_t *crash_data = create_crash_data_from_dump_dir(dd);
|
||||
- char *events_as_lines = list_possible_events(dd, NULL, "");
|
||||
dd_close(dd);
|
||||
|
||||
if (!(flags & CLI_REPORT_BATCH))
|
||||
@@ -620,7 +718,7 @@ int report(const char *dump_dir_name, int flags)
|
||||
if (result != 0)
|
||||
{
|
||||
free_crash_data(crash_data);
|
||||
- free(events_as_lines);
|
||||
+ free(report_events_as_lines);
|
||||
return 1;
|
||||
}
|
||||
/* Save comment, backtrace */
|
||||
@@ -639,26 +737,24 @@ int report(const char *dump_dir_name, int flags)
|
||||
}
|
||||
|
||||
/* Get possible reporters associated with this particular crash */
|
||||
+ /* TODO: npajkovs: remove this annoying c++ vector_string_t */
|
||||
vector_string_t report_events;
|
||||
- if (events_as_lines)
|
||||
+ if (report_events_as_lines && *report_events_as_lines)
|
||||
{
|
||||
- char *events = events_as_lines;
|
||||
+ char *events = report_events_as_lines;
|
||||
while (*events)
|
||||
{
|
||||
char *end = strchrnul(events, '\n');
|
||||
- if (strncmp(events, "report", 6) == 0
|
||||
- && (events[6] == '\0' || events[6] == '_')
|
||||
- ) {
|
||||
- char *tmp = xstrndup(events, end - events);
|
||||
- report_events.push_back(tmp);
|
||||
- free(tmp);
|
||||
- }
|
||||
+ char *tmp = xstrndup(events, end - events);
|
||||
+ report_events.push_back(tmp);
|
||||
+ free(tmp);
|
||||
events = end;
|
||||
if (!*events)
|
||||
break;
|
||||
events++;
|
||||
}
|
||||
}
|
||||
+ free(report_events_as_lines);
|
||||
|
||||
/* Get settings */
|
||||
load_event_config_data();
|
||||
@@ -723,6 +819,5 @@ int report(const char *dump_dir_name, int flags)
|
||||
|
||||
printf(_("Crash reported via %d report events (%d errors)\n"), plugins, errors);
|
||||
free_crash_data(crash_data);
|
||||
- free(events_as_lines);
|
||||
return errors;
|
||||
}
|
||||
diff --git a/src/cli/report.h b/src/cli/report.h
|
||||
index 58b8c25..a393784 100644
|
||||
--- a/src/cli/report.h
|
||||
+++ b/src/cli/report.h
|
||||
@@ -22,7 +22,9 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
-int run_analyze_event(const char *dump_dir_name);
|
||||
+int run_analyze_event(const char *dump_dir_name, const char *analyzer);
|
||||
+char *select_event_option(GList *list_options);
|
||||
+GList *str_to_glist(char *str, int delim);
|
||||
|
||||
/* Report the crash */
|
||||
enum {
|
||||
diff --git a/src/plugins/Makefile.am b/src/plugins/Makefile.am
|
||||
index 5344cdb..7468188 100644
|
||||
--- a/src/plugins/Makefile.am
|
||||
+++ b/src/plugins/Makefile.am
|
||||
@@ -65,8 +65,8 @@ $(DESTDIR)/$(DEBUG_INFO_DIR):
|
||||
$(mkdir_p) '$@'
|
||||
|
||||
install-data-hook: $(DESTDIR)/$(DEBUG_INFO_DIR)
|
||||
- $(LN_S) analyze_RetraceServer.xml $(DESTDIR)$(eventsdir)/reanalyze_RetraceServer.xml
|
||||
- $(LN_S) analyze_LocalGDB.xml $(DESTDIR)$(eventsdir)/reanalyze_LocalGDB.xml
|
||||
+ $(LN_S) -f analyze_RetraceServer.xml $(DESTDIR)$(eventsdir)/reanalyze_RetraceServer.xml
|
||||
+ $(LN_S) -f analyze_LocalGDB.xml $(DESTDIR)$(eventsdir)/reanalyze_LocalGDB.xml
|
||||
|
||||
abrt_dump_oops_SOURCES = \
|
||||
abrt-dump-oops.c
|
||||
--
|
||||
1.7.1
|
||||
|
||||
_______________________________________________
|
||||
Crash-catcher mailing list
|
||||
Crash-catcher@lists.fedorahosted.org
|
||||
https://fedorahosted.org/mailman/listinfo/crash-catcher
|
||||
|
|
@ -1,25 +0,0 @@
|
|||
commit 82ab98c161e01de5a41902ea1961016b4d4bccca
|
||||
Author: Jiri Moskovcak <jmoskovc@redhat.com>
|
||||
Date: Sun Mar 27 18:43:33 2011 +0200
|
||||
|
||||
gui-wizard-gtk: don't allow user to continue if analyzer fails
|
||||
|
||||
diff --git a/src/gui-wizard-gtk/wizard.c b/src/gui-wizard-gtk/wizard.c
|
||||
index 31c7bb2..33a6911 100644
|
||||
--- a/src/gui-wizard-gtk/wizard.c
|
||||
+++ b/src/gui-wizard-gtk/wizard.c
|
||||
@@ -780,8 +780,12 @@ static gboolean consume_cmd_output(GIOChannel *source, GIOCondition condition, g
|
||||
char *msg = xasprintf(evd->end_msg, retval);
|
||||
gtk_label_set_text(evd->status_label, msg);
|
||||
free(msg);
|
||||
- /* Unfreeze assistant */
|
||||
- gtk_assistant_set_page_complete(g_assistant, evd->page_widget, true);
|
||||
+ /* Unfreeze assistant
|
||||
+ * we can't allow user to continue if analyze action fails
|
||||
+ * i.e: if gdb fails to generate backtrace
|
||||
+ */
|
||||
+ if (retval == 0 || (strncmp(evd->event_name, "analyze", strlen("analyze")) != 0))
|
||||
+ gtk_assistant_set_page_complete(g_assistant, evd->page_widget, true);
|
||||
|
||||
/*g_source_remove(evd->event_source_id);*/
|
||||
close(evd->fd);
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
commit aa08665949da429660dd78a6d26a0fc3cb11d6cd
|
||||
Author: Jiri Moskovcak <jmoskovc@redhat.com>
|
||||
Date: Tue Mar 29 18:10:17 2011 +0200
|
||||
|
||||
gui: fixed the prgname trac#180
|
||||
|
||||
diff --git a/src/gui-gtk/main.c b/src/gui-gtk/main.c
|
||||
index 4602012..b3f6bdc 100644
|
||||
--- a/src/gui-gtk/main.c
|
||||
+++ b/src/gui-gtk/main.c
|
||||
@@ -147,6 +147,11 @@ int main(int argc, char **argv)
|
||||
textdomain(PACKAGE);
|
||||
#endif
|
||||
|
||||
+ /* without this the name is set to argv[0] which confuses
|
||||
+ * desktops which uses the name to find the corresponding .desktop file
|
||||
+ * trac#180
|
||||
+ */
|
||||
+ g_set_prgname("abrt");
|
||||
gtk_init(&argc, &argv);
|
||||
|
||||
char *env_verbose = getenv("ABRT_VERBOSE");
|
||||
diff --git a/src/gui-wizard-gtk/main.c b/src/gui-wizard-gtk/main.c
|
||||
index 1cb9e26..2914b30 100644
|
||||
--- a/src/gui-wizard-gtk/main.c
|
||||
+++ b/src/gui-wizard-gtk/main.c
|
||||
@@ -69,6 +69,7 @@ int main(int argc, char **argv)
|
||||
textdomain(PACKAGE);
|
||||
#endif
|
||||
|
||||
+ g_set_prgname("abrt");
|
||||
gtk_init(&argc, &argv);
|
||||
|
||||
char *env_verbose = getenv("ABRT_VERBOSE");
|
||||
|
|
@ -1,37 +0,0 @@
|
|||
commit 42ab4016ea8901108a22233a1b4a44a995e9a194
|
||||
Author: Nikola Pajkovsky <npajkovs@redhat.com>
|
||||
Date: Mon Mar 28 14:01:53 2011 +0200
|
||||
|
||||
Ticket #160 Hash is not present in Bugzilla
|
||||
|
||||
Signed-off-by: Nikola Pajkovsky <npajkovs@redhat.com>
|
||||
|
||||
diff --git a/src/plugins/abrt-action-bugzilla.cpp b/src/plugins/abrt-action-bugzilla.cpp
|
||||
index abc3fa1..e5e5bc8 100644
|
||||
--- a/src/plugins/abrt-action-bugzilla.cpp
|
||||
+++ b/src/plugins/abrt-action-bugzilla.cpp
|
||||
@@ -299,7 +299,8 @@ void ctx::get_bug_cc(xmlrpc_value* result_xml, struct bug_info* bz)
|
||||
return;
|
||||
}
|
||||
|
||||
-xmlrpc_value* ctx::call_quicksearch_duphash(const char* component, const char* release, const char* duphash)
|
||||
+xmlrpc_value* ctx::call_quicksearch_duphash(const char* component,
|
||||
+ const char* release, const char* duphash)
|
||||
{
|
||||
char *query = NULL;
|
||||
if (!release)
|
||||
@@ -657,6 +658,14 @@ static void report_to_bugzilla(
|
||||
|
||||
const char *component = get_crash_item_content_or_NULL(crash_data, FILENAME_COMPONENT);
|
||||
const char *duphash = get_crash_item_content_or_NULL(crash_data, FILENAME_DUPHASH);
|
||||
+ if (!duphash)
|
||||
+ error_msg_and_die(_("Essential file '%s' is missing, can't continue.."),
|
||||
+ FILENAME_DUPHASH);
|
||||
+
|
||||
+ if (!*duphash)
|
||||
+ error_msg_and_die(_("Essential file '%s' is empty, can't continue.."),
|
||||
+ FILENAME_DUPHASH);
|
||||
+
|
||||
const char *release = get_crash_item_content_or_NULL(crash_data, FILENAME_OS_RELEASE);
|
||||
if (!release) /* Old dump dir format compat. Remove in abrt-2.1 */
|
||||
release = get_crash_item_content_or_NULL(crash_data, "release");
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
commit 466f32513e67bf937d42321d1b979c5a477905b6
|
||||
Author: Jiri Moskovcak <jmoskovc@redhat.com>
|
||||
Date: Mon Mar 28 17:26:00 2011 +0200
|
||||
|
||||
applet: fixed the notification program name
|
||||
|
||||
diff --git a/src/applet/applet_gtk.c b/src/applet/applet_gtk.c
|
||||
index 0ba9499..8071ec1 100644
|
||||
--- a/src/applet/applet_gtk.c
|
||||
+++ b/src/applet/applet_gtk.c
|
||||
@@ -355,7 +355,7 @@ struct applet *applet_new(const char* app_name)
|
||||
applet->ap_menu = create_menu(applet);
|
||||
}
|
||||
|
||||
- notify_init(app_name);
|
||||
+ notify_init("abrt");
|
||||
return applet;
|
||||
}
|
||||
|
||||
|
|
@ -1,153 +0,0 @@
|
|||
commit 78304637542f455b4a00ab32c418b00d2ee17781
|
||||
Author: Jiri Moskovcak <jmoskovc@redhat.com>
|
||||
Date: Mon Mar 28 15:23:01 2011 +0200
|
||||
|
||||
applet: really fixed: don't show status icon when server support persistence trac#127
|
||||
|
||||
diff --git a/src/applet/applet_gtk.c b/src/applet/applet_gtk.c
|
||||
index 78719ef..0ba9499 100644
|
||||
--- a/src/applet/applet_gtk.c
|
||||
+++ b/src/applet/applet_gtk.c
|
||||
@@ -21,26 +21,26 @@
|
||||
|
||||
static gboolean persistent_notification;
|
||||
|
||||
-#if !defined(NOTIFY_VERSION_MINOR) || (NOTIFY_VERSION_MAJOR == 0 && NOTIFY_VERSION_MINOR < 7)
|
||||
+#if defined(NOTIFY_VERSION_MINOR) && (NOTIFY_VERSION_MAJOR == 0 && NOTIFY_VERSION_MINOR >= 6)
|
||||
static gboolean server_has_persistence (void)
|
||||
{
|
||||
- gboolean has;
|
||||
- GList *caps;
|
||||
- GList *l;
|
||||
-
|
||||
- caps = notify_get_server_caps ();
|
||||
- if (caps == NULL) {
|
||||
- fprintf (stderr, "Failed to receive server caps.\n");
|
||||
- return FALSE;
|
||||
- }
|
||||
-
|
||||
- l = g_list_find_custom (caps, "persistence", (GCompareFunc)strcmp);
|
||||
- has = l != NULL;
|
||||
+ gboolean has;
|
||||
+ GList *caps;
|
||||
+ GList *l;
|
||||
+
|
||||
+ caps = notify_get_server_caps ();
|
||||
+ if (caps == NULL) {
|
||||
+ fprintf (stderr, "Failed to receive server caps.\n");
|
||||
+ return FALSE;
|
||||
+ }
|
||||
|
||||
- g_list_foreach (caps, (GFunc) g_free, NULL);
|
||||
- g_list_free (caps);
|
||||
+ l = g_list_find_custom (caps, "persistence", (GCompareFunc)strcmp);
|
||||
+ has = l != NULL;
|
||||
|
||||
- return has;
|
||||
+ g_list_foreach (caps, (GFunc) g_free, NULL);
|
||||
+ g_list_free (caps);
|
||||
+ VERB1 log("notify server %s support pesistence\n", has ? "DOES" : "DOESN'T");
|
||||
+ return has;
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -328,7 +328,7 @@ struct applet *applet_new(const char* app_name)
|
||||
{
|
||||
struct applet *applet = (struct applet*)xzalloc(sizeof(struct applet));
|
||||
applet->ap_daemon_running = true;
|
||||
-#if !defined(NOTIFY_VERSION_MINOR) || (NOTIFY_VERSION_MAJOR == 0 && NOTIFY_VERSION_MINOR < 7)
|
||||
+#if defined(NOTIFY_VERSION_MINOR) && (NOTIFY_VERSION_MAJOR == 0 && NOTIFY_VERSION_MINOR >= 6)
|
||||
persistent_notification = server_has_persistence();
|
||||
#endif
|
||||
|
||||
@@ -398,11 +398,11 @@ void show_crash_notification(struct applet *applet, const char* crash_dir, const
|
||||
notify_notification_add_action(notification, "REPORT", _("Report"),
|
||||
NOTIFY_ACTION_CALLBACK(action_report),
|
||||
applet, NULL);
|
||||
- notify_notification_add_action(notification, "OPEN_MAIN_WINDOW", _("Open ABRT"),
|
||||
+ notify_notification_add_action(notification, "default", _("Show"),
|
||||
NOTIFY_ACTION_CALLBACK(action_open_gui),
|
||||
applet, NULL);
|
||||
|
||||
- notify_notification_update(notification, _("Warning"), buf, NULL);
|
||||
+ notify_notification_update(notification, _("A Problem has Occurred"), buf, NULL);
|
||||
free(buf);
|
||||
GError *err = NULL;
|
||||
notify_notification_show(notification, &err);
|
||||
@@ -429,7 +429,7 @@ void show_msg_notification(struct applet *applet, const char *format, ...)
|
||||
notify_notification_add_action(notification, "OPEN_MAIN_WINDOW", _("Open ABRT"),
|
||||
NOTIFY_ACTION_CALLBACK(action_open_gui),
|
||||
applet, NULL);
|
||||
- notify_notification_update(notification, _("Warning"), buf, NULL);
|
||||
+ notify_notification_update(notification, _("A Problem has Occurred"), buf, NULL);
|
||||
free(buf);
|
||||
GError *err = NULL;
|
||||
notify_notification_show(notification, &err);
|
||||
commit 74eefaaaf84fbb3504881c337e9ee84c5aa4d14c
|
||||
Author: Jiri Moskovcak <jmoskovc@redhat.com>
|
||||
Date: Wed Mar 30 16:01:17 2011 +0200
|
||||
|
||||
applet: postpone the applet initialization as much as possible related#trac#127
|
||||
|
||||
- seems like server_has_persistence() returns false when it's called
|
||||
at the time of applet start, my guess is that the notifyd service setup
|
||||
is not finished at this time, so I moved applet init to the time of
|
||||
the first crash, where all the desktop/notifyd thing should be ready
|
||||
|
||||
diff --git a/src/applet/applet.c b/src/applet/applet.c
|
||||
index a49725b..eee3d10 100644
|
||||
--- a/src/applet/applet.c
|
||||
+++ b/src/applet/applet.c
|
||||
@@ -26,9 +26,16 @@
|
||||
#include "abrt_dbus.h"
|
||||
#include "applet_gtk.h"
|
||||
|
||||
-
|
||||
+//This variable is not used anywhere, remove or change to "abrt" and use it
|
||||
+const char * app_name = "abrt-gui";
|
||||
static struct applet* applet = NULL;
|
||||
|
||||
+/* Initialize GUI stuff. */
|
||||
+static void init_applet()
|
||||
+{
|
||||
+ if (applet == NULL)
|
||||
+ applet = applet_new(app_name);
|
||||
+}
|
||||
|
||||
static void Crash(DBusMessage* signal)
|
||||
{
|
||||
@@ -76,6 +83,7 @@ static void Crash(DBusMessage* signal)
|
||||
const char* message = _("A crash in the %s package has been detected");
|
||||
if (package_name[0] == '\0')
|
||||
message = _("A crash has been detected");
|
||||
+ init_applet();
|
||||
//applet->AddEvent(uid, package_name);
|
||||
set_icon_tooltip(applet, message, package_name);
|
||||
show_icon(applet);
|
||||
@@ -118,6 +126,7 @@ static void QuotaExceeded(DBusMessage* signal)
|
||||
|
||||
//if (m_pSessionDBus->has_name("com.redhat.abrt.gui"))
|
||||
// return;
|
||||
+ init_applet();
|
||||
show_icon(applet);
|
||||
show_msg_notification(applet, "%s", str);
|
||||
}
|
||||
@@ -198,7 +207,6 @@ static void die_if_dbus_error(bool error_flag, DBusError* err, const char* msg)
|
||||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
- const char * app_name = "abrt-gui";
|
||||
/* I18n */
|
||||
setlocale(LC_ALL, "");
|
||||
#if ENABLE_NLS
|
||||
@@ -255,10 +263,6 @@ int main(int argc, char** argv)
|
||||
dbus_bus_add_match(system_conn, "type='signal',path='/com/redhat/abrt'", &err);
|
||||
die_if_dbus_error(false, &err, "Can't add dbus match");
|
||||
|
||||
- /* Initialize GUI stuff.
|
||||
- * Note: inside CApplet ctor, libnotify hooks session dbus
|
||||
- * to glib main loop */
|
||||
- applet = applet_new(app_name);
|
||||
/* dbus_abrt cannot handle more than one bus, and we don't really need to.
|
||||
* The only thing we want to do is to announce ourself on session dbus */
|
||||
DBusConnection* session_conn = dbus_bus_get(DBUS_BUS_SESSION, &err);
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
diff --git a/src/gui-wizard-gtk/wizard.c b/src/gui-wizard-gtk/wizard.c
|
||||
index 31c7bb2..e08dc4e 100644
|
||||
--- a/src/gui-wizard-gtk/wizard.c
|
||||
+++ b/src/gui-wizard-gtk/wizard.c
|
||||
@@ -1268,6 +1268,17 @@ static void add_pages(void)
|
||||
config_btn = GTK_WIDGET(gtk_builder_get_object(builder, "button_cfg2"));
|
||||
if (config_btn)
|
||||
g_signal_connect(G_OBJECT(config_btn), "clicked", G_CALLBACK(on_show_event_list_cb), NULL);
|
||||
+
|
||||
+ //hack to warn user about settings - will be removed before F15 GOLD
|
||||
+ GtkWidget *settings_warning_eb = gtk_event_box_new();
|
||||
+ GtkWidget *settings_warning_lbl = gtk_label_new(_("Please make sure you configured the reporters."));
|
||||
+ gtk_container_add(GTK_CONTAINER(settings_warning_eb), settings_warning_lbl);
|
||||
+ gtk_box_pack_start(GTK_BOX(pages[PAGENO_REPORTER_SELECTOR].page_widget), settings_warning_eb, false, false, 0);
|
||||
+ GdkColor bg_color;
|
||||
+ gdk_color_parse("red", &bg_color);
|
||||
+ gtk_widget_modify_bg(settings_warning_eb, GTK_STATE_NORMAL, &bg_color);
|
||||
+ gtk_widget_show_all(settings_warning_eb);
|
||||
+
|
||||
}
|
||||
|
||||
void create_assistant()
|
||||
2
sources
2
sources
|
|
@ -1 +1 @@
|
|||
c4b486d64d0d908f56785e51be756ebc abrt-2.0.0.tar.gz
|
||||
ead5853a19b070f548a887755fb015f1 abrt-2.0.1.tar.gz
|
||||
|
|
|
|||
|
|
@ -1,328 +0,0 @@
|
|||
--- /dev/null
|
||||
+++ b/src/plugins/abrt-action-analyzecore.py
|
||||
@@ -0,0 +1,184 @@
|
||||
+#! /usr/bin/python -u
|
||||
+# -*- coding: utf-8 -*-
|
||||
+
|
||||
+# WARNING: python -u means unbuffered I/O without it the messages are
|
||||
+# passed to the parent asynchronously which looks bad in clients..
|
||||
+from subprocess import Popen, PIPE
|
||||
+import sys
|
||||
+import os
|
||||
+import getopt
|
||||
+
|
||||
+# everything was ok
|
||||
+RETURN_OK = 0
|
||||
+# serious problem, should be logged somewhere
|
||||
+RETURN_FAILURE = 2
|
||||
+
|
||||
+
|
||||
+GETTEXT_PROGNAME = "abrt"
|
||||
+import locale
|
||||
+import gettext
|
||||
+
|
||||
+_ = lambda x: gettext.lgettext(x)
|
||||
+
|
||||
+def init_gettext():
|
||||
+ try:
|
||||
+ locale.setlocale(locale.LC_ALL, "")
|
||||
+ except locale.Error:
|
||||
+ os.environ['LC_ALL'] = 'C'
|
||||
+ locale.setlocale(locale.LC_ALL, "")
|
||||
+ gettext.bind_textdomain_codeset(GETTEXT_PROGNAME, locale.nl_langinfo(locale.CODESET))
|
||||
+ gettext.bindtextdomain(GETTEXT_PROGNAME, '/usr/share/locale')
|
||||
+ gettext.textdomain(GETTEXT_PROGNAME)
|
||||
+
|
||||
+
|
||||
+old_stdout = -1
|
||||
+def mute_stdout():
|
||||
+ if verbose < 2:
|
||||
+ global old_stdout
|
||||
+ old_stdout = sys.stdout
|
||||
+ sys.stdout = open("/dev/null", "w")
|
||||
+
|
||||
+def unmute_stdout():
|
||||
+ if verbose < 2:
|
||||
+ if old_stdout != -1:
|
||||
+ sys.stdout = old_stdout
|
||||
+ else:
|
||||
+ print "ERR: unmute called without mute?"
|
||||
+
|
||||
+verbose = 0
|
||||
+def log1(message):
|
||||
+ """ prints log message if verbosity > 0 """
|
||||
+ if verbose > 0:
|
||||
+ print "LOG1:", message
|
||||
+
|
||||
+def log2(message):
|
||||
+ """ prints log message if verbosity > 1 """
|
||||
+ if verbose > 1:
|
||||
+ print "LOG2:", message
|
||||
+
|
||||
+#eu_unstrip_OUT=`eu-unstrip "--core=$core" -n 2>eu_unstrip.ERR`
|
||||
+def extract_info_from_core(coredump_name):
|
||||
+ """
|
||||
+ Extracts builds with filenames,
|
||||
+ Returns a list of tuples (build_id, filename)
|
||||
+ """
|
||||
+ #OFFSET = 0
|
||||
+ BUILD_ID = 1
|
||||
+ LIBRARY = 2
|
||||
+ #SEP = 3
|
||||
+ EXECUTABLE = 4
|
||||
+
|
||||
+ print _("Analyzing coredump '%s'") % coredump_name
|
||||
+ eu_unstrip_OUT = Popen(["eu-unstrip","--core=%s" % coredump_name, "-n"], stdout=PIPE, bufsize=-1).communicate()[0]
|
||||
+ # parse eu_unstrip_OUT and return the list of build_ids
|
||||
+
|
||||
+ # eu_unstrip_OUT = ("0x7f42362ca000+0x204000 c4d35d993598a6242f7525d024b5ec3becf5b447@0x7f42362ca1a0 /usr/lib64/libcanberra-gtk.so.0 - libcanberra-gtk.so.0\n"
|
||||
+ # "0x3afa400000+0x210000 607308f916c13c3ad9ee503008d31fa671ba73ce@0x3afa4001a0 /usr/lib64/libcanberra.so.0 - libcanberra.so.0\n"
|
||||
+ # "0x3afa400000+0x210000 607308f916c13c3ad9ee503008d31fa671ba73ce@0x3afa4001a0 /usr/lib64/libcanberra.so.0 - libcanberra.so.0\n"
|
||||
+ # "0x3bc7000000+0x208000 3be016bb723e85779a23e111a8ab1a520b209422@0x3bc70001a0 /usr/lib64/libvorbisfile.so.3 - libvorbisfile.so.3\n"
|
||||
+ # "0x7f423609e000+0x22c000 87f9c7d9844f364c73aa2566d6cfc9c5fa36d35d@0x7f423609e1a0 /usr/lib64/libvorbis.so.0 - libvorbis.so.0\n"
|
||||
+ # "0x7f4235e99000+0x205000 b5bc98c125a11b571cf4f2746268a6d3cfa95b68@0x7f4235e991a0 /usr/lib64/libogg.so.0 - libogg.so.0\n"
|
||||
+ # "0x7f4235c8b000+0x20e000 f1ff6c8ee30dba27e90ef0c5b013df2833da2889@0x7f4235c8b1a0 /usr/lib64/libtdb.so.1 - libtdb.so.1\n"
|
||||
+ # "0x3bc3000000+0x209000 8ef56f789fd914e8d0678eb0cdfda1bfebb00b40@0x3bc30001a0 /usr/lib64/libltdl.so.7 - libltdl.so.7\n"
|
||||
+ # "0x7f4231b64000+0x22b000 3ca5b83798349f78b362b1ea51c8a4bc8114b8b1@0x7f4231b641a0 /usr/lib64/gio/modules/libgvfsdbus.so - libgvfsdbus.so\n"
|
||||
+ # "0x7f423192a000+0x218000 ad024a01ad132737a8cfc7c95beb7c77733a652d@0x7f423192a1a0 /usr/lib64/libgvfscommon.so.0 - libgvfscommon.so.0\n"
|
||||
+ # "0x7f423192a000+0x218000 ad024a01ad132737a8cfc7c95beb7c77733a652d@0x7f423192a1a0 /usr/lib64/libgvfscommon.so.0 - libgvfscommon.so.0\n"
|
||||
+ # "0x3bb8e00000+0x20e000 d240ac5755184a95c783bb98a2d05530e0cf958a@0x3bb8e001a0 /lib64/libudev.so.0 - libudev.so.0")
|
||||
+ #
|
||||
+ #print eu_unstrip_OUT
|
||||
+ # we failed to get build ids from the core -> die
|
||||
+ if not eu_unstrip_OUT:
|
||||
+ print "Can't get build ids from %s" % coredump_name
|
||||
+ return RETURN_FAILURE
|
||||
+
|
||||
+ lines = eu_unstrip_OUT.split('\n')
|
||||
+ # using set ensures the unique values
|
||||
+ build_ids = set()
|
||||
+ libraries = set()
|
||||
+ build_ids = set()
|
||||
+
|
||||
+ for line in lines:
|
||||
+ b_ids_line = line.split()
|
||||
+ if len(b_ids_line) > 2:
|
||||
+ # [exe] -> the executable itself
|
||||
+ # linux-vdso.so.1 -> Virtual Dynamic Shared Object
|
||||
+ if b_ids_line[EXECUTABLE] not in ["linux-vdso.so.1"]:
|
||||
+ build_id = b_ids_line[BUILD_ID].split('@')[0]
|
||||
+ build_ids.add(build_id)
|
||||
+ library = b_ids_line[LIBRARY]
|
||||
+ libraries.add(library)
|
||||
+ build_ids.add(build_id)
|
||||
+ else:
|
||||
+ log2("skipping line '%s'" % line)
|
||||
+ log1("Found %i build_ids" % len(build_ids))
|
||||
+ log1("Found %i libs" % len(libraries))
|
||||
+ return build_ids
|
||||
+
|
||||
+def build_ids_to_path(build_ids):
|
||||
+ """
|
||||
+ build_id1=${build_id:0:2}
|
||||
+ build_id2=${build_id:2}
|
||||
+ file="usr/lib/debug/.build-id/$build_id1/$build_id2.debug"
|
||||
+ """
|
||||
+ return ["/usr/lib/debug/.build-id/%s/%s.debug" % (b_id[:2], b_id[2:]) for b_id in build_ids]
|
||||
+
|
||||
+def sigterm_handler(signum, frame):
|
||||
+ exit(RETURN_OK)
|
||||
+
|
||||
+def sigint_handler(signum, frame):
|
||||
+ print "\n", _("Exiting on user command")
|
||||
+ exit(RETURN_OK)
|
||||
+
|
||||
+import signal
|
||||
+
|
||||
+if __name__ == "__main__":
|
||||
+ # abrt-server can send SIGTERM to abort the download
|
||||
+ signal.signal(signal.SIGTERM, sigterm_handler)
|
||||
+ # ctrl-c
|
||||
+ signal.signal(signal.SIGINT, sigint_handler)
|
||||
+ core = None
|
||||
+ cachedir = None
|
||||
+ tmpdir = None
|
||||
+ keeprpms = False
|
||||
+ output_file = "build_ids"
|
||||
+
|
||||
+ # localization
|
||||
+ init_gettext()
|
||||
+
|
||||
+ ABRT_VERBOSE = os.getenv("ABRT_VERBOSE")
|
||||
+ if (ABRT_VERBOSE):
|
||||
+ try:
|
||||
+ verbose = int(ABRT_VERBOSE)
|
||||
+ except:
|
||||
+ pass
|
||||
+
|
||||
+ help_text = _("Usage: %s --core=COREFILE ") % sys.argv[0]
|
||||
+ try:
|
||||
+ opts, args = getopt.getopt(sys.argv[1:], "vhc:o:", ["help", "core="])
|
||||
+ except getopt.GetoptError, err:
|
||||
+ print str(err) # prints something like "option -a not recognized"
|
||||
+ sys.exit(RETURN_FAILURE)
|
||||
+
|
||||
+ for opt, arg in opts:
|
||||
+ if opt == "-v":
|
||||
+ verbose += 1
|
||||
+ elif opt == "-o":
|
||||
+ output_file = arg
|
||||
+ elif opt in ("--core", "-c"):
|
||||
+ core = arg
|
||||
+ elif opt in ("-h", "--help"):
|
||||
+ print help_text
|
||||
+ sys.exit()
|
||||
+
|
||||
+ if not core:
|
||||
+ print _("You have to specify the path to coredump.")
|
||||
+ print help_text
|
||||
+ exit(RETURN_FAILURE)
|
||||
+
|
||||
+ b_ids = extract_info_from_core(core)
|
||||
+ if b_ids == RETURN_FAILURE:
|
||||
+ exit(RETURN_FAILURE)
|
||||
+ f_build_ids = open(output_file, "w")
|
||||
+ for bid in b_ids:
|
||||
+ f_build_ids.write("%s\n" % bid)
|
||||
+ f_build_ids.close()
|
||||
diff -urp abrt-2.0.0/src/plugins/abrt-action-install-debuginfo.py abrt-2.0.0_/src/plugins/abrt-action-install-debuginfo.py
|
||||
--- abrt-2.0.0/src/plugins/abrt-action-install-debuginfo.py 2011-03-25 09:51:45.000000000 +0100
|
||||
+++ abrt-2.0.0_/src/plugins/abrt-action-install-debuginfo.py 2011-04-13 21:05:23.104976172 +0200
|
||||
@@ -301,64 +301,6 @@ def log2(message):
|
||||
if verbose > 1:
|
||||
print "LOG2:", message
|
||||
|
||||
-#eu_unstrip_OUT=`eu-unstrip "--core=$core" -n 2>eu_unstrip.ERR`
|
||||
-def extract_info_from_core(coredump_name):
|
||||
- """
|
||||
- Extracts builds with filenames,
|
||||
- Returns a list of tuples (build_id, filename)
|
||||
- """
|
||||
- #OFFSET = 0
|
||||
- BUILD_ID = 1
|
||||
- LIBRARY = 2
|
||||
- #SEP = 3
|
||||
- EXECUTABLE = 4
|
||||
-
|
||||
- print _("Analyzing coredump '%s'") % coredump_name
|
||||
- eu_unstrip_OUT = Popen(["eu-unstrip","--core=%s" % coredump_name, "-n"], stdout=PIPE, bufsize=-1).communicate()[0]
|
||||
- # parse eu_unstrip_OUT and return the list of build_ids
|
||||
-
|
||||
- # eu_unstrip_OUT = ("0x7f42362ca000+0x204000 c4d35d993598a6242f7525d024b5ec3becf5b447@0x7f42362ca1a0 /usr/lib64/libcanberra-gtk.so.0 - libcanberra-gtk.so.0\n"
|
||||
- # "0x3afa400000+0x210000 607308f916c13c3ad9ee503008d31fa671ba73ce@0x3afa4001a0 /usr/lib64/libcanberra.so.0 - libcanberra.so.0\n"
|
||||
- # "0x3afa400000+0x210000 607308f916c13c3ad9ee503008d31fa671ba73ce@0x3afa4001a0 /usr/lib64/libcanberra.so.0 - libcanberra.so.0\n"
|
||||
- # "0x3bc7000000+0x208000 3be016bb723e85779a23e111a8ab1a520b209422@0x3bc70001a0 /usr/lib64/libvorbisfile.so.3 - libvorbisfile.so.3\n"
|
||||
- # "0x7f423609e000+0x22c000 87f9c7d9844f364c73aa2566d6cfc9c5fa36d35d@0x7f423609e1a0 /usr/lib64/libvorbis.so.0 - libvorbis.so.0\n"
|
||||
- # "0x7f4235e99000+0x205000 b5bc98c125a11b571cf4f2746268a6d3cfa95b68@0x7f4235e991a0 /usr/lib64/libogg.so.0 - libogg.so.0\n"
|
||||
- # "0x7f4235c8b000+0x20e000 f1ff6c8ee30dba27e90ef0c5b013df2833da2889@0x7f4235c8b1a0 /usr/lib64/libtdb.so.1 - libtdb.so.1\n"
|
||||
- # "0x3bc3000000+0x209000 8ef56f789fd914e8d0678eb0cdfda1bfebb00b40@0x3bc30001a0 /usr/lib64/libltdl.so.7 - libltdl.so.7\n"
|
||||
- # "0x7f4231b64000+0x22b000 3ca5b83798349f78b362b1ea51c8a4bc8114b8b1@0x7f4231b641a0 /usr/lib64/gio/modules/libgvfsdbus.so - libgvfsdbus.so\n"
|
||||
- # "0x7f423192a000+0x218000 ad024a01ad132737a8cfc7c95beb7c77733a652d@0x7f423192a1a0 /usr/lib64/libgvfscommon.so.0 - libgvfscommon.so.0\n"
|
||||
- # "0x7f423192a000+0x218000 ad024a01ad132737a8cfc7c95beb7c77733a652d@0x7f423192a1a0 /usr/lib64/libgvfscommon.so.0 - libgvfscommon.so.0\n"
|
||||
- # "0x3bb8e00000+0x20e000 d240ac5755184a95c783bb98a2d05530e0cf958a@0x3bb8e001a0 /lib64/libudev.so.0 - libudev.so.0")
|
||||
- #
|
||||
- #print eu_unstrip_OUT
|
||||
- # we failed to get build ids from the core -> die
|
||||
- if not eu_unstrip_OUT:
|
||||
- print "Can't get build ids from %s" % coredump_name
|
||||
- return RETURN_FAILURE
|
||||
-
|
||||
- lines = eu_unstrip_OUT.split('\n')
|
||||
- # using set ensures the unique values
|
||||
- build_ids = set()
|
||||
- libraries = set()
|
||||
- build_ids = set()
|
||||
-
|
||||
- for line in lines:
|
||||
- b_ids_line = line.split()
|
||||
- if len(b_ids_line) > 2:
|
||||
- # [exe] -> the executable itself
|
||||
- # linux-vdso.so.1 -> Virtual Dynamic Shared Object
|
||||
- if b_ids_line[EXECUTABLE] not in ["linux-vdso.so.1"]:
|
||||
- build_id = b_ids_line[BUILD_ID].split('@')[0]
|
||||
- build_ids.add(build_id)
|
||||
- library = b_ids_line[LIBRARY]
|
||||
- libraries.add(library)
|
||||
- build_ids.add(build_id)
|
||||
- else:
|
||||
- log2("skipping line '%s'" % line)
|
||||
- log1("Found %i build_ids" % len(build_ids))
|
||||
- log1("Found %i libs" % len(libraries))
|
||||
- return build_ids
|
||||
-
|
||||
def build_ids_to_path(build_ids):
|
||||
"""
|
||||
build_id1=${build_id:0:2}
|
||||
@@ -409,11 +351,12 @@ if __name__ == "__main__":
|
||||
signal.signal(signal.SIGTERM, sigterm_handler)
|
||||
# ctrl-c
|
||||
signal.signal(signal.SIGINT, sigint_handler)
|
||||
- core = None
|
||||
+ core = "build_ids"
|
||||
cachedir = None
|
||||
tmpdir = None
|
||||
keeprpms = False
|
||||
noninteractive = False
|
||||
+ b_ids = []
|
||||
|
||||
# localization
|
||||
init_gettext()
|
||||
@@ -441,7 +384,7 @@ if __name__ == "__main__":
|
||||
verbose += 1
|
||||
elif opt == "-y":
|
||||
noninteractive = True
|
||||
- elif opt in ("--core", "-c"):
|
||||
+ elif opt in ("-i"):
|
||||
core = arg
|
||||
elif opt in ("--cache"):
|
||||
cachedir = arg
|
||||
@@ -464,8 +407,11 @@ if __name__ == "__main__":
|
||||
# for now, we use /tmp...
|
||||
tmpdir = "/tmp/abrt-tmp-debuginfo-%s.%u" % (time.strftime("%Y-%m-%d-%H:%M:%S"), os.getpid())
|
||||
|
||||
- b_ids = extract_info_from_core(core)
|
||||
- if b_ids == RETURN_FAILURE:
|
||||
+ fin = open(core)
|
||||
+ for line in fin.readlines():
|
||||
+ b_ids.append(line.strip('\n'))
|
||||
+
|
||||
+ if not b_ids:
|
||||
exit(RETURN_FAILURE)
|
||||
|
||||
missing = filter_installed_debuginfos(b_ids, cachedir)
|
||||
diff -urp abrt-2.0.0/src/plugins/ccpp_events.conf abrt-2.0.0_/src/plugins/ccpp_events.conf
|
||||
--- abrt-2.0.0/src/plugins/ccpp_events.conf 2011-03-26 15:21:15.000000000 +0100
|
||||
+++ abrt-2.0.0_/src/plugins/ccpp_events.conf 2011-04-13 21:05:23.105976172 +0200
|
||||
@@ -5,7 +5,7 @@ EVENT=post-create analyzer=CCpp
|
||||
EVENT=analyze_LocalGDB analyzer=CCpp backtrace= abrt-action-trim-files -f 4096m:/var/cache/abrt-di
|
||||
# TODO: can we still specify additional directories to search for debuginfos,
|
||||
# or was this ability lost with move to python installer?
|
||||
-EVENT=analyze_LocalGDB analyzer=CCpp backtrace= abrt-action-install-debuginfo --core="$DUMP_DIR/coredump"
|
||||
+EVENT=analyze_LocalGDB analyzer=CCpp backtrace= abrt-action-analyzecore.py --core="$DUMP_DIR/coredump"; abrt-action-install-debuginfo
|
||||
EVENT=analyze_LocalGDB analyzer=CCpp backtrace= abrt-action-generate-backtrace
|
||||
EVENT=analyze_LocalGDB analyzer=CCpp backtrace= abrt-action-analyze-backtrace
|
||||
EVENT=analyze_RetraceServer analyzer=CCpp backtrace= abrt-retrace-client batch -k --dir "$DUMP_DIR"
|
||||
diff -urp abrt-2.0.0/src/plugins/Makefile.am abrt-2.0.0_/src/plugins/Makefile.am
|
||||
--- abrt-2.0.0/src/plugins/Makefile.am 2011-04-13 21:07:17.045976143 +0200
|
||||
+++ abrt-2.0.0_/src/plugins/Makefile.am 2011-04-13 21:05:23.102976172 +0200
|
||||
@@ -2,6 +2,7 @@ pluginslibdir = $(PLUGINS_LIB_DIR)
|
||||
|
||||
bin_SCRIPTS = \
|
||||
abrt-action-install-debuginfo.py \
|
||||
+ abrt-action-analyzecore.py \
|
||||
abrt-action-list-dsos.py
|
||||
|
||||
bin_PROGRAMS = \
|
||||
@@ -57,7 +58,10 @@ man_MANS = \
|
||||
abrt-Upload.7 \
|
||||
abrt-plugins.7
|
||||
|
||||
-PYTHON_FILES = abrt-action-install-debuginfo.py abrt-action-list-dsos.py
|
||||
+PYTHON_FILES = \
|
||||
+ abrt-action-install-debuginfo.py \
|
||||
+ abrt-action-list-dsos.py \
|
||||
+ abrt-action-analyzecore.py
|
||||
|
||||
EXTRA_DIST = $(man_MANS) $(PYTHON_FILES)
|
||||
|
||||
Only in abrt-2.0.0_/src/plugins: Makefile.am.orig
|
||||
Loading…
Add table
Add a link
Reference in a new issue