[PATCH] kerneloops reporter fails if more than crash is recorded within one second, fix that
by Denys Vlasenko
The bug is triggered by:
dumpoops -d cut_here.test; echo $?; dumpoops -d cut_here.test; echo $?; dumpoops -d cut_here.test; echo $?
Second dumpoops fails.
--
vda
diff -x '*.po' -d -urpN abrt.0/lib/Plugins/KerneloopsScanner.cpp abrt.1/lib/Plugins/KerneloopsScanner.cpp
--- abrt.0/lib/Plugins/KerneloopsScanner.cpp 2010-07-09 14:10:31.000000000 +0200
+++ abrt.1/lib/Plugins/KerneloopsScanner.cpp 2010-07-15 17:55:23.082148982 +0200
@@ -118,13 +118,14 @@ void save_oops_to_debug_dump(const vecto
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 -x '*.po' -d -urpN abrt.0/src/Hooks/dumpoops.cpp abrt.1/src/Hooks/dumpoops.cpp
--- abrt.0/src/Hooks/dumpoops.cpp 2010-06-30 13:18:39.000000000 +0200
+++ abrt.1/src/Hooks/dumpoops.cpp 2010-07-15 17:55:48.698146362 +0200
@@ -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;
+ }
}
}
13 years, 9 months
Telechargez gratuitement votre nouveau logiciel de fax-Mailing
by Profax
Votre plate forme de routage fax mailing !
Ce courriel commercial est conforme à la législation en vigueur et aux délibérations de la CNIL des 22 et 30 mars 2005 sur la prospection par courrier électronique dans le cadre professionnel. Conformément à l'article 34 de la loi 78-17 du 6 janvier mille neuf cent soixante dix huit, relative à l'informatique, aux fichiers et aux libertés, vous disposez d'un droit d'accès, de rectification des données nominatives vous concernant.
Le présent message est en parfait respect avec la déontologie et les bonnes pratiques de la communication par marketing direct électronique. Conformément à la législation en vigueur et des différents rectificatifs légaux, vous disposez d'un plein droit d'accès, de modifications ou de suppression des données personnelles vous concernant. Vous pouvez à tout moment exercer se droit sur demande écrite ou via notre espace prévu à cet effet. Conformément à la loi Informatique et libertés, vous pouvez vous désabonner à tout moment. Pour toute autre demande n'hésitez pas à nous écrire (Afin de faciliter le traitement de votre envoi, précisez votre demande dans l'objet et le corps du message.
Pour ne plus figurer sur nos listes de diffusion : Cliquez-ici.
Si vous souhaitez vous désabonner, recopiez cette adresse dans la barre d'adresse de votre navigateur :
http://www.communication-joker.com/u-1.1.php?param=3Rbi_1IvEkRQjb1KxE:8Zb...
13 years, 9 months