Re: rasdaemon and abrt cooperation
by Denys Vlasenko
On 06/05/2013 03:25 PM, Petr Holasek wrote:
> Hi Denys,
>
> I have some ideas about rasdaemon abrt hook
> and also following questions.
>
> Feel free to stop by or ping me, when you'll
> be in office, I'll be there till ~6PM today
> and afternoon tomorrow.
Currently we use Unix domain socket at
/var/run/abrt/abrt.socket
to support creation of problem data from crashing python
applications.
The socket accepts the following HTTP requests:
DELETE <problem_dir> HTTP/1.1
PUT / HTTP/1.1
DELETE request is straightforward, and anyway, you don't need it.
PUT request has the following form:
PUT / HTTP/1.1<CR><LF>
headers<CR><LF>
<CR><LF>
name1=value1<NUL>name2=value2<NUL>...
It appears that we misunderstood HTTP protocol and we should
have used POST instead of PUT. I am going to add POST alias
which works the same as PUT, and remove PUT sometime in the future.
For now, use PUT. The URI in PUT should be just /.
The headers following PUT line are currently ignored.
The body is NUL-delimited (not newline delimited!) set
of name-value pairs which describe the problem.
You can use any names which make sense for your problem
(for example, if someone is reporting an out-of-paper
problem with a printer, sending "printer_name=FOO" would make sense).
Some names *have* to be in the problem:
type=
reason=
"type" describes what kind of the problem it is. Say, "Python"
is used by python crashes. You need to invent your own identifier(s)
for the problems you want to report. Say, "mem_error" for ECC/cache
errors, "bus_error" for PCI errors?
This field is used to differentiate abrt's response to a problem.
We don't want ECC errors reported to Bugzilla, right? :)
"reason" is a short, one-line, human-readable description of the problem,
suitable, for example, for showing in the list of problems. Examples
we currently see or use:
"<module>:ZeroDivisionError: integer division or modulo by zero"
"Segmentation fault at address 0x7ff6bf09e010"
"Process %s was killed by signal %s"
time=<unixtime in seconds> will be added automatically unless you supply it.
I looked thru the list of names we use and many don't make sense for you
(say, "uid" makes no sense for ECC errors :), but the following ones
may be useful:
architecture=<uname.machine>
comment=<long, multi-line description of the problem (if "reason" isn't enough)>
kernel=<kernel version>
cmdline=<kernel cmdline>
As I said, if you have more data to report, create your own name=value pair
to be saved.
Server will respond with
HTTP/1.1 <http_code> <CR><LF>
<CR><LF>
http_code will be 201 ("Created") on success.
Do you think you can use this interface from rasdaemon?
--
vda
10 years, 7 months
[PATCH 1/8] abrt-handle-event: free more of allocated data
by Denys Vlasenko
This patch doesn't change the logic of the program,
it only makes cleanup in is_crash_a_dup() and main()
more consistent, closing a few leaks:
* dump_dir_name is a result of realpath(), but wasn't freed.
* four instances of dd_close() are collapsed to one.
* dump_dir_name in main() also was leaking, fix it.
* printing of "DUP_OF_DIR: dir" is made simpler-looking.
Signed-off-by: Denys Vlasenko <dvlasenk(a)redhat.com>
---
src/daemon/abrt-handle-event.c | 61 +++++++++++++++++++++---------------------
1 file changed, 30 insertions(+), 31 deletions(-)
diff --git a/src/daemon/abrt-handle-event.c b/src/daemon/abrt-handle-event.c
index e4da837..ea932b2 100644
--- a/src/daemon/abrt-handle-event.c
+++ b/src/daemon/abrt-handle-event.c
@@ -219,16 +219,15 @@ static int is_crash_a_dup(const char *dump_dir_name, void *param)
struct dump_dir *dd = dd_opendir(dump_dir_name, DD_OPEN_READONLY);
if (!dd)
return 0; /* wtf? (error, but will be handled elsewhere later) */
-
+ free(analyzer);
analyzer = dd_load_text(dd, FILENAME_ANALYZER);
- /* dump_dir_name can be relative */
- dump_dir_name = realpath(dump_dir_name, NULL);
-
dup_uuid_init(dd);
dup_corebt_init(dd);
-
dd_close(dd);
+ /* dump_dir_name can be relative */
+ dump_dir_name = realpath(dump_dir_name, NULL);
+
DIR *dir = opendir(g_settings_dump_location);
if (dir == NULL)
goto end;
@@ -236,7 +235,7 @@ static int is_crash_a_dup(const char *dump_dir_name, void *param)
/* Scan crash dumps looking for a dup */
//TODO: explain why this is safe wrt concurrent runs
struct dirent *dent;
- while ((dent = readdir(dir)) != NULL)
+ while ((dent = readdir(dir)) != NULL && crash_dump_dup_name == NULL)
{
if (dot_or_dotdot(dent->d_name))
continue; /* skip "." and ".." */
@@ -244,6 +243,7 @@ static int is_crash_a_dup(const char *dump_dir_name, void *param)
if (ext && strcmp(ext, ".new") == 0)
continue; /* skip anything named "<dirname>.new" */
+ dd = NULL;
char *dump_dir_name2 = concat_path_file(g_settings_dump_location, dent->d_name);
char *dd_uid = NULL, *dd_analyzer = NULL;
@@ -258,7 +258,6 @@ static int is_crash_a_dup(const char *dump_dir_name, void *param)
dd_uid = dd_load_text_ext(dd, FILENAME_UID, DD_FAIL_QUIETLY_ENOENT);
if (strcmp(uid, dd_uid))
{
- dd_close(dd);
goto next;
}
@@ -266,36 +265,35 @@ static int is_crash_a_dup(const char *dump_dir_name, void *param)
dd_analyzer = dd_load_text_ext(dd, FILENAME_ANALYZER, DD_FAIL_QUIETLY_ENOENT);
if (strcmp(analyzer, dd_analyzer))
{
- dd_close(dd);
goto next;
}
if (dup_uuid_compare(dd)
|| dup_corebt_compare(dd)
) {
- dd_close(dd);
crash_dump_dup_name = dump_dir_name2;
+ dump_dir_name2 = NULL;
retval = 1; /* "run_event, please stop iterating" */
- goto end;
+ /* sonce crash_dump_dup_name != NULL now, we exit the loop */
}
- dd_close(dd);
next:
free(dump_dir_name2);
+ dd_close(dd);
free(dd_uid);
free(dd_analyzer);
}
closedir(dir);
end:
- free(analyzer);
+ free((char*)dump_dir_name);
return retval;
}
static char *do_log(char *log_line, void *param)
{
- /* We pipe output of events to our log (which usually
- * includes syslog). Otherwise, errors on post-create result in
+ /* We pipe output of events to our log.
+ * Otherwise, errors on post-create result in
* "Corrupted or bad dump DIR, deleting" without adequate explanation why.
*/
log("%s", log_line);
@@ -355,13 +353,21 @@ int main(int argc, char **argv)
struct run_event_state *run_state = new_run_event_state();
if (!interactive)
make_run_event_state_forwarding(run_state);
+ run_state->logging_callback = do_log;
if (post_create)
run_state->post_run_callback = is_crash_a_dup;
- run_state->logging_callback = do_log;
+
int r = run_event_on_dir_name(run_state, dump_dir_name, event_name);
+
+ free_run_event_state(run_state);
+ /* Needed only if is_crash_a_dup() was called, but harmless
+ * even if it wasn't:
+ */
+ dup_uuid_fini();
+ dup_corebt_fini();
+
if (r == 0 && run_state->children_count == 0)
error_msg_and_die("No actions are found for event '%s'", event_name);
- free_run_event_state(run_state);
//TODO: consider this case:
// new dump is created, post-create detects that it is a dup,
@@ -372,24 +378,17 @@ int main(int argc, char **argv)
/* Is crash a dup? (In this case, is_crash_a_dup() should have
* aborted "post-create" event processing as soon as it saw uuid
* and determined that there is another crash with same uuid.
- * In this case it sets state.crash_dump_dup_name)
+ * In this case it sets crash_dump_dup_name)
*/
- if (!crash_dump_dup_name)
- {
- /* No. Was there error on one of processing steps in run_event? */
- if (r != 0)
- return r; /* yes */
- }
- else
- {
+ if (crash_dump_dup_name)
error_msg_and_die("DUP_OF_DIR: %s", crash_dump_dup_name);
- }
- if (post_create)
- {
- dup_uuid_fini();
- dup_corebt_fini();
- }
+ /* Was there error on one of processing steps in run_event? */
+ if (r != 0)
+ return r; /* yes */
+
+ free(dump_dir_name);
+ dump_dir_name = NULL;
}
/* exit 0 means, that there is no duplicate of dump-dir */
--
1.8.1.4
10 years, 8 months
[ABRT PATCH] SPEC: do not require abrt-retrace-client in RHEL
by Jakub Filak
references RHBZ#917778
Signed-off-by: Jakub Filak <jfilak(a)redhat.com>
---
abrt.spec.in | 2 ++
1 file changed, 2 insertions(+)
diff --git a/abrt.spec.in b/abrt.spec.in
index 2ac2e64..71e12f0 100644
--- a/abrt.spec.in
+++ b/abrt.spec.in
@@ -122,8 +122,10 @@ Group: System Environment/Libraries
Requires: cpio
Requires: gdb >= 7.0-3
Requires: elfutils
+%if 0%{!?rhel:1}
# abrt-action-perform-ccpp-analysis wants to run analyze_RetraceServer:
Requires: %{name}-retrace-client
+%endif
Requires: %{name} = %{version}-%{release}
Requires: abrt-libs = %{version}-%{release}
--
1.8.3.1
10 years, 9 months
[SATYR PATCH] Only export symbols starting with sr_
by Martin Milata
Closes #60.
Signed-off-by: Martin Milata <mmilata(a)redhat.com>
---
lib/Makefile.am | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/Makefile.am b/lib/Makefile.am
index 1e010fc..65b0807 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -51,7 +51,7 @@ libsatyr_la_SOURCES = \
utils.c
libsatyr_la_CFLAGS = -Wall -std=gnu99 -D_GNU_SOURCE -I$(top_srcdir)/include $(GLIB_CFLAGS)
-libsatyr_la_LDFLAGS = -version-info 1:0:0 $(GLIB_LIBS)
+libsatyr_la_LDFLAGS = -version-info 1:0:0 -export-symbols-regex '^sr_' $(GLIB_LIBS)
if HAVE_LIBOPCODES
# Conditional link is required to avoid linking to a library without
--
1.8.3.1
10 years, 9 months
[LIBREPORT PATCH] add missing compiler flags for g_type_init() at the right place
by Jakub Filak
Properly fixes commit 301dc9135a6837a4e3535cb79c4afa847504e20d
Signed-off-by: Jakub Filak <jfilak(a)redhat.com>
---
src/lib/Makefile.am | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/lib/Makefile.am b/src/lib/Makefile.am
index 6266f6f..261aaf2 100644
--- a/src/lib/Makefile.am
+++ b/src/lib/Makefile.am
@@ -68,11 +68,13 @@ libreport_la_CPPFLAGS = \
-DDEFAULT_DUMP_DIR_MODE=$(DEFAULT_DUMP_DIR_MODE) \
-DDUMP_DIR_OWNED_BY_USER=$(DUMP_DIR_OWNED_BY_USER) \
$(GLIB_CFLAGS) \
+ $(GOBJECT_CFLAGS) \
-D_GNU_SOURCE
libreport_la_LDFLAGS = \
-version-info 0:1:0
libreport_la_LIBADD = \
- $(GLIB_LIBS)
+ $(GLIB_LIBS) \
+ $(GOBJECT_LIBS)
libreportconfdir = $(CONF_DIR)
dist_libreportconf_DATA = \
@@ -118,7 +120,6 @@ libreport_web_la_CPPFLAGS = \
-DPLUGINS_CONF_DIR=\"$(PLUGINS_CONF_DIR)\" \
-DEVENTS_DIR=\"$(EVENTS_DIR)\" \
$(GLIB_CFLAGS) \
- $(GOBJECT_CFLAGS) \
$(CURL_CFLAGS) \
$(PROXY_CFLAGS) \
$(LIBXML_CFLAGS) \
@@ -130,7 +131,6 @@ libreport_web_la_LDFLAGS = \
-version-info 0:1:0
libreport_web_la_LIBADD = \
$(GLIB_LIBS) \
- $(GOBJECT_LIBS) \
$(CURL_LIBS) \
$(PROXY_LIBS) \
$(LIBXML_LIBS) \
--
1.8.3.1
10 years, 9 months
[ABRT PATCH] build system: suppress "typedef locally defined but not used" warnings
by Denys Vlasenko
This is needed for builds on F18.
Signed-off-by: Denys Vlasenko <dvlasenk(a)redhat.com>
---
src/configuration-gui/Makefile.am | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/src/configuration-gui/Makefile.am b/src/configuration-gui/Makefile.am
index cf2000a..9d5ec53 100644
--- a/src/configuration-gui/Makefile.am
+++ b/src/configuration-gui/Makefile.am
@@ -4,9 +4,17 @@ libabrtconfigui_la_SOURCES = \
abrt-config-widget.c \
abrt-config-widget.h
+# G_DEFINE_TYPE(...) macros result in
+# typedef '_GStaticAssertCompileTimeAssertion_0' locally defined but not used
+# warnings on some glib versions
+# (observed on glib2-2.34.2 on F18).
+# -Wno-error=unused-local-typedefs in CPPFLAGS suppresses this warning.
+# Newer glib may have it fixed.
+
libabrtconfigui_la_CPPFLAGS = \
-I$(srcdir)/../include \
-I$(srcdir)/../lib \
+ -Wno-error=unused-local-typedefs \
$(LIBREPORT_CFLAGS) \
$(GTK_CFLAGS) \
-DABRT_UI_DIR="\"$(uidir)\"" \
@@ -25,6 +33,7 @@ bin_PROGRAMS = system-config-abrt
system_config_abrt_CPPFLAGS = \
-I$(srcdir)/../include \
-I$(srcdir)/../lib \
+ -Wno-error=unused-local-typedefs \
$(GTK_CFLAGS) \
$(LIBREPORT_CFLAGS)
--
1.8.1.4
10 years, 9 months
[ABRT PATCH] SPEC: pull RHTSupport instead of Bugzilla & uReport in RHEL
by Michal Toman
references RHBZ#917778
Signed-off-by: Michal Toman <mtoman(a)redhat.com>
---
abrt.spec.in | 14 +++++++++++---
1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/abrt.spec.in b/abrt.spec.in
index 2a073f0..2ac2e64 100644
--- a/abrt.spec.in
+++ b/abrt.spec.in
@@ -147,7 +147,9 @@ Summary: %{name}'s kerneloops addon
Group: System Environment/Libraries
Requires: curl
Requires: %{name} = %{version}-%{release}
+%if 0%{!?rhel:1}
Requires: libreport-plugin-kerneloops >= %{libreport_ver}
+%endif
Requires: abrt-libs = %{version}-%{release}
%description addon-kerneloops
@@ -232,6 +234,9 @@ Requires: abrt-addon-vmcore
Requires: abrt-addon-ccpp
Requires: abrt-addon-python
Requires: abrt-addon-xorg
+%if 0%{?rhel}
+Requires: libreport-plugin-rhtsupport >= %{libreport_ver}
+%else
Requires: abrt-retrace-client
%if %{with bodhi}
Requires: abrt-plugin-bodhi
@@ -241,6 +246,7 @@ Requires: libreport-plugin-bugzilla >= %{libreport_ver}
%endif
Requires: libreport-plugin-logger >= %{libreport_ver}
Requires: libreport-plugin-ureport >= %{libreport_ver}
+%endif
%description cli
Virtual package to install all necessary packages for usage from command line
@@ -259,13 +265,17 @@ Requires: abrt-addon-kerneloops
Requires: abrt-addon-uefioops
Requires: abrt-addon-vmcore
Requires: abrt-addon-ccpp
-Requires: abrt-retrace-client
Requires: abrt-addon-python
Requires: abrt-addon-xorg
# Default config of addon-ccpp requires gdb
Requires: gdb >= 7.0-3
Requires: abrt-gui
Requires: gnome-abrt
+%if 0%{?rhel}
+Requires: libreport-rhel >= %{libreport_ver}
+Requires: libreport-plugin-rhtsupport >= %{libreport_ver}
+%else
+Requires: abrt-retrace-client
%if %{with bodhi}
Requires: abrt-plugin-bodhi
%endif
@@ -277,8 +287,6 @@ Requires: libreport-plugin-ureport >= %{libreport_ver}
%if 0%{?fedora}
Requires: libreport-fedora >= %{libreport_ver}
%endif
-%if 0%{?rhel}
-Requires: libreport-rhel >= %{libreport_ver}
%endif
#Requires: abrt-plugin-firefox
Provides: bug-buddy
--
1.8.3.1
10 years, 9 months
[LIBREPORT PATCH 1/2] use RHTSupport in RHEL workflows
by Michal Toman
references RHBZ#917778
Signed-off-by: Michal Toman <mtoman(a)redhat.com>
---
src/workflows/workflow_RHELCCpp.xml.in | 3 +--
src/workflows/workflow_RHELKerneloops.xml.in | 2 +-
src/workflows/workflow_RHELPython.xml.in | 2 +-
src/workflows/workflow_RHELvmcore.xml.in | 3 +--
src/workflows/workflow_RHELxorg.xml.in | 2 +-
5 files changed, 5 insertions(+), 7 deletions(-)
diff --git a/src/workflows/workflow_RHELCCpp.xml.in b/src/workflows/workflow_RHELCCpp.xml.in
index 6376c5c..026062a 100644
--- a/src/workflows/workflow_RHELCCpp.xml.in
+++ b/src/workflows/workflow_RHELCCpp.xml.in
@@ -5,7 +5,6 @@
<events>
<event>collect_*</event>
- <event>analyze_CCpp</event>
- <event>report_Bugzilla</event>
+ <event>report_RHTSupport</event>
</events>
</workflow>
diff --git a/src/workflows/workflow_RHELKerneloops.xml.in b/src/workflows/workflow_RHELKerneloops.xml.in
index 0baf010..7f84822 100644
--- a/src/workflows/workflow_RHELKerneloops.xml.in
+++ b/src/workflows/workflow_RHELKerneloops.xml.in
@@ -5,6 +5,6 @@
<events>
<event>collect_*</event>
- <event>report_Bugzilla</event>
+ <event>report_RHTSupport</event>
</events>
</workflow>
diff --git a/src/workflows/workflow_RHELPython.xml.in b/src/workflows/workflow_RHELPython.xml.in
index aec8576..a0a4aeb 100644
--- a/src/workflows/workflow_RHELPython.xml.in
+++ b/src/workflows/workflow_RHELPython.xml.in
@@ -5,6 +5,6 @@
<events>
<event>collect_*</event>
- <event>report_Bugzilla</event>
+ <event>report_RHTSupport</event>
</events>
</workflow>
diff --git a/src/workflows/workflow_RHELvmcore.xml.in b/src/workflows/workflow_RHELvmcore.xml.in
index 38fdc88..31712e0 100644
--- a/src/workflows/workflow_RHELvmcore.xml.in
+++ b/src/workflows/workflow_RHELvmcore.xml.in
@@ -4,8 +4,7 @@
<_description>Process the kernel crash using the Red Hat infrastructure</_description>
<events>
- <event>analyze_VMcore</event>
<event>collect_*</event>
- <event>report_Bugzilla</event>
+ <event>report_RHTSupport</event>
</events>
</workflow>
diff --git a/src/workflows/workflow_RHELxorg.xml.in b/src/workflows/workflow_RHELxorg.xml.in
index b088b19..7dfda52 100644
--- a/src/workflows/workflow_RHELxorg.xml.in
+++ b/src/workflows/workflow_RHELxorg.xml.in
@@ -4,6 +4,6 @@
<_description>Process the X Server problem using the Red Hat infrastructure</_description>
<events>
- <event>report_Bugzilla</event>
+ <event>report_RHTSupport</event>
</events>
</workflow>
--
1.8.3.1
10 years, 9 months
[LIBREPORT PATCH] New public function create_symlink_lockfile()
by Denys Vlasenko
Was previously a static used to create .lock files
in dd_create() and dd_opendir().
While at it, fixed parsing of "time" file (time_t can be wider than long).
Signed-off-by: Denys Vlasenko <dvlasenk(a)redhat.com>
---
src/include/dump_dir.h | 5 ++++-
src/lib/dump_dir.c | 42 +++++++++++++++---------------------------
2 files changed, 21 insertions(+), 30 deletions(-)
diff --git a/src/include/dump_dir.h b/src/include/dump_dir.h
index ee883b2..b533a97 100644
--- a/src/include/dump_dir.h
+++ b/src/include/dump_dir.h
@@ -29,6 +29,9 @@
extern "C" {
#endif
+/* Utility function */
+int create_symlink_lockfile(const char *filename, const char *pid_str);
+
enum {
DD_FAIL_QUIETLY_ENOENT = (1 << 0),
DD_FAIL_QUIETLY_EACCES = (1 << 1),
@@ -45,7 +48,7 @@ struct dump_dir {
int locked;
uid_t dd_uid;
gid_t dd_gid;
- /* mode fo saved files */
+ /* mode of saved files */
mode_t mode;
time_t dd_time;
};
diff --git a/src/lib/dump_dir.c b/src/lib/dump_dir.c
index 390a4d2..1e54f1f 100644
--- a/src/lib/dump_dir.c
+++ b/src/lib/dump_dir.c
@@ -116,7 +116,7 @@ static bool exist_file_dir(const char *path)
*
* Any possible failure will be logged.
*/
-static long int parse_time_file(const char *filename)
+static time_t parse_time_file(const char *filename)
{
/* Open input file, and parse it. */
int fd = open(filename, O_RDONLY | O_NOFOLLOW);
@@ -126,7 +126,7 @@ static long int parse_time_file(const char *filename)
return -1;
}
- /* ~ maximal number of digits for positive time stamp string*/
+ /* ~ maximal number of digits for positive time stamp string */
char time_buf[sizeof(time_t) * 3 + 1];
ssize_t rdsz = read(fd, time_buf, sizeof(time_buf));
@@ -145,7 +145,7 @@ static long int parse_time_file(const char *filename)
if (rdsz == sizeof(time_buf))
{
VERB2 error_msg("File '%s' is too long to be valid unix "
- "time stamp (max size %zdB)", filename, sizeof(time_buf));
+ "time stamp (max size %u)", filename, (int)sizeof(time_buf));
return -1;
}
@@ -156,37 +156,25 @@ static long int parse_time_file(const char *filename)
rdsz--;
time_buf[rdsz] = '\0';
+ /* Note that on some architectures (x32) time_t is "long long" */
+
errno = 0; /* To distinguish success/failure after call */
char *endptr;
- long val = strtol(time_buf, &endptr, /* base */ 10);
+ long long val = strtoll(time_buf, &endptr, /* base */ 10);
+ const long long MAX_TIME_T = (1ULL << (sizeof(time_t)*8 - 1)) - 1;
/* Check for various possible errors */
- if ((errno == ERANGE && (val == LONG_MAX || val == LONG_MIN))
- || (errno != 0 && val == 0))
- {
+ if (errno
+ || (*endptr != '\0')
+ || val > MAX_TIME_T
+ || !isdigit_str(time_buf) /* this filters out "-num", " num", "" */
+ ) {
VERB2 perror_msg("File '%s' doesn't contain valid unix "
"time stamp ('%s')", filename, time_buf);
return -1;
}
- if (endptr == time_buf)
- {
- VERB2 error_msg("No digits were found in file '%s'", filename);
- return -1;
- }
-
- if (*endptr != '\0')
- {
- VERB2 error_msg("Further characters after number: '%s' in file '%s'", endptr, filename);
- return -1;
- }
-
- if (val < 0)
- {
- VERB2 error_msg("Negative time found in file '%s'", filename);
- }
-
- /* If we got here, strtol() successfully parsed a number */
+ /* If we got here, strtoll() successfully parsed a number */
return val;
}
@@ -195,7 +183,7 @@ static long int parse_time_file(const char *filename)
* 0: failed to lock (someone else has it locked)
* 1: success
*/
-static int get_and_set_lock(const char* lock_file, const char* pid)
+int create_symlink_lockfile(const char* lock_file, const char* pid)
{
while (symlink(pid, lock_file) != 0)
{
@@ -271,7 +259,7 @@ static int dd_lock(struct dump_dir *dd, unsigned sleep_usec, int flags)
retry:
while (1)
{
- int r = get_and_set_lock(lock_buf, pid_buf);
+ int r = create_symlink_lockfile(lock_buf, pid_buf);
if (r < 0)
return r; /* error */
if (r > 0)
10 years, 9 months
[LIBREPORT PATCH] add related packages version in emergency event
by Jakub Filak
This should help us with the analysis of uploaded dump directories.
Signed-off-by: Jakub Filak <jfilak(a)redhat.com>
---
src/plugins/emergencyanalysis_event.conf | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/src/plugins/emergencyanalysis_event.conf b/src/plugins/emergencyanalysis_event.conf
index e5abf7c..e3adb4d 100644
--- a/src/plugins/emergencyanalysis_event.conf
+++ b/src/plugins/emergencyanalysis_event.conf
@@ -1,2 +1,6 @@
EVENT=report_EmergencyAnalysis
- reporter-upload
+ rpm -q abrt > abrt_installed_version 2>/dev/null
+ rpm -q libreport > libreport_version 2>/dev/null
+ rpm -q satyr > satyr_version 2>/dev/null
+ EXCLUDE_FROM_REPORT="" reporter-upload
+ rm -f abrt_installed_version libreport_version satyr_version
--
1.8.3.1
10 years, 9 months