X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fecrash.c;h=ec91a02e4418bc166e9e0289fc5834526b7cf8cc;hb=82adc0fcf4da8e91ec4ff11f1a0f9d96449f85ad;hp=6a8ef3a0c1ce905151df7664d5f85ed6ec514474;hpb=cbf80388df51025d65f04fb7b8feccdb7db09ff1;p=citadel.git diff --git a/citadel/ecrash.c b/citadel/ecrash.c index 6a8ef3a0c..ec91a02e4 100644 --- a/citadel/ecrash.c +++ b/citadel/ecrash.c @@ -1,16 +1,23 @@ /* - * File: eCrash.c - * @author David Frascone + * author: David Frascone * - * eCrash Implementation + * eCrash Implementation * - * eCrash will allow you to capture stack traces in the - * event of a crash, and write those traces to disk, stdout, - * or any other file handle. + * eCrash will allow you to capture stack traces in the + * event of a crash, and write those traces to disk, stdout, + * or any other file handle. * - * modified to integrate closer into citadel by Wilfried Goesgens + * modified to integrate closer into citadel by Wilfried Goesgens * * vim: ts=4 + * + * This program is open source software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License, version 3. + * + * 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. */ #include "sysdep.h" @@ -32,7 +39,7 @@ #include "citserver.h" #include "ecrash.h" -#define NIY() printf("%s: Not Implemented Yet!\n", __FUNCTION__) +#define NIY() printf("function not implemented yet!\n"); #ifdef HAVE_BACKTRACE #include static eCrashParameters gbl_params; @@ -45,7 +52,6 @@ static int gbl_backtraceDoneFlag = 0; static void *stack_frames[50]; static size_t size, NThread; static char **strings; -static char StaticBuf[SIZ]; /* * Private structures for our thread list @@ -172,14 +178,7 @@ static void outputPrintf(char *format, ...) va_start(ap, format); - if (enable_syslog) - { - snprintf (StaticBuf, SIZ, format, ap); - syslog( LOG_CRIT|LOG_NDELAY|LOG_MAIL, StaticBuf); - } - else - CtdlLogPrintf(CTDL_EMERG, format, ap); - + vsyslog(LOG_CRIT|LOG_NDELAY|LOG_MAIL, format, ap); } // outputPrintf @@ -195,25 +194,14 @@ static void createGlobalBacktrace( void ) { size = backtrace(stack_frames, sizeof(stack_frames) / sizeof(void*)); - if (enable_syslog) - for (NThread = 0; NThread < size; NThread++) - { - snprintf (StaticBuf, SIZ, "RAW: %p ", stack_frames[NThread]); - syslog( LOG_CRIT|LOG_NDELAY|LOG_MAIL, StaticBuf); - } - else - for (NThread = 0; NThread < size; NThread++) - CtdlLogPrintf(1, "RAW: %p\n", stack_frames[NThread]); + for (NThread = 0; NThread < size; NThread++) + { + syslog(LOG_CRIT|LOG_NDELAY|LOG_MAIL, "RAW: %p ", stack_frames[NThread]); + } strings = backtrace_symbols(stack_frames, size); for (NThread = 0; NThread < size; NThread++) { if (strings != NULL) { - if (enable_syslog) - {// vsyslogs printf compliance sucks. - snprintf (StaticBuf, SIZ, "RAW: %p ", strings[NThread]); - syslog( LOG_CRIT|LOG_NDELAY|LOG_MAIL, StaticBuf); - } - else - CtdlLogPrintf(1, "%s\n", strings[NThread]); + syslog(LOG_CRIT|LOG_NDELAY|LOG_MAIL, "RAW: %p ", strings[NThread]); } } } /* createGlobalBacktrace */ @@ -221,15 +209,10 @@ static void outputRawtrace( void ) { size = backtrace(stack_frames, sizeof(stack_frames) / sizeof(void*)); - if (enable_syslog) - for (NThread = 0; NThread < size; NThread++) - { - snprintf (StaticBuf, SIZ, "RAW: %p ", stack_frames[NThread]); - syslog( LOG_CRIT|LOG_NDELAY|LOG_MAIL, StaticBuf); - } - else - for (NThread = 0; NThread < size; NThread++) - CtdlLogPrintf(1, "RAW: %p\n", stack_frames[NThread]); + for (NThread = 0; NThread < size; NThread++) + { + syslog(LOG_CRIT|LOG_NDELAY|LOG_MAIL, "RAW: %p ", stack_frames[NThread]); + } } /* createGlobalBacktrace */ /*! @@ -410,6 +393,7 @@ int eCrash_Init(eCrashParameters *params) DPRINTF(ECRASH_DEBUG_VERY_VERBOSE,"Init Starting params = %p\n", params); + if (params == NULL) return -1; // Allocate our backtrace area gbl_backtraceBuffer = malloc(sizeof(void *) * (params->maxStackDepth+5));