From 09b147c43643b706b87074917a2a4d60cf3fbe0a Mon Sep 17 00:00:00 2001 From: Arjan van de Ven Date: Tue, 20 Jan 2009 08:20:25 -0800 Subject: [PATCH] fixes --- Makefile | 4 +- core.c | 20 --- corewatcher-applet.c | 62 ++++---- corewatcher.c | 13 +- corewatcher.conf | 35 +++++ corewatcher.h | 7 +- dmesg.c | 409 --------------------------------------------------- find_file.c | 5 +- submit.c | 24 +-- 9 files changed, 88 insertions(+), 491 deletions(-) delete mode 100644 core.c create mode 100644 corewatcher.conf delete mode 100644 dmesg.c diff --git a/Makefile b/Makefile index d811cd8..c38205d 100644 --- a/Makefile +++ b/Makefile @@ -29,8 +29,8 @@ noui: corewatcher corewatcher.8.gz $(CC) $(CFLAGS) $(MY_CFLAGS) -c -o $@ $< -corewatcher: corewatcher.o submit.o dmesg.o configfile.o corewatcher.h - gcc corewatcher.o submit.o dmesg.o configfile.o $(LDF_D) -o corewatcher +corewatcher: corewatcher.o submit.o coredump.o configfile.o find_file.o corewatcher.h + gcc corewatcher.o submit.o coredump.o configfile.o find_file.o $(LDF_D) -o corewatcher @(cd po/ && $(MAKE)) corewatcher-applet: corewatcher-applet.o diff --git a/core.c b/core.c deleted file mode 100644 index 4656962..0000000 --- a/core.c +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Core dump watcher & collector - * - * (C) 2009 Intel Corporation - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 3 of the license. - */ -#include - -int bar(char *foo) -{ - *foo = 0; -} -void main() -{ - char *foo = NULL; - bar(foo); -} \ No newline at end of file diff --git a/corewatcher-applet.c b/corewatcher-applet.c index 3f07f6c..349cdf3 100644 --- a/corewatcher-applet.c +++ b/corewatcher-applet.c @@ -76,7 +76,7 @@ static void write_config(char *permission) FILE *file; char filename[2*PATH_MAX]; - sprintf(filename, "%s/.kerneloops", getenv("HOME")); + sprintf(filename, "%s/.corewatcher", getenv("HOME")); file = fopen(filename, "w"); if (!file) { printf("error is %s \n", strerror(errno)); @@ -93,8 +93,8 @@ static void write_config(char *permission) static void send_permission(char *answer) { DBusMessage *message; - message = dbus_message_new_signal("/org/kerneloops/submit/permission", - "org.kerneloops.submit.permission", answer); + message = dbus_message_new_signal("/org/corewatcher/submit/permission", + "org.corewatcher.submit.permission", answer); dbus_connection_send(bus, message, NULL); dbus_message_unref(message); detail_file_name = NULL; @@ -229,11 +229,11 @@ static void detail_action(NotifyNotification __unused *notify, static void got_a_message(void) { - char *summary = _("Your system had a kernel failure"); + char *summary = _("Your system had an application failure"); char *message = _("There is diagnostic information available for this failure." - " Do you want to submit this information to the www.kerneloops.org" - " website for use by the Linux kernel developers?\n"); + " Do you want to submit this information to the www.corewatcher.org" + " website for use by the Moblin developers?\n"); NotifyActionCallback callback = notify_action; @@ -241,7 +241,7 @@ static void got_a_message(void) close_notification(); notify = notify_notification_new(summary, message, - "/usr/share/kerneloops/icon.png", NULL); + "/usr/share/corewatcher/icon.png", NULL); notify_notification_set_timeout(notify, 0); notify_notification_set_urgency(notify, NOTIFY_URGENCY_CRITICAL); @@ -282,16 +282,16 @@ static void sent_an_oops(void) char *summary = _("Kernel bug diagnostic information sent"); char *message = NULL; char *message_1 = - _("Diagnostic information from your Linux kernel has been " - "sent to www.kerneloops.org " - "for the Linux kernel developers to work on. \n" - "Thank you for contributing to improve the quality of the Linux kernel.\n"); + _("Diagnostic information from your application has been " + "sent to www.corewatcher.org " + "for the Moblin developers to work on. \n" + "Thank you for contributing to improve the quality of the Moblin distribution.\n"); char *message_2 = - _("Diagnostic information from your Linux kernel has been " - "sent to www.kerneloops.org " - "for the Linux kernel developers to work on. \n" - "Thank you for contributing to improve the quality of the Linux kernel.\n" + _("Diagnostic information from your application has been " + "sent to www.corewatcher.org " + "for the Moblin developers to work on. \n" + "Thank you for contributing to improve the quality of the Moblin distribution.\n" "You can view your submitted oops here\n"); NotifyActionCallback callback = notify_action; @@ -307,7 +307,7 @@ static void sent_an_oops(void) url_to_oops[0] = 0; notify = notify_notification_new(summary, message, - "/usr/share/kerneloops/icon.png", NULL); + "/usr/share/corewatcher/icon.png", NULL); notify_notification_set_timeout(notify, 5000); notify_notification_set_urgency(notify, NOTIFY_URGENCY_LOW); @@ -347,8 +347,8 @@ static void got_an_url(DBusMessage *message) static void trigger_daemon(void) { DBusMessage *message; - message = dbus_message_new_signal("/org/kerneloops/submit/ping", - "org.kerneloops.submit.ping", "ping"); + message = dbus_message_new_signal("/org/corewatcher/submit/ping", + "org.corewatcher.submit.ping", "ping"); dbus_connection_send(bus, message, NULL); dbus_message_unref(message); } @@ -369,7 +369,7 @@ static DBusHandlerResult dbus_gotmessage(DBusConnection __unused *connection, } /* check if it's the daemon that asks for permission */ if (dbus_message_is_signal(message, - "org.kerneloops.submit.permission", "ask")) { + "org.corewatcher.submit.permission", "ask")) { if (user_preference > 0) { /* the user / config file says "always" */ @@ -390,7 +390,7 @@ static DBusHandlerResult dbus_gotmessage(DBusConnection __unused *connection, } /* check if it's the daemon that asks for permission */ if (dbus_message_is_signal(message, - "org.kerneloops.submit.sent", "sent")) { + "org.corewatcher.submit.sent", "sent")) { gtk_status_icon_set_visible(statusicon, TRUE); sent_an_oops(); @@ -399,7 +399,7 @@ static DBusHandlerResult dbus_gotmessage(DBusConnection __unused *connection, } /* check if it's the daemon that asks for permission */ if (dbus_message_is_signal(message, - "org.kerneloops.submit.url", "url")) { + "org.corewatcher.submit.url", "url")) { got_an_url(message); return DBUS_HANDLER_RESULT_HANDLED; @@ -408,7 +408,7 @@ static DBusHandlerResult dbus_gotmessage(DBusConnection __unused *connection, } /* - * read the ~/.kerneloops config file to see if the user pressed + * read the ~/.corewatcher config file to see if the user pressed * "always" or "never" before, and then honor that. */ static void read_config(void) @@ -417,7 +417,7 @@ static void read_config(void) size_t dummy; FILE *file; char *line = NULL; - sprintf(filename, "%s/.kerneloops", getenv("HOME")); + sprintf(filename, "%s/.corewatcher", getenv("HOME")); file = fopen(filename, "r"); if (!file) return; @@ -443,8 +443,8 @@ int main(int argc, char *argv[]) /* Initialize translation stuff */ setlocale(LC_ALL, ""); - bindtextdomain("kerneloops", "/usr/share/locale"); - textdomain("kerneloops"); + bindtextdomain("corewatcher", "/usr/share/locale"); + textdomain("corewatcher"); gtk_init(&argc, &argv); @@ -469,19 +469,19 @@ int main(int argc, char *argv[]) /* hook dbus into the main loop */ dbus_connection_setup_with_g_main(bus, NULL); - statusicon = gtk_status_icon_new_from_file("/usr/share/kerneloops/icon.png"); + statusicon = gtk_status_icon_new_from_file("/usr/share/corewatcher/icon.png"); - gtk_status_icon_set_tooltip(statusicon, _("kerneloops client")); + gtk_status_icon_set_tooltip(statusicon, _("corewatcher client")); - notify_init("kerneloops-ui"); + notify_init("corewatcher-ui"); /* by default, don't show our icon */ gtk_status_icon_set_visible(statusicon, FALSE); /* set the dbus message to listen for */ - dbus_bus_add_match(bus, "type='signal',interface='org.kerneloops.submit.permission'", &error); - dbus_bus_add_match(bus, "type='signal',interface='org.kerneloops.submit.sent'", &error); - dbus_bus_add_match(bus, "type='signal',interface='org.kerneloops.submit.url'", &error); + dbus_bus_add_match(bus, "type='signal',interface='org.corewatcher.submit.permission'", &error); + dbus_bus_add_match(bus, "type='signal',interface='org.corewatcher.submit.sent'", &error); + dbus_bus_add_match(bus, "type='signal',interface='org.corewatcher.submit.url'", &error); dbus_connection_add_filter(bus, dbus_gotmessage, NULL, NULL); /* diff --git a/corewatcher.c b/corewatcher.c index b972e29..d41a93e 100644 --- a/corewatcher.c +++ b/corewatcher.c @@ -190,24 +190,13 @@ int main(int argc, char**argv) /* during boot... don't go too fast and slow the system down */ if (!testmode) sleep(10); - scan_filename("/var/log/messages", 1); - - if (argc > 2 && strstr(argv[1], "--file")) - scan_filename(argv[2], 1); - - if (testmode && argc > 2) { - int q; - for (q = 2; q < argc; q++) { - printf("Scanning %s\n", argv[q]); - scan_filename(argv[q], 0); - } - } if (testmode) { g_main_loop_unref(loop); dbus_bus_remove_match(bus, "type='signal',interface='org.corewatcher.submit.ping'", &error); dbus_bus_remove_match(bus, "type='signal',interface='org.corewatcher.submit.permission'", &error); free(submit_url); + printf("Exiting from testmode\n"); return EXIT_SUCCESS; } diff --git a/corewatcher.conf b/corewatcher.conf new file mode 100644 index 0000000..09e7f7d --- /dev/null +++ b/corewatcher.conf @@ -0,0 +1,35 @@ +# +# Configuration file for the corewatcher.org kernel crash collector +# + +# +# Set the following variable to "yes" if you want to automatically +# submit your oopses to the database for use by your distribution or the +# Linux kernel developers +# +# +# PRIVACY NOTE +# Enabling this option will cause your system to submit certain kernel +# output to the corewatcher.org website, where it will be available via +# this website to developers and everyone else. +# The submitted info are so-called "oopses", kernel crash signature. +# However, due to the nature of oopses, it may happen that a few +# surrounding lines of the oops in the "dmesg" are being sent together +# with the oops. +# +# Default is "ask" which uses a UI application t ask the user for permission +# +allow-submit = ask + +# +# Set the following variable to "yes" if you want to allow your +# Linux distribution vendor to pass the oops on to the central corewatcher.org +# database as used by the Linux kernel developers +# +allow-pass-on = yes + +# +# URL for submitting the oopses +# + +submit-url = http://submit.corewatcher.org/submitoops.php diff --git a/corewatcher.h b/corewatcher.h index b2e0ea3..8dece06 100644 --- a/corewatcher.h +++ b/corewatcher.h @@ -1,7 +1,7 @@ /* * Copyright 2007, Intel Corporation * - * This file is part of kerneloops.org + * This file is part of corewatcher.org * * This program file is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the @@ -30,12 +30,11 @@ #define barrier() __asm__ __volatile__("": : :"memory") #define __unused __attribute__ ((__unused__)) -extern void queue_oops(char *oops); +extern void queue_backtrace(char *oops); extern void submit_queue(void); extern void clear_queue(void); extern int scan_dmesg(void * unused); -extern void scan_filename(char *filename, int issyslog); extern void read_config_file(char *filename); extern void ask_permission(void); @@ -49,6 +48,8 @@ extern char *submit_url; extern int testmode; extern int pinged; +extern char *find_executable(char *fragment); +extern char *find_coredump(char *corefile); #endif diff --git a/dmesg.c b/dmesg.c deleted file mode 100644 index ee01d22..0000000 --- a/dmesg.c +++ /dev/null @@ -1,409 +0,0 @@ -#define _GNU_SOURCE -/* - * Copyright 2007, Intel Corporation - * - * This file is part of corewatcher.org - * - * This program file is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the - * Free Software Foundation; version 2 of the License. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program in a file named COPYING; if not, write to the - * Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301 USA - * - * Authors: - * Arjan van de Ven - */ - -#include -#include -#include -#include -#include - -#include -#include -#include - -#include "corewatcher.h" - - -static char **linepointer; - -static char *linelevel; -static int linecount; - -#define MAX(A,B) ((A) > (B) ? (A) : (B)) - - -/* - * This function splits the dmesg buffer data into lines - * (null terminated). The linepointer array is assumed to be - * allocated already. - */ -static void fill_linepointers(char *buffer, int remove_syslog) -{ - char *c; - linecount = 0; - c = buffer; - while (c) { - int len = 0; - char *c9; - - c9 = strchr(c, '\n'); - if (c9) - len = c9 - c; - - /* in /var/log/messages, we need to strip the first part off, upto the 3rd ':' */ - if (remove_syslog) { - char *c2; - - /* skip non-kernel lines */ - c2 = memmem(c, len, "kernel:", 7); - if (!c2) - c2 = memmem(c, len, "corewatcher:", 11); - if (!c2) { - c2 = c9; - if (c2) { - c = c2 + 1; - continue; - } else - break; - } - c = strchr(c, ':'); - if (!c) - break; - c++; - c = strchr(c, ':'); - if (!c) - break; - c++; - c = strchr(c, ':'); - if (!c) - break; - c++; - if (*c) - c++; - } - - linepointer[linecount] = c; - linelevel[linecount] = 0; - /* store and remove kernel log level */ - if (*c == '<' && *(c+2) == '>') { - linelevel[linecount] = *(c+1); - c = c + 3; - linepointer[linecount] = c; - } - /* remove jiffies time stamp counter if present */ - if (*c == '[') { - char *c2, *c3; - c2 = strchr(c, '.'); - c3 = strchr(c, ']'); - if (c2 && c3 && (c2 < c3) && (c3-c) < 14 && (c2-c) < 8) { - c = c3+1; - if (*c == ' ') - c++; - linepointer[linecount] = c; - } - } - - c = strchr(c, '\n'); /* turn the \n into a string termination */ - if (c) { - *c = 0; - c = c+1; - } - - /* if we see our own marker, we know we submitted everything upto here already */ - if (strstr(linepointer[linecount], "www.corewatcher.org")) { - linecount = 0; - linepointer[0] = NULL; - } - linecount++; - } -} - - -/* - * extract_oops tries to find oops signatures in a log - */ -static void extract_oops(char *buffer, size_t buflen, int remove_syslog) -{ - int i; - char prevlevel = 0; - int oopsstart = -1; - int oopsend; - int inbacktrace = 0; - - linepointer = calloc(buflen+1, sizeof(char*)); - if (!linepointer) - return; - linelevel = calloc(buflen+1, sizeof(char)); - if (!linelevel) { - free(linepointer); - linepointer = NULL; - return; - } - - fill_linepointers(buffer, remove_syslog); - - oopsend = linecount; - - i = 0; - while (i < linecount) { - char *c = linepointer[i]; - - if (c == NULL) { - i++; - continue; - } - if (oopsstart < 0) { - /* find start-of-oops markers */ - if (strstr(c, "general protection fault:")) - oopsstart = i; - if (strstr(c, "BUG:")) - oopsstart = i; - if (strstr(c, "kernel BUG at")) - oopsstart = i; - if (strstr(c, "do_IRQ: stack overflow:")) - oopsstart = i; - if (strstr(c, "RTNL: assertion failed")) - oopsstart = i; - if (strstr(c, "Eeek! page_mapcount(page) went negative!")) - oopsstart = i; - if (strstr(c, "near stack overflow (cur:")) - oopsstart = i; - if (strstr(c, "double fault:")) - oopsstart = i; - if (strstr(c, "Badness at")) - oopsstart = i; - if (strstr(c, "NETDEV WATCHDOG")) - oopsstart = i; - if (strstr(c, "WARNING:") && - !strstr(c, "appears to be on the same physical disk")) - oopsstart = i; - if (strstr(c, "Unable to handle kernel")) - oopsstart = i; - if (strstr(c, "sysctl table check failed")) - oopsstart = i; - if (strstr(c, "------------[ cut here ]------------")) - oopsstart = i; - if (strstr(c, "list_del corruption.")) - oopsstart = i; - if (strstr(c, "list_add corruption.")) - oopsstart = i; - if (strstr(c, "Oops:") && i >= 3) - oopsstart = i-3; - if (oopsstart >= 0 && testmode) { - printf("Found start of oops at line %i\n", oopsstart); - printf(" start line is -%s-\n", linepointer[oopsstart]); - if (oopsstart != i) - printf(" trigger line is -%s-\n", c); - } - - /* try to find the end marker */ - if (oopsstart >= 0) { - int i2; - i2 = i+1; - while (i2 < linecount && i2 < (i+50)) { - if (strstr(linepointer[i2], "---[ end trace")) { - inbacktrace = 1; - i = i2; - break; - } - i2++; - } - } - } - - /* a calltrace starts with "Call Trace:" or with the " [<.......>] function+0xFF/0xAA" pattern */ - if (oopsstart >= 0 && strstr(linepointer[i], "Call Trace:")) - inbacktrace = 1; - - else if (oopsstart >= 0 && inbacktrace == 0 && strlen(linepointer[i]) > 8) { - char *c1, *c2, *c3; - c1 = strstr(linepointer[i], ">]"); - c2 = strstr(linepointer[i], "+0x"); - c3 = strstr(linepointer[i], "/0x"); - if (linepointer[i][0] == ' ' && linepointer[i][1] == '[' && linepointer[i][2] == '<' && c1 && c2 && c3) - inbacktrace = 1; - } else - - /* try to see if we're at the end of an oops */ - - if (oopsstart >= 0 && inbacktrace > 0) { - char c2, c3; - c2 = linepointer[i][0]; - c3 = linepointer[i][1]; - - /* line needs to start with " [" or have "] ["*/ - if ((c2 != ' ' || c3 != '[') && - strstr(linepointer[i], "] [") == NULL && - strstr(linepointer[i], "--- Exception") == NULL && - strstr(linepointer[i], " LR =") == NULL && - strstr(linepointer[i], "<#DF>") == NULL && - strstr(linepointer[i], "") == NULL && - strstr(linepointer[i], "") == NULL && - strstr(linepointer[i], "<>") == NULL) - oopsend = i-1; - - /* oops lines are always more than 8 long */ - if (strlen(linepointer[i]) < 8) - oopsend = i-1; - /* single oopses are of the same loglevel */ - if (linelevel[i] != prevlevel) - oopsend = i-1; - /* The Code: line means we're done with the backtrace */ - if (strstr(linepointer[i], "Code:") != NULL) - oopsend = i; - if (strstr(linepointer[i], "Instruction dump::") != NULL) - oopsend = i; - /* if a new oops starts, this one has ended */ - if (strstr(linepointer[i], "WARNING:") != NULL && oopsstart != i) - oopsend = i-1; - if (strstr(linepointer[i], "Unable to handle") != NULL && oopsstart != i) - oopsend = i-1; - /* kernel end-of-oops marker */ - if (strstr(linepointer[i], "---[ end trace") != NULL) - oopsend = i; - - if (oopsend <= i) { - int q; - int len; - char *oops; - - len = 2; - for (q = oopsstart; q <= oopsend; q++) - len += strlen(linepointer[q])+1; - - oops = calloc(len, 1); - - for (q = oopsstart; q <= oopsend; q++) { - strcat(oops, linepointer[q]); - strcat(oops, "\n"); - } - /* too short oopses are invalid */ - if (strlen(oops) > 100) - queue_oops(oops); - oopsstart = -1; - inbacktrace = 0; - oopsend = linecount; - free(oops); - } - } - prevlevel = linelevel[i]; - i++; - if (oopsstart > 0 && i-oopsstart > 50) { - oopsstart = -1; - inbacktrace = 0; - oopsend = linecount; - } - if (oopsstart > 0 && !inbacktrace && i-oopsstart > 30) { - oopsstart = -1; - inbacktrace = 0; - oopsend = linecount; - } - } - if (oopsstart >= 0) { - char *oops; - int len; - int q; - - oopsend = i-1; - - len = 2; - while (oopsend > 0 && linepointer[oopsend] == NULL) - oopsend--; - for (q = oopsstart; q <= oopsend; q++) - len += strlen(linepointer[q])+1; - - oops = calloc(len, 1); - - for (q = oopsstart; q <= oopsend; q++) { - strcat(oops, linepointer[q]); - strcat(oops, "\n"); - } - /* too short oopses are invalid */ - if (strlen(oops) > 100) - queue_oops(oops); - oopsstart = -1; - inbacktrace = 0; - oopsend = linecount; - free(oops); - } - free(linepointer); - free(linelevel); - linepointer = NULL; - linelevel = NULL; -} - -int scan_dmesg(void __unused *unused) -{ - char *buffer; - - buffer = calloc(getpagesize()+1, 1); - - syscall(__NR_syslog, 3, buffer, getpagesize()); - extract_oops(buffer, strlen(buffer), 0); - free(buffer); - if (opted_in >= 2) - submit_queue(); - else if (opted_in >= 1) - ask_permission(); - return 1; -} - -void scan_filename(char *filename, int issyslog) -{ - char *buffer; - struct stat statb; - FILE *file; - int ret; - size_t buflen; - - memset(&statb, 0, sizeof(statb)); - - ret = stat(filename, &statb); - - if (statb.st_size < 1 || ret != 0) - return; - - /* - * in theory there's a race here, since someone could spew - * to /var/log/messages before we read it in... we try to - * deal with it by reading at most 1023 bytes extra. If there's - * more than that.. any oops will be in dmesg anyway. - * Do not try to allocate an absurt amount of memory; ignore - * older log messages because they are unlikely to have - * sufficiently recent data to be useful. 32MB is more - * than enough; it's not worth looping through more log - * if the log is larger than that. - */ - buflen = MAX(statb.st_size+1024, 32*1024*1024); - buffer = calloc(buflen, 1); - assert(buffer != NULL); - - file = fopen(filename, "rm"); - if (!file) { - free(buffer); - return; - } - fseek(file, -buflen, SEEK_END); - ret = fread(buffer, 1, buflen-1, file); - fclose(file); - - if (ret > 0) - extract_oops(buffer, buflen-1, issyslog); - free(buffer); - if (opted_in >= 2) - submit_queue(); - else if (opted_in >= 1) - ask_permission(); -} diff --git a/find_file.c b/find_file.c index dfb6360..42e047e 100644 --- a/find_file.c +++ b/find_file.c @@ -18,14 +18,15 @@ #define PATH_MAX 4096 #endif -#include "coredumper.h" +#include "corewatcher.h" char *find_executable(char *fragment) { char *path, *c1, *c2; - path = strdup(getenv("PATH")); static char filename[PATH_MAX*2]; + path = strdup(getenv("PATH")); + if (strlen(fragment) < 3) return NULL; diff --git a/submit.c b/submit.c index 35df92e..a0f5baf 100644 --- a/submit.c +++ b/submit.c @@ -63,7 +63,7 @@ struct oops { * we later find our marker indicating we submitted everything so far already * previously. */ -static struct oops *queued_oopses; +static struct oops *queued_backtraces; static int newoops; /* For communicating details to the applet, we write the @@ -84,7 +84,7 @@ static unsigned int checksum(char *ptr) return temp; } -void queue_oops(char *oops) +void queue_backtrace(char *oops) { int i; unsigned int sum; @@ -104,10 +104,10 @@ void queue_oops(char *oops) new = malloc(sizeof(struct oops)); memset(new, 0, sizeof(struct oops)); - new->next = queued_oopses; + new->next = queued_backtraces; new->checksum = sum; new->text = strdup(oops); - queued_oopses = new; + queued_backtraces = new; newoops = 1; } @@ -131,7 +131,7 @@ void write_detail_file(void) */ fchmod(temp_fileno, 0644); tmpf = fdopen(temp_fileno, "w"); - oops = queued_oopses; + oops = queued_backtraces; while (oops) { count++; /* Users are not programmers, start at 1 */ fprintf(tmpf, "Kernel failure message %d:\n", count); @@ -158,8 +158,8 @@ static void print_queue(void) struct oops *queue; int count = 0; - queue = queued_oopses; - queued_oopses = NULL; + queue = queued_backtraces; + queued_backtraces = NULL; barrier(); oops = queue; while (oops) { @@ -215,8 +215,8 @@ void submit_queue(void) return; } - queue = queued_oopses; - queued_oopses = NULL; + queue = queued_backtraces; + queued_backtraces = NULL; barrier(); oops = queue; while (oops) { @@ -274,8 +274,8 @@ void clear_queue(void) struct oops *oops, *next; struct oops *queue; - queue = queued_oopses; - queued_oopses = NULL; + queue = queued_backtraces; + queued_backtraces = NULL; barrier(); oops = queue; while (oops) { @@ -293,7 +293,7 @@ void ask_permission(void) return; pinged = 0; newoops = 0; - if (queued_oopses) { + if (queued_backtraces) { write_detail_file(); dbus_ask_permission(detail_filename); } -- 2.7.4