summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2010-07-15 18:00:00 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2010-07-15 18:00:00 +0200
commit386765bc152c924f82e8d41fb04db88d56505605 (patch)
tree017ed8b8263c337364d61347b407d22872961dbd
parent8286fc320b1d4001c9552b5f41c86a9ff99d9737 (diff)
downloadabrt-386765bc152c924f82e8d41fb04db88d56505605.tar.gz
abrt-386765bc152c924f82e8d41fb04db88d56505605.tar.xz
abrt-386765bc152c924f82e8d41fb04db88d56505605.zip
dumpoops/KerneloopsScanner: add pid to crashdump name
Otherwise dumpoops -d cut_here.test; dumpoops -d cut_here.test; dumpoops -d cut_here.test aborts Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--lib/Plugins/KerneloopsScanner.cpp5
-rw-r--r--src/Hooks/dumpoops.cpp9
2 files changed, 11 insertions, 3 deletions
diff --git a/lib/Plugins/KerneloopsScanner.cpp b/lib/Plugins/KerneloopsScanner.cpp
index b24f2a2b..e2c9013a 100644
--- a/lib/Plugins/KerneloopsScanner.cpp
+++ b/lib/Plugins/KerneloopsScanner.cpp
@@ -118,13 +118,14 @@ void save_oops_to_debug_dump(const vector_string_t& oopsList)
unsigned countdown = 16; /* do not report hundreds of oopses */
unsigned idx = oopsList.size();
time_t t = time(NULL);
+ pid_t my_pid = getpid();
VERB1 log("Saving %u oopses as crash dump dirs", idx >= countdown ? countdown-1 : idx);
while (idx != 0 && --countdown != 0)
{
- char path[sizeof(DEBUG_DUMPS_DIR"/kerneloops-%lu-%lu") + 2 * sizeof(long)*3];
- sprintf(path, DEBUG_DUMPS_DIR"/kerneloops-%lu-%lu", (long)t, (long)idx);
+ char path[sizeof(DEBUG_DUMPS_DIR"/kerneloops-%lu-%lu-%lu") + 3 * sizeof(long)*3];
+ sprintf(path, DEBUG_DUMPS_DIR"/kerneloops-%lu-%lu-%lu", (long)t, (long)my_pid, (long)idx);
try
{
std::string oops = oopsList.at(--idx);
diff --git a/src/Hooks/dumpoops.cpp b/src/Hooks/dumpoops.cpp
index ab4b6ba3..a2d2353a 100644
--- a/src/Hooks/dumpoops.cpp
+++ b/src/Hooks/dumpoops.cpp
@@ -23,6 +23,7 @@
#include "abrtlib.h"
#include "abrt_types.h"
+#include "abrt_exception.h"
#include "KerneloopsScanner.h"
#include <dlfcn.h>
@@ -109,7 +110,13 @@ int main(int argc, char **argv)
}
if (opt_d) {
log("dumping oopses");
- save_oops_to_debug_dump(oopsList);
+ try {
+ save_oops_to_debug_dump(oopsList);
+ }
+ catch (CABRTException& e) {
+ fprintf(stderr, "Error: %s\n", e.what());
+ return 1;
+ }
}
}