diff --git a/0001-cli-enable-authetication-for-all-commands.patch b/0001-cli-enable-authetication-for-all-commands.patch new file mode 100644 index 0000000..b671352 --- /dev/null +++ b/0001-cli-enable-authetication-for-all-commands.patch @@ -0,0 +1,114 @@ +From 5c21d1e390603fdc56dba33cdc69672b3b75beff Mon Sep 17 00:00:00 2001 +From: Jakub Filak +Date: Wed, 8 Jul 2015 14:16:39 +0200 +Subject: [PATCH] cli: enable authetication for all commands + +I forgot to test the info, rm and status commands when I was working on +commit cb770e507f247476651b84ebbef63a5cd4c41d11 and later on I found out +that these commands must be updated to work with the system problems. + +Signed-off-by: Jakub Filak +--- + src/cli/list.c | 2 +- + src/cli/rm.c | 41 ++++++++++++++++++++++++++++------------- + src/cli/status.c | 3 ++- + 3 files changed, 31 insertions(+), 15 deletions(-) + +diff --git a/src/cli/list.c b/src/cli/list.c +index 31d1835..8bfb3cc 100644 +--- a/src/cli/list.c ++++ b/src/cli/list.c +@@ -35,7 +35,7 @@ static problem_data_t *load_problem_data(const char *problem_id) + char *name2 = NULL; + + /* First, check if there is a problem with the passed id */ +- GList *problems = get_problems_over_dbus(/*don't authorize*/false); ++ GList *problems = get_problems_over_dbus(g_cli_authenticate); + GList *item = g_list_find_custom(problems, problem_id, (GCompareFunc)strcmp); + + /* (git requires at least 5 char hash prefix, we do the same) */ +diff --git a/src/cli/rm.c b/src/cli/rm.c +index fe458ff..37d50e2 100644 +--- a/src/cli/rm.c ++++ b/src/cli/rm.c +@@ -19,12 +19,39 @@ + + #include "libabrt.h" + #include "builtin-cmd.h" ++#include "abrt-cli-core.h" + + /* TODO npajkovs: + * add -n, --dry-run + * add -q, --quite + */ + ++static int remove_using_dbus(const char **dirs_strv) ++{ ++ GList *dirs = NULL; ++ while (*dirs_strv) ++ dirs = g_list_prepend(dirs, (void *)*dirs_strv++); ++ const int ret = delete_problem_dirs_over_dbus(dirs); ++ g_list_free(dirs); ++ return ret; ++} ++ ++static int remove_using_abrtd_or_fs(const char **dirs_strv) ++{ ++ int errs = 0; ++ while (*dirs_strv) ++ { ++ int status; ++ const char *rm_dir = *dirs_strv++; ++ status = delete_dump_dir_possibly_using_abrtd(rm_dir); ++ if (!status) ++ log("rm '%s'", rm_dir); ++ else ++ errs++; ++ } ++ return errs; ++} ++ + int cmd_remove(int argc, const char **argv) + { + const char *program_usage_string = _( +@@ -42,17 +69,5 @@ int cmd_remove(int argc, const char **argv) + if (!argv[0]) + show_usage_and_die(program_usage_string, program_options); + +- int errs = 0; +- while (*argv) +- { +- int status; +- const char *rm_dir = *argv++; +- status = delete_dump_dir_possibly_using_abrtd(rm_dir); +- if (!status) +- log("rm '%s'", rm_dir); +- else +- errs++; +- } +- +- return errs; ++ return (g_cli_authenticate ? remove_using_dbus : remove_using_abrtd_or_fs)(argv); + } +diff --git a/src/cli/status.c b/src/cli/status.c +index a65ba05..0635289 100644 +--- a/src/cli/status.c ++++ b/src/cli/status.c +@@ -20,12 +20,13 @@ + #include + #include + #include "problem_api.h" ++#include "abrt-cli-core.h" + + static unsigned int count_problem_dirs(unsigned long since) + { + unsigned count = 0; + +- GList *problems = get_problems_over_dbus(/*don't authorize*/false); ++ GList *problems = get_problems_over_dbus(g_cli_authenticate); + for (GList *iter = problems; iter != NULL; iter = g_list_next(iter)) + { + const char *problem_id = (const char *)iter->data; +-- +2.4.3 + diff --git a/0002-cli-remove-useless-code-from-print_crash.patch b/0002-cli-remove-useless-code-from-print_crash.patch new file mode 100644 index 0000000..eb1962d --- /dev/null +++ b/0002-cli-remove-useless-code-from-print_crash.patch @@ -0,0 +1,32 @@ +From de12e078fc167fd1a818b101c1a21fcedf32a1a5 Mon Sep 17 00:00:00 2001 +From: Jakub Filak +Date: Wed, 8 Jul 2015 17:03:55 +0200 +Subject: [PATCH] cli: remove useless code from print_crash() + +Revealed by coverity. + +Signed-off-by: Jakub Filak +--- + src/cli/list.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/src/cli/list.c b/src/cli/list.c +index 8bfb3cc..e8ec37b 100644 +--- a/src/cli/list.c ++++ b/src/cli/list.c +@@ -63,11 +63,10 @@ static void print_crash(problem_data_t *problem_data, int detailed, int text_siz + char *desc; + if (detailed) + { +- int show_multiline = (detailed ? MAKEDESC_SHOW_MULTILINE : 0); + desc = make_description(problem_data, + /*names_to_skip:*/ NULL, + /*max_text_size:*/ text_size, +- MAKEDESC_SHOW_FILES | show_multiline); ++ MAKEDESC_SHOW_FILES | MAKEDESC_SHOW_MULTILINE); + } + else + { +-- +2.4.3 + diff --git a/0003-cli-use-internal-command-impl-in-the-command-process.patch b/0003-cli-use-internal-command-impl-in-the-command-process.patch new file mode 100644 index 0000000..5ed9459 --- /dev/null +++ b/0003-cli-use-internal-command-impl-in-the-command-process.patch @@ -0,0 +1,216 @@ +From cd698516de709ee3d8480fd7990a8082dffddb45 Mon Sep 17 00:00:00 2001 +From: Jakub Filak +Date: Wed, 8 Jul 2015 17:04:41 +0200 +Subject: [PATCH] cli: use internal command impl in the command process + +It did not seem to be a good idea to add wrappers for the internal +commands, because the wrappers would be one line functions. Now, we need +to do more sophisticated processing (authenticate, chown), so adding the +wrappers is the best choice to provide the same functionality in the +command process. + +Signed-off-by: Jakub Filak +--- + src/cli/builtin-cmd.h | 3 +++ + src/cli/list.c | 8 ++++++- + src/cli/process.c | 16 ++++--------- + src/cli/report.c | 65 +++++++++++++++++++++++++++------------------------ + src/cli/rm.c | 7 +++++- + 5 files changed, 56 insertions(+), 43 deletions(-) + +diff --git a/src/cli/builtin-cmd.h b/src/cli/builtin-cmd.h +index bc80479..c6cd691 100644 +--- a/src/cli/builtin-cmd.h ++++ b/src/cli/builtin-cmd.h +@@ -22,8 +22,11 @@ + + extern int cmd_list(int argc, const char **argv); + extern int cmd_remove(int argc, const char **argv); ++extern int _cmd_remove(const char **dirs_strv); + extern int cmd_report(int argc, const char **argv); ++extern int _cmd_report(const char **dirs_strv, int remove); + extern int cmd_info(int argc, const char **argv); ++extern int _cmd_info(problem_data_t *problem_data, int detailed, int text_size); + extern int cmd_status(int argc, const char **argv); + extern int cmd_process(int argc, const char **argv); + +diff --git a/src/cli/list.c b/src/cli/list.c +index e8ec37b..68dda47 100644 +--- a/src/cli/list.c ++++ b/src/cli/list.c +@@ -168,6 +168,12 @@ int cmd_list(int argc, const char **argv) + return 0; + } + ++int _cmd_info(problem_data_t *problem_data, int detailed, int text_size) ++{ ++ print_crash(problem_data, detailed, text_size); ++ return 0; ++} ++ + int cmd_info(int argc, const char **argv) + { + const char *program_usage_string = _( +@@ -205,7 +211,7 @@ int cmd_info(int argc, const char **argv) + continue; + } + +- print_crash(problem, opt_detailed, text_size); ++ _cmd_info(problem, opt_detailed, text_size); + problem_data_free(problem); + if (*argv) + printf("\n"); +diff --git a/src/cli/process.c b/src/cli/process.c +index 39462f9..401ef60 100644 +--- a/src/cli/process.c ++++ b/src/cli/process.c +@@ -68,28 +68,22 @@ static int process_one_crash(problem_data_t *problem_data) + if(strcmp(action, "rm") == 0 || strcmp(action, "remove") == 0 ) + { + log(_("Deleting '%s'"), dir_name); +- delete_dump_dir_possibly_using_abrtd(dir_name); ++ const char *dirs_strv[] = {dir_name, NULL}; ++ _cmd_remove(dirs_strv); + + ret_val = ACT_REMOVE; + } + else if (not_reportable == NULL && (strcmp(action, "e") == 0 || strcmp(action, "report") == 0)) + { + log(_("Reporting '%s'"), dir_name); +- report_problem_in_dir(dir_name, +- LIBREPORT_WAIT +- | LIBREPORT_RUN_CLI); ++ const char *dirs_strv[] = {dir_name, NULL}; ++ _cmd_report(dirs_strv, /*do not delete*/0); + + ret_val = ACT_REPORT; + } + else if (strcmp(action, "i") == 0 || strcmp(action, "info") == 0) + { +- char *desc = make_description(problem_data, +- /*names_to_skip:*/ NULL, +- /*max_text_size:*/ CD_TEXT_ATT_SIZE_BZ, +- MAKEDESC_SHOW_FILES | MAKEDESC_SHOW_MULTILINE); +- +- fputs(desc, stdout); +- free(desc); ++ _cmd_info(problem_data, /*detailed*/1, CD_TEXT_ATT_SIZE_BZ); + + ret_val = ACT_INFO; + } +diff --git a/src/cli/report.c b/src/cli/report.c +index 194f7c9..19b4c51 100644 +--- a/src/cli/report.c ++++ b/src/cli/report.c +@@ -22,38 +22,12 @@ + #include "abrt-cli-core.h" + #include "builtin-cmd.h" + +-int cmd_report(int argc, const char **argv) ++int _cmd_report(const char **dirs_strv, int remove) + { +- const char *program_usage_string = _( +- "& report [options] DIR..." +- ); +- +- enum { +- OPT_v = 1 << 0, +- OPT_d = 1 << 1, +- }; +- +- struct options program_options[] = { +- OPT__VERBOSE(&g_verbose), +- OPT_BOOL('d', "delete", NULL, _("Remove PROBLEM_DIR after reporting")), +- OPT_END() +- }; +- +- unsigned opts = parse_opts(argc, (char **)argv, program_options, program_usage_string); +- argv += optind; +- +- if (!argv[0]) +- show_usage_and_die(program_usage_string, program_options); +- +- export_abrt_envvars(/*prog_prefix:*/ 0); +- +- load_abrt_conf(); +- free_abrt_conf_data(); +- + int ret = 0; +- while (*argv) ++ while (*dirs_strv) + { +- const char *dir_name = *argv++; ++ const char *dir_name = *dirs_strv++; + char *const real_problem_id = hash2dirname_if_necessary(dir_name); + if (real_problem_id == NULL) + { +@@ -75,7 +49,7 @@ int cmd_report(int argc, const char **argv) + | LIBREPORT_RUN_CLI); + + /* the problem was successfully reported and option is -d */ +- if((opts & OPT_d) && (status == 0 || status == EXIT_STOP_EVENT_RUN)) ++ if(remove && (status == 0 || status == EXIT_STOP_EVENT_RUN)) + { + log(_("Deleting '%s'"), real_problem_id); + delete_dump_dir_possibly_using_abrtd(real_problem_id); +@@ -89,3 +63,34 @@ int cmd_report(int argc, const char **argv) + + return ret; + } ++ ++int cmd_report(int argc, const char **argv) ++{ ++ const char *program_usage_string = _( ++ "& report [options] DIR..." ++ ); ++ ++ enum { ++ OPT_v = 1 << 0, ++ OPT_d = 1 << 1, ++ }; ++ ++ struct options program_options[] = { ++ OPT__VERBOSE(&g_verbose), ++ OPT_BOOL('d', "delete", NULL, _("Remove PROBLEM_DIR after reporting")), ++ OPT_END() ++ }; ++ ++ unsigned opts = parse_opts(argc, (char **)argv, program_options, program_usage_string); ++ argv += optind; ++ ++ if (!argv[0]) ++ show_usage_and_die(program_usage_string, program_options); ++ ++ export_abrt_envvars(/*prog_prefix:*/ 0); ++ ++ load_abrt_conf(); ++ free_abrt_conf_data(); ++ ++ return _cmd_report(argv, opts & OPT_d); ++} +diff --git a/src/cli/rm.c b/src/cli/rm.c +index 37d50e2..95ae097 100644 +--- a/src/cli/rm.c ++++ b/src/cli/rm.c +@@ -52,6 +52,11 @@ static int remove_using_abrtd_or_fs(const char **dirs_strv) + return errs; + } + ++int _cmd_remove(const char **dirs_strv) ++{ ++ return (g_cli_authenticate ? remove_using_dbus : remove_using_abrtd_or_fs)(dirs_strv); ++} ++ + int cmd_remove(int argc, const char **argv) + { + const char *program_usage_string = _( +@@ -69,5 +74,5 @@ int cmd_remove(int argc, const char **argv) + if (!argv[0]) + show_usage_and_die(program_usage_string, program_options); + +- return (g_cli_authenticate ? remove_using_dbus : remove_using_abrtd_or_fs)(argv); ++ return _cmd_remove(argv); + } +-- +2.4.3 + diff --git a/0004-a-dump-oops-allow-update-the-problem-if-more-then-on.patch b/0004-a-dump-oops-allow-update-the-problem-if-more-then-on.patch new file mode 100644 index 0000000..76ec5a6 --- /dev/null +++ b/0004-a-dump-oops-allow-update-the-problem-if-more-then-on.patch @@ -0,0 +1,54 @@ +From 23c6702959b763f6abbc3c853676c6aeedd6d3fe Mon Sep 17 00:00:00 2001 +From: Matej Habrnal +Date: Mon, 13 Jul 2015 11:25:17 +0200 +Subject: [PATCH] a-dump-oops: allow update the problem, if more then one oops + found + +In case that found more than one oops process the first one. +Without this patch the script exits with error in this case because expects +only one oops. + +Related to rhbz#1170534 + +Signed-off-by: Matej Habrnal +--- + src/plugins/abrt-dump-oops.c | 16 +++++++++++----- + 1 file changed, 11 insertions(+), 5 deletions(-) + +diff --git a/src/plugins/abrt-dump-oops.c b/src/plugins/abrt-dump-oops.c +index 58650cb..a348923 100644 +--- a/src/plugins/abrt-dump-oops.c ++++ b/src/plugins/abrt-dump-oops.c +@@ -172,6 +172,17 @@ int main(int argc, char **argv) + log("Updating problem directory"); + switch (g_list_length(oops_list)) + { ++ case 0: ++ { ++ error_msg(_("Can't update the problem: no oops found")); ++ errors = 1; ++ break; ++ } ++ default: ++ { ++ log_notice(_("More oopses found: process only the first one")); ++ } ++ /* falls trought */ + case 1: + { + struct dump_dir *dd = dd_opendir(problem_dir, /*open for writing*/0); +@@ -181,11 +192,6 @@ int main(int argc, char **argv) + dd_close(dd); + } + } +- break; +- default: +- error_msg(_("Can't update the problem: more than one oops found")); +- errors = 1; +- break; + } + } + else +-- +2.4.3 + diff --git a/0005-abrtd-de-prioritize-post-create-event-scripts.patch b/0005-abrtd-de-prioritize-post-create-event-scripts.patch new file mode 100644 index 0000000..aff6b9f --- /dev/null +++ b/0005-abrtd-de-prioritize-post-create-event-scripts.patch @@ -0,0 +1,117 @@ +From 883d35109b55928d4c36d3cd6ee262d7cdc5bd4d Mon Sep 17 00:00:00 2001 +From: Jakub Filak +Date: Wed, 15 Jul 2015 10:20:59 +0200 +Subject: [PATCH] abrtd: de-prioritize post-create event scripts + +The crash processing should not make the computer unusable. It sometimes +happens that the captured data causes abrt scripts to take an inadequate +amount of resources and the computer becomes less responsive. + +This patch increases the nice value of post-create processes by 10 (I took +10 because it is the default value of command 'nice'), so those +processes will be scheduled after the more valuable processes. + +Related: rhbz#1236422 + +Signed-off-by: Jakub Filak +--- + doc/abrtd.txt | 7 +++++++ + src/daemon/abrt-handle-event.c | 19 ++++++++++++++++++- + src/daemon/abrt-server.c | 14 ++++++++------ + 3 files changed, 33 insertions(+), 7 deletions(-) + +diff --git a/doc/abrtd.txt b/doc/abrtd.txt +index b129d3e..32d044b 100644 +--- a/doc/abrtd.txt ++++ b/doc/abrtd.txt +@@ -36,6 +36,13 @@ OPTIONS + -p:: + Add program names to log. + ++ENVIRONMENT ++----------- ++ABRT_EVENT_NICE:: ++ 'abrtd' runs its post-mortem processing with the nice value incremented by 10 ++ in order to not take too much resources and keep the computer responsive. If ++ you want to adjust the increment value, use the ABRT_EVENT_NICE environment ++ variable. + + CAVEATS + ------- +diff --git a/src/daemon/abrt-handle-event.c b/src/daemon/abrt-handle-event.c +index 4a21aa4..fda21bd 100644 +--- a/src/daemon/abrt-handle-event.c ++++ b/src/daemon/abrt-handle-event.c +@@ -403,16 +403,18 @@ int main(int argc, char **argv) + abrt_init(argv); + + const char *program_usage_string = _( +- "& [-v -i] -e|--event EVENT DIR..." ++ "& [-v -i -n INCREMENT] -e|--event EVENT DIR..." + ); + + char *event_name = NULL; + int interactive = 0; /* must be _int_, OPT_BOOL expects that! */ ++ int nice_incr = 0; + + struct options program_options[] = { + OPT__VERBOSE(&g_verbose), + OPT_STRING('e', "event" , &event_name, "EVENT", _("Run EVENT on DIR")), + OPT_BOOL('i', "interactive" , &interactive, _("Communicate directly to the user")), ++ OPT_INTEGER('n', "nice" , &nice_incr, _("Increment the nice value by INCREMENT")), + OPT_END() + }; + +@@ -423,6 +425,21 @@ int main(int argc, char **argv) + + load_abrt_conf(); + ++ const char *const opt_env_nice = getenv("ABRT_EVENT_NICE"); ++ if (opt_env_nice != NULL && opt_env_nice[0] != '\0') ++ { ++ log_debug("Using ABRT_EVENT_NICE=%s to increment the nice value", opt_env_nice); ++ nice_incr = xatoi(opt_env_nice); ++ } ++ ++ if (nice_incr != 0) ++ { ++ log_debug("Incrementing the nice value by %d", nice_incr); ++ const int ret = nice(nice_incr); ++ if (ret == -1) ++ perror_msg_and_die("Failed to increment the nice value"); ++ } ++ + bool post_create = (strcmp(event_name, "post-create") == 0); + char *dump_dir_name = NULL; + while (*argv) +diff --git a/src/daemon/abrt-server.c b/src/daemon/abrt-server.c +index d7556e2..9f177e9 100644 +--- a/src/daemon/abrt-server.c ++++ b/src/daemon/abrt-server.c +@@ -126,15 +126,17 @@ static int delete_path(const char *dump_dir_name) + + static pid_t spawn_event_handler_child(const char *dump_dir_name, const char *event_name, int *fdp) + { +- char *args[7]; ++ char *args[9]; + args[0] = (char *) LIBEXEC_DIR"/abrt-handle-event"; + /* Do not forward ASK_* messages to parent*/ + args[1] = (char *) "-i"; +- args[2] = (char *) "-e"; +- args[3] = (char *) event_name; +- args[4] = (char *) "--"; +- args[5] = (char *) dump_dir_name; +- args[6] = NULL; ++ args[2] = (char *) "--nice"; ++ args[3] = (char *) "10"; ++ args[4] = (char *) "-e"; ++ args[5] = (char *) event_name; ++ args[6] = (char *) "--"; ++ args[7] = (char *) dump_dir_name; ++ args[8] = NULL; + + int pipeout[2]; + int flags = EXECFLG_INPUT_NUL | EXECFLG_OUTPUT | EXECFLG_QUIET | EXECFLG_ERR2OUT; +-- +2.4.3 + diff --git a/0006-abrt-Fixup-component-of-select-kernel-backtraces.patch b/0006-abrt-Fixup-component-of-select-kernel-backtraces.patch new file mode 100644 index 0000000..e5f30bc --- /dev/null +++ b/0006-abrt-Fixup-component-of-select-kernel-backtraces.patch @@ -0,0 +1,473 @@ +From 9d9e0b94573e668bc242a68f4007e67c3eef4ddf Mon Sep 17 00:00:00 2001 +From: Laura Abbott +Date: Wed, 27 May 2015 16:27:32 -0700 +Subject: [PATCH] abrt: Fixup component of select kernel backtraces + +The kernel is a big project and certain parts of it +may need to be tracked under different components. +Fixup results related to those parts and assign a +different component. + +Signed-off-by: Laura Abbott + +- ported to Python 3 +- removed a left over +- extended a log message + +Signed-off-by: Jakub Filak +--- + .gitignore | 1 + + abrt.spec.in | 1 + + configure.ac | 1 + + examples/oops-32bit-graphics.right | 73 +++++++++++++++++ + examples/oops-32bit-graphics.test | 71 +++++++++++++++++ + examples/oops-noveau.right | 39 +++++++++ + examples/oops-noveau.test | 38 +++++++++ + src/plugins/Makefile.am | 3 + + .../abrt-action-check-oops-for-alt-component.in | 93 ++++++++++++++++++++++ + src/plugins/koops_event.conf | 3 + + src/plugins/vmcore_event.conf | 1 + + 11 files changed, 324 insertions(+) + create mode 100644 examples/oops-32bit-graphics.right + create mode 100644 examples/oops-32bit-graphics.test + create mode 100644 examples/oops-noveau.right + create mode 100644 examples/oops-noveau.test + create mode 100644 src/plugins/abrt-action-check-oops-for-alt-component.in + +diff --git a/.gitignore b/.gitignore +index 66410cb..f5a93e4 100644 +--- a/.gitignore ++++ b/.gitignore +@@ -30,6 +30,7 @@ src/plugins/abrt-action-analyze-python + src/plugins/abrt-action-analyze-vmcore + src/plugins/abrt-action-analyze-xorg + src/plugins/abrt-action-check-oops-for-hw-error ++src/plugins/abrt-action-check-oops-for-alt-component + src/plugins/abrt-action-generate-backtrace + src/plugins/abrt-action-install-debuginfo-to-abrt-cache + src/plugins/abrt-action-perform-ccpp-analysis +diff --git a/abrt.spec.in b/abrt.spec.in +index 08eb93f..c73eaf6 100644 +--- a/abrt.spec.in ++++ b/abrt.spec.in +@@ -975,6 +975,7 @@ killall abrt-dbus >/dev/null 2>&1 || : + %endif + %{_sbindir}/abrt-harvest-vmcore + %{_bindir}/abrt-action-analyze-vmcore ++%{_bindir}/abrt-action-check-oops-for-alt-component + %{_bindir}/abrt-action-check-oops-for-hw-error + %{_mandir}/man1/abrt-harvest-vmcore.1* + %{_mandir}/man5/abrt-vmcore.conf.5* +diff --git a/configure.ac b/configure.ac +index 2958807..b372e12 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -429,6 +429,7 @@ AC_CONFIG_FILES([ + src/plugins/abrt-action-install-debuginfo + src/plugins/abrt-action-analyze-vmcore + src/plugins/abrt-action-check-oops-for-hw-error ++ src/plugins/abrt-action-check-oops-for-alt-component + src/python-problem/Makefile + src/python-problem/doc/Makefile + src/python-problem/tests/Makefile +diff --git a/examples/oops-32bit-graphics.right b/examples/oops-32bit-graphics.right +new file mode 100644 +index 0000000..9891d02 +--- /dev/null ++++ b/examples/oops-32bit-graphics.right +@@ -0,0 +1,73 @@ ++abrt-dump-oops: Found oopses: 2 ++abrt-dump-oops: Kernel is tainted 'GD' ++ ++Version: 4.0.3-201.fc21.i686+PAE ++BUG: unable to handle kernel NULL pointer dereference at 00000008 ++IP: [] radeon_audio_detect+0x54/0x140 [radeon] ++*pdpt = 0000000033260001 *pde = 0000000000000000 ++Oops: 0000 [#1] SMP ++Modules linked in: radeon i2c_algo_bit drm_kms_helper e1000 ttm e100 drm ata_generic pata_acpi mii ++CPU: 0 PID: 222 Comm: plymouthd Not tainted 4.0.3-201.fc21.i686+PAE #1 ++Hardware name: Dell Inc. Dimension 4700 /0M3918, BIOS A10 01/04/2006 ++task: f325f640 ti: f33b8000 task.ti: f33b8000 ++EIP: 0060:[] EFLAGS: 00010246 CPU: 0 ++EIP is at radeon_audio_detect+0x54/0x140 [radeon] ++EAX: f6884240 EBX: f339dc00 ECX: 00000000 EDX: 00000000 ++ESI: f3364320 EDI: f681c000 EBP: f33b9d14 ESP: f33b9d04 ++ DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068 ++CR0: 80050033 CR2: 00000008 CR3: 33209000 CR4: 000007f0 ++Stack: ++ f6884240 f339dc00 00000001 f7374800 f33b9d48 f833bb78 00000001 f33be600 ++ 4ac04888 00000000 f33be600 f33b9d68 00000001 f681c000 f339dc30 f339dc00 ++ 00000001 f33b9d94 f809287b f3259580 f775d500 f325f640 f33b9fec f33e0540 ++Call Trace: ++ [] radeon_dvi_detect+0x2d8/0x4b0 [radeon] ++ [] drm_helper_probe_single_connector_modes_merge_bits+0x27b/0x4a0 [drm_kms_helper] ++ [] ? mutex_lock+0x10/0x30 ++ [] drm_helper_probe_single_connector_modes+0x17/0x20 [drm_kms_helper] ++ [] drm_mode_getconnector+0x28d/0x320 [drm] ++ [] ? drm_mode_getcrtc+0xd0/0xd0 [drm] ++ [] drm_ioctl+0x1f5/0x560 [drm] ++ [] ? drm_mode_getcrtc+0xd0/0xd0 [drm] ++ [] ? do_seccomp+0x2d7/0x6e0 ++ [] ? _copy_to_user+0x26/0x30 ++ [] ? __pm_runtime_resume+0x51/0x70 ++ [] ? posix_get_boottime+0x7/0x30 ++ [] radeon_drm_ioctl+0x3e/0x70 [radeon] ++ [] ? 0xf8315000 ++ [] do_vfs_ioctl+0x322/0x540 ++ [] ? inode_has_perm.isra.32+0x32/0x50 ++ [] ? file_has_perm+0x97/0xa0 ++ [] ? selinux_file_ioctl+0x4b/0xe0 ++ [] SyS_ioctl+0x60/0x90 ++ [] ? posix_get_boottime+0x7/0x30 ++ [] ? posix_get_boottime+0x7/0x30 ++ [] sysenter_do_call+0x12/0x12 ++ [] ? posix_get_boottime+0x7/0x30 ++ [] ? posix_get_boottime+0x7/0x30 ++Code: 44 8b 93 0c 02 00 00 8b 02 8b b2 20 01 00 00 8b 78 18 8b 86 e4 00 00 00 85 c0 74 29 83 7d f0 01 74 35 8b 50 10 8b 8f 70 1c 00 00 <8b> 59 08 85 db 74 0c 89 f8 31 c9 ff d3 8b 86 e4 00 00 00 c7 40 ++EIP: [] radeon_audio_detect+0x54/0x140 [radeon] SS:ESP 0068:f33b9d04 ++CR2: 0000000000000008 ++ ++Version: 4.0.3-201.fc21.i686+PAE ++WARNING: CPU: 1 PID: 263 at lib/list_debug.c:62 __list_del_entry+0xf4/0x100() ++list_del corruption. next->prev should be f3215564, but was (null) ++Modules linked in: radeon i2c_algo_bit drm_kms_helper e1000 ttm e100 drm ata_generic pata_acpi mii ++CPU: 1 PID: 263 Comm: plymouth Tainted: G D 4.0.3-201.fc21.i686+PAE #1 ++Hardware name: Dell Inc. Dimension 4700 /0M3918, BIOS A10 01/04/2006 ++ c0d3c9c7 b9171629 00000000 f3337eb4 c0a878b6 f3337ef8 f3337ee8 c0466c1b ++ c0c929c4 f3337f18 00000107 c0c91c9f 0000003e c0712794 0000003e c0712794 ++ 00000000 00000001 f32150a0 f3337f04 c0466c8e 00000009 f3337ef8 c0c929c4 ++Call Trace: ++ [] dump_stack+0x41/0x52 ++ [] warn_slowpath_common+0x8b/0xc0 ++ [] ? __list_del_entry+0xf4/0x100 ++ [] ? __list_del_entry+0xf4/0x100 ++ [] warn_slowpath_fmt+0x3e/0x60 ++ [] __list_del_entry+0xf4/0x100 ++ [] cgroup_exit+0x33/0x100 ++ [] do_exit+0x2b8/0x950 ++ [] ? __do_page_fault+0x252/0x4a0 ++ [] do_group_exit+0x37/0xa0 ++ [] SyS_exit_group+0x16/0x20 ++ [] sysenter_do_call+0x12/0x12 +diff --git a/examples/oops-32bit-graphics.test b/examples/oops-32bit-graphics.test +new file mode 100644 +index 0000000..da3d716 +--- /dev/null ++++ b/examples/oops-32bit-graphics.test +@@ -0,0 +1,71 @@ ++BUG: unable to handle kernel NULL pointer dereference at 00000008 ++IP: [] radeon_audio_detect+0x54/0x140 [radeon] ++*pdpt = 0000000033260001 *pde = 0000000000000000 ++Oops: 0000 [#1] SMP ++Modules linked in: radeon i2c_algo_bit drm_kms_helper e1000 ttm e100 drm ata_generic pata_acpi mii ++CPU: 0 PID: 222 Comm: plymouthd Not tainted 4.0.3-201.fc21.i686+PAE #1 ++Hardware name: Dell Inc. Dimension 4700 /0M3918, BIOS A10 01/04/2006 ++task: f325f640 ti: f33b8000 task.ti: f33b8000 ++EIP: 0060:[] EFLAGS: 00010246 CPU: 0 ++EIP is at radeon_audio_detect+0x54/0x140 [radeon] ++EAX: f6884240 EBX: f339dc00 ECX: 00000000 EDX: 00000000 ++ESI: f3364320 EDI: f681c000 EBP: f33b9d14 ESP: f33b9d04 ++ DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068 ++CR0: 80050033 CR2: 00000008 CR3: 33209000 CR4: 000007f0 ++Stack: ++ f6884240 f339dc00 00000001 f7374800 f33b9d48 f833bb78 00000001 f33be600 ++ 4ac04888 00000000 f33be600 f33b9d68 00000001 f681c000 f339dc30 f339dc00 ++ 00000001 f33b9d94 f809287b f3259580 f775d500 f325f640 f33b9fec f33e0540 ++Call Trace: ++ [] radeon_dvi_detect+0x2d8/0x4b0 [radeon] ++ [] drm_helper_probe_single_connector_modes_merge_bits+0x27b/0x4a0 [drm_kms_helper] ++ [] ? mutex_lock+0x10/0x30 ++ [] drm_helper_probe_single_connector_modes+0x17/0x20 [drm_kms_helper] ++ [] drm_mode_getconnector+0x28d/0x320 [drm] ++ [] ? drm_mode_getcrtc+0xd0/0xd0 [drm] ++ [] drm_ioctl+0x1f5/0x560 [drm] ++ [] ? drm_mode_getcrtc+0xd0/0xd0 [drm] ++ [] ? do_seccomp+0x2d7/0x6e0 ++ [] ? _copy_to_user+0x26/0x30 ++ [] ? __pm_runtime_resume+0x51/0x70 ++ [] ? posix_get_boottime+0x7/0x30 ++ [] radeon_drm_ioctl+0x3e/0x70 [radeon] ++ [] ? 0xf8315000 ++ [] do_vfs_ioctl+0x322/0x540 ++ [] ? inode_has_perm.isra.32+0x32/0x50 ++ [] ? file_has_perm+0x97/0xa0 ++ [] ? selinux_file_ioctl+0x4b/0xe0 ++ [] SyS_ioctl+0x60/0x90 ++ [] ? posix_get_boottime+0x7/0x30 ++ [] ? posix_get_boottime+0x7/0x30 ++ [] sysenter_do_call+0x12/0x12 ++ [] ? posix_get_boottime+0x7/0x30 ++ [] ? posix_get_boottime+0x7/0x30 ++Code: 44 8b 93 0c 02 00 00 8b 02 8b b2 20 01 00 00 8b 78 18 8b 86 e4 00 00 00 85 c0 74 29 83 7d f0 01 74 35 8b 50 10 8b 8f 70 1c 00 00 <8b> 59 08 85 db 74 0c 89 f8 31 c9 ff d3 8b 86 e4 00 00 00 c7 40 ++EIP: [] radeon_audio_detect+0x54/0x140 [radeon] SS:ESP 0068:f33b9d04 ++CR2: 0000000000000008 ++---[ end trace c37768228d821e9f ]--- ++------------[ cut here ]------------ ++WARNING: CPU: 1 PID: 263 at lib/list_debug.c:62 __list_del_entry+0xf4/0x100() ++list_del corruption. next->prev should be f3215564, but was (null) ++Modules linked in: radeon i2c_algo_bit drm_kms_helper e1000 ttm e100 drm ata_generic pata_acpi mii ++CPU: 1 PID: 263 Comm: plymouth Tainted: G D 4.0.3-201.fc21.i686+PAE #1 ++Hardware name: Dell Inc. Dimension 4700 /0M3918, BIOS A10 01/04/2006 ++ c0d3c9c7 b9171629 00000000 f3337eb4 c0a878b6 f3337ef8 f3337ee8 c0466c1b ++ c0c929c4 f3337f18 00000107 c0c91c9f 0000003e c0712794 0000003e c0712794 ++ 00000000 00000001 f32150a0 f3337f04 c0466c8e 00000009 f3337ef8 c0c929c4 ++Call Trace: ++ [] dump_stack+0x41/0x52 ++ [] warn_slowpath_common+0x8b/0xc0 ++ [] ? __list_del_entry+0xf4/0x100 ++ [] ? __list_del_entry+0xf4/0x100 ++ [] warn_slowpath_fmt+0x3e/0x60 ++ [] __list_del_entry+0xf4/0x100 ++ [] cgroup_exit+0x33/0x100 ++ [] do_exit+0x2b8/0x950 ++ [] ? __do_page_fault+0x252/0x4a0 ++ [] do_group_exit+0x37/0xa0 ++ [] SyS_exit_group+0x16/0x20 ++ [] sysenter_do_call+0x12/0x12 ++---[ end trace c37768228d821ea0 ]--- ++ +diff --git a/examples/oops-noveau.right b/examples/oops-noveau.right +new file mode 100644 +index 0000000..d6c87a2 +--- /dev/null ++++ b/examples/oops-noveau.right +@@ -0,0 +1,39 @@ ++abrt-dump-oops: Found oopses: 1 ++ ++Version: 3.19.5-200.fc21.x86_64 ++WARNING: CPU: 0 PID: 16684 at arch/x86/mm/ioremap.c:197 __ioremap_caller+0x2aa/0x3a0() ++Info: mapping multiple BARs. Your kernel is fine. ++Modules linked in: ++ bnep bluetooth rfkill xt_CHECKSUM iptable_mangle ipt_MASQUERADE nf_nat_masquerade_ipv4 iptable_nat nf_nat_ipv4 nf_nat nf_conntrack_ipv4 nf_defrag_ipv4 xt_conntrack nf_conntrack bridge stp llc snd_hda_codec_hdmi snd_hda_codec_realtek snd_hda_codec_generic snd_hda_intel snd_hda_controller snd_hda_codec fuse snd_hwdep snd_seq snd_seq_device snd_pcm snd_timer edac_core usblp kvm_amd snd serio_raw kvm k10temp edac_mce_amd sp5100_tco i2c_piix4 shpchp soundcore acpi_cpufreq nfsd auth_rpcgss nfs_acl lockd grace sunrpc ata_generic pata_acpi nouveau video mxm_wmi wmi i2c_algo_bit drm_kms_helper ttm drm pata_atiixp r8169 mii ++CPU: 0 PID: 16684 Comm: firefox Not tainted 3.19.5-200.fc21.x86_64 #1 ++Hardware name: Gigabyte Technology Co., Ltd. To be filled by O.E.M./970A-DS3P, BIOS F1 04/08/2013 ++ 0000000000000000 0000000087b0a5f7 ffff8802e1b9b768 ffffffff8176ead5 ++ 0000000000000000 ffff8802e1b9b7c0 ffff8802e1b9b7a8 ffffffff8109bc1a ++ ffff8802e1b9b7d8 ffffc9001c180000 00000000d206d000 0000000000100000 ++Call Trace: ++ [] dump_stack+0x45/0x57 ++ [] warn_slowpath_common+0x8a/0xc0 ++ [] warn_slowpath_fmt+0x55/0x70 ++ [] __ioremap_caller+0x2aa/0x3a0 ++ [] ioremap_nocache+0x17/0x20 ++ [] nouveau_barobj_ctor+0xd6/0x110 [nouveau] ++ [] nouveau_object_ctor+0x41/0xf0 [nouveau] ++ [] nouveau_bar_alloc+0x3f/0x70 [nouveau] ++ [] nouveau_gpuobj_create_+0x2a5/0x2f0 [nouveau] ++ [] _nouveau_gpuobj_ctor+0x4c/0x70 [nouveau] ++ [] nouveau_object_ctor+0x41/0xf0 [nouveau] ++ [] nouveau_gpuobj_new+0x5b/0x80 [nouveau] ++ [] nouveau_vm_get+0x183/0x2f0 [nouveau] ++ [] ? map_vm_area+0x2a/0x40 ++ [] nouveau_bo_vma_add+0x34/0x90 [nouveau] ++ [] nouveau_channel_prep+0x269/0x3b0 [nouveau] ++ [] nouveau_channel_new+0x83/0x800 [nouveau] ++ [] ? nvif_device_init+0x3a/0x50 [nouveau] ++ [] ? kmem_cache_alloc_trace+0x1f6/0x230 ++ [] nouveau_abi16_ioctl_channel_alloc+0x120/0x3a0 [nouveau] ++ [] drm_ioctl+0x1df/0x680 [drm] ++ [] ? handle_mm_fault+0x8a6/0xff0 ++ [] nouveau_drm_ioctl+0x72/0xd0 [nouveau] ++ [] do_vfs_ioctl+0x2f8/0x500 ++ [] SyS_ioctl+0x81/0xa0 ++ [] system_call_fastpath+0x12/0x17 +diff --git a/examples/oops-noveau.test b/examples/oops-noveau.test +new file mode 100644 +index 0000000..8678a7d +--- /dev/null ++++ b/examples/oops-noveau.test +@@ -0,0 +1,38 @@ ++------------[ cut here ]------------ ++WARNING: CPU: 0 PID: 16684 at arch/x86/mm/ioremap.c:197 __ioremap_caller+0x2aa/0x3a0() ++Info: mapping multiple BARs. Your kernel is fine. ++Modules linked in: ++ bnep bluetooth rfkill xt_CHECKSUM iptable_mangle ipt_MASQUERADE nf_nat_masquerade_ipv4 iptable_nat nf_nat_ipv4 nf_nat nf_conntrack_ipv4 nf_defrag_ipv4 xt_conntrack nf_conntrack bridge stp llc snd_hda_codec_hdmi snd_hda_codec_realtek snd_hda_codec_generic snd_hda_intel snd_hda_controller snd_hda_codec fuse snd_hwdep snd_seq snd_seq_device snd_pcm snd_timer edac_core usblp kvm_amd snd serio_raw kvm k10temp edac_mce_amd sp5100_tco i2c_piix4 shpchp soundcore acpi_cpufreq nfsd auth_rpcgss nfs_acl lockd grace sunrpc ata_generic pata_acpi nouveau video mxm_wmi wmi i2c_algo_bit drm_kms_helper ttm drm pata_atiixp r8169 mii ++CPU: 0 PID: 16684 Comm: firefox Not tainted 3.19.5-200.fc21.x86_64 #1 ++Hardware name: Gigabyte Technology Co., Ltd. To be filled by O.E.M./970A-DS3P, BIOS F1 04/08/2013 ++ 0000000000000000 0000000087b0a5f7 ffff8802e1b9b768 ffffffff8176ead5 ++ 0000000000000000 ffff8802e1b9b7c0 ffff8802e1b9b7a8 ffffffff8109bc1a ++ ffff8802e1b9b7d8 ffffc9001c180000 00000000d206d000 0000000000100000 ++Call Trace: ++ [] dump_stack+0x45/0x57 ++ [] warn_slowpath_common+0x8a/0xc0 ++ [] warn_slowpath_fmt+0x55/0x70 ++ [] __ioremap_caller+0x2aa/0x3a0 ++ [] ioremap_nocache+0x17/0x20 ++ [] nouveau_barobj_ctor+0xd6/0x110 [nouveau] ++ [] nouveau_object_ctor+0x41/0xf0 [nouveau] ++ [] nouveau_bar_alloc+0x3f/0x70 [nouveau] ++ [] nouveau_gpuobj_create_+0x2a5/0x2f0 [nouveau] ++ [] _nouveau_gpuobj_ctor+0x4c/0x70 [nouveau] ++ [] nouveau_object_ctor+0x41/0xf0 [nouveau] ++ [] nouveau_gpuobj_new+0x5b/0x80 [nouveau] ++ [] nouveau_vm_get+0x183/0x2f0 [nouveau] ++ [] ? map_vm_area+0x2a/0x40 ++ [] nouveau_bo_vma_add+0x34/0x90 [nouveau] ++ [] nouveau_channel_prep+0x269/0x3b0 [nouveau] ++ [] nouveau_channel_new+0x83/0x800 [nouveau] ++ [] ? nvif_device_init+0x3a/0x50 [nouveau] ++ [] ? kmem_cache_alloc_trace+0x1f6/0x230 ++ [] nouveau_abi16_ioctl_channel_alloc+0x120/0x3a0 [nouveau] ++ [] drm_ioctl+0x1df/0x680 [drm] ++ [] ? handle_mm_fault+0x8a6/0xff0 ++ [] nouveau_drm_ioctl+0x72/0xd0 [nouveau] ++ [] do_vfs_ioctl+0x2f8/0x500 ++ [] SyS_ioctl+0x81/0xa0 ++ [] system_call_fastpath+0x12/0x17 ++---[ end trace d72a6ef9c44bed66 ]--- +diff --git a/src/plugins/Makefile.am b/src/plugins/Makefile.am +index d90bb76..aa426ff 100644 +--- a/src/plugins/Makefile.am ++++ b/src/plugins/Makefile.am +@@ -74,6 +74,7 @@ PYTHON_FILES = \ + abrt-action-list-dsos \ + abrt-action-analyze-core \ + abrt-action-analyze-vulnerability \ ++ abrt-action-check-oops-for-alt-component.in \ + abrt-action-check-oops-for-hw-error.in \ + abrt-action-perform-ccpp-analysis.in \ + abrt-action-notify +@@ -101,6 +102,7 @@ EXTRA_DIST = \ + if BUILD_ADDON_VMCORE + bin_SCRIPTS += \ + abrt-action-analyze-vmcore \ ++ abrt-action-check-oops-for-alt-component \ + abrt-action-check-oops-for-hw-error + + dist_events_DATA += \ +@@ -115,6 +117,7 @@ PYTHON_FILES += \ + EXTRA_DIST += \ + analyze_VMcore.xml.in \ + abrt-action-analyze-vmcore \ ++ abrt-action-check-oops-for-alt-component \ + abrt-action-check-oops-for-hw-error + endif + +diff --git a/src/plugins/abrt-action-check-oops-for-alt-component.in b/src/plugins/abrt-action-check-oops-for-alt-component.in +new file mode 100644 +index 0000000..3dce42e +--- /dev/null ++++ b/src/plugins/abrt-action-check-oops-for-alt-component.in +@@ -0,0 +1,93 @@ ++#!/usr/bin/python3 -u ++ ++import sys ++import os ++import locale ++import gettext ++import hashlib ++import re ++ ++GETTEXT_PROGNAME = "abrt" ++ ++_ = gettext.lgettext ++ ++tags = [ ++"WARNING:", ++"[ER]IP[^:]", ++" \[<[a-f0-9]{8,16}>\]" ++] ++ ++checks = [ ++ ("i915", "xorg-x11-drv-intel"), ++ ("nouveau", "xorg-x11-drv-nouveau"), ++ ("radeon", "xorg-x11-drv-ati"), ++ ("qxl", "xorg-x11-drv-qxl"), ++] ++ ++def check_tag(line): ++ for tag in tags: ++ if re.match(tag, line) is not None: ++ for (mod, component) in checks: ++ if re.search(mod, line) is not None: ++ return component ++ return None ++ ++def get_new_component(filename): ++ try: ++ f = open(filename, "r") ++ except IOError as e: ++ return None ++ for line in f: ++ c = check_tag(line) ++ if c is not None: ++ f.close() ++ return c ++ f.close() ++ return None ++ ++def open_or_die(filename, mode): ++ try: ++ f = open(filename, mode) ++ except IOError as e: ++ sys.stderr.write(str(e) + "\n") ++ sys.exit(1) ++ return f ++ ++ ++if __name__ == "__main__": ++ try: ++ locale.setlocale(locale.LC_ALL, "") ++ except locale.Error: ++ os.environ['LC_ALL'] = 'C' ++ locale.setlocale(locale.LC_ALL, "") ++ ++ # Defeat "AttributeError: 'module' object has no attribute 'nl_langinfo'" ++ try: ++ gettext.bind_textdomain_codeset(GETTEXT_PROGNAME, ++ locale.nl_langinfo(locale.CODESET)) ++ except AttributeError: ++ pass ++ ++ gettext.bindtextdomain(GETTEXT_PROGNAME, '/usr/share/locale') ++ gettext.textdomain(GETTEXT_PROGNAME) ++ ++ # ++ # Certain drivers are in the kernel but need to be tracked separtely ++ # in other components. This fixes those components. ++ # ++ ++ new_component = get_new_component("backtrace") ++ if new_component is None: ++ sys.exit(0) ++ ++ print("Oops looks like a problem in kernel module, new component {0}" ++ .format(new_component)) ++ ++ f = open_or_die("component", "w") ++ f.write(new_component) ++ f.close() ++ ++ # keep kernel maint in the loop even if the component gets changed ++ f = open_or_die("extra-cc", "w") ++ f.write("kernel-maint@redhat.com") ++ f.close() +diff --git a/src/plugins/koops_event.conf b/src/plugins/koops_event.conf +index a811077..2379d7d 100644 +--- a/src/plugins/koops_event.conf ++++ b/src/plugins/koops_event.conf +@@ -8,6 +8,9 @@ EVENT=post-create type=Kerneloops + abrt-action-check-oops-for-hw-error + fi + { ++ abrt-action-check-oops-for-alt-component || true ++ } && ++ { + # run abrt-action-analyze-oops only if check-hw-error didn't create the + # required files + if test ! -f uuid -a ! -f duphash; then +diff --git a/src/plugins/vmcore_event.conf b/src/plugins/vmcore_event.conf +index 43fa7f0..6870332 100644 +--- a/src/plugins/vmcore_event.conf ++++ b/src/plugins/vmcore_event.conf +@@ -29,6 +29,7 @@ EVENT=post-create type=vmcore + # Do not fail the event (->do not delete problem dir) + # if check-oops-for-hw-error exits nonzero: + { abrt-action-check-oops-for-hw-error || true; } ++ { abrt-action-check-oops-for-alt-component || true; } + + # analyze + EVENT=analyze_VMcore type=vmcore +-- +2.4.3 + diff --git a/0007-ccpp-do-not-crash-if-generate_core_backtrace-fails.patch b/0007-ccpp-do-not-crash-if-generate_core_backtrace-fails.patch new file mode 100644 index 0000000..811acf1 --- /dev/null +++ b/0007-ccpp-do-not-crash-if-generate_core_backtrace-fails.patch @@ -0,0 +1,29 @@ +From 96c50b9c18aabf675e23f6df3ec584610ae5019a Mon Sep 17 00:00:00 2001 +From: Jakub Filak +Date: Fri, 17 Jul 2015 10:25:50 +0200 +Subject: [PATCH] ccpp: do not crash if generate_core_backtrace fails + +Add a missing return statement in the error code execution path. + +Related: rhbz#1243791 + +Signed-off-by: Jakub Filak +--- + src/hooks/abrt-hook-ccpp.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/hooks/abrt-hook-ccpp.c b/src/hooks/abrt-hook-ccpp.c +index 8ccef06..809b45e 100644 +--- a/src/hooks/abrt-hook-ccpp.c ++++ b/src/hooks/abrt-hook-ccpp.c +@@ -426,6 +426,7 @@ static void create_core_backtrace(pid_t tid, const char *executable, int signal_ + { + log("Failed to create core_backtrace: %s", error_message); + free(error_message); ++ return; + } + + dd_save_text(dd, FILENAME_CORE_BACKTRACE, core_bt); +-- +2.4.3 + diff --git a/0008-applet-do-not-crash-if-the-new-problem-has-no-comman.patch b/0008-applet-do-not-crash-if-the-new-problem-has-no-comman.patch new file mode 100644 index 0000000..f820d9a --- /dev/null +++ b/0008-applet-do-not-crash-if-the-new-problem-has-no-comman.patch @@ -0,0 +1,32 @@ +From cdc5824e4488d419616cdfaa87ac5f6cf2a4dfea Mon Sep 17 00:00:00 2001 +From: Jakub Filak +Date: Fri, 17 Jul 2015 10:42:01 +0200 +Subject: [PATCH] applet: do not crash if the new problem has no command_line + +Related: rhbz#1243791 + +Signed-off-by: Jakub Filak +--- + src/applet/applet.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/src/applet/applet.c b/src/applet/applet.c +index 296e1b4..5bdedc1 100644 +--- a/src/applet/applet.c ++++ b/src/applet/applet.c +@@ -661,7 +661,11 @@ static void notify_problem_list(GList *problems) + app = problem_create_app_from_env (problem_info_get_env(pi), problem_info_get_pid(pi)); + + if (!app) +- app = problem_create_app_from_cmdline (problem_info_get_command_line(pi)); ++ { ++ const char *const cmd_line = problem_info_get_command_line(pi); ++ if (cmd_line != NULL) ++ app = problem_create_app_from_cmdline(cmd_line); ++ } + + /* For each problem we'll need to know: + * - Whether or not the crash happened in an “app” +-- +2.4.3 + diff --git a/abrt.spec b/abrt.spec index 4f6677e..985139d 100644 --- a/abrt.spec +++ b/abrt.spec @@ -43,13 +43,13 @@ %define docdirversion -%{version} %endif -%define libreport_ver 2.6.1 +%define libreport_ver 2.6.2 %define satyr_ver 0.19 Summary: Automatic bug detection and reporting tool Name: abrt Version: 2.6.1 -Release: 1%{?dist} +Release: 2%{?dist} License: GPLv2+ Group: Applications/System URL: https://abrt.readthedocs.org/ @@ -59,6 +59,14 @@ Patch0: disable-OpenGPGCheck-in-Fedora-Rawhide.patch # git format-patch %%{Version} --topo-order -N -M; # i=1; for p in `ls 0*.patch`; do printf "Patch%04d: %s\n" $i $p; ((i++)); done +Patch0001: 0001-cli-enable-authetication-for-all-commands.patch +Patch0002: 0002-cli-remove-useless-code-from-print_crash.patch +Patch0003: 0003-cli-use-internal-command-impl-in-the-command-process.patch +Patch0004: 0004-a-dump-oops-allow-update-the-problem-if-more-then-on.patch +Patch0005: 0005-abrtd-de-prioritize-post-create-event-scripts.patch +Patch0006: 0006-abrt-Fixup-component-of-select-kernel-backtraces.patch +Patch0007: 0007-ccpp-do-not-crash-if-generate_core_backtrace-fails.patch +Patch0008: 0008-applet-do-not-crash-if-the-new-problem-has-no-comman.patch # '%%autosetup -S git' -> git BuildRequires: git @@ -470,7 +478,7 @@ to the shell # doesn't allow us to create a new file within a patch, so we have to use # 'git am' (see /usr/lib/rpm/macros for more details) #%%define __scm_apply_git(qp:m:) %%{__git} am -%define __scm_apply_git(qp:m:) %{__git} am --exclude doc/design --exclude doc/project/abrt.tex +%define __scm_apply_git(qp:m:) %{__git} am --exclude doc/design --exclude doc/project/abrt.tex --exclude .gitignore --exclude abrt.spec.in %autosetup -S git %build @@ -935,6 +943,7 @@ killall abrt-dbus >/dev/null 2>&1 || : %{_sbindir}/abrt-harvest-vmcore %{_bindir}/abrt-action-analyze-vmcore %{_bindir}/abrt-action-check-oops-for-hw-error +%{_bindir}/abrt-action-check-oops-for-alt-component %{_mandir}/man1/abrt-harvest-vmcore.1* %{_mandir}/man5/abrt-vmcore.conf.5* %{_mandir}/man1/abrt-action-analyze-vmcore.1* @@ -1045,6 +1054,15 @@ killall abrt-dbus >/dev/null 2>&1 || : %config(noreplace) %{_sysconfdir}/profile.d/abrt-console-notification.sh %changelog +* Tue Jul 21 2015 Jakub Filak 2.6.1-2 +- applet: do not crash if the new problem has no command_line +- ccpp: do not crash if generate_core_backtrace fails +- abrt: Fixup component of select kernel backtraces +- abrtd: de-prioritize post-create event scripts +- a-dump-oops: allow update the problem, if more then one oops found +- cli: enable authetication for all commands +- Resolves: #1236422, #1243791 + * Fri Jul 03 2015 Matej Habrnal 2.6.1-1 - keep the polkit authorization for all clients - enable polkit authentication on command line