2
* $CC $CFLAGS -I../.. debugm.c -lclamav -lefence (or what ever memory debugger)
3
* If you're going to use HAVE_BACKTRACE, ensure CFLAGS includes -g and doesn't
4
* include -fomit-frame-pointer
11
#include <sys/types.h>
15
#include <sys/resource.h>
18
#include "clamav-config.h"
20
#if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 1
21
/*#define HAVE_BACKTRACE /* Only tested on Linux... */
28
static void print_trace(void);
29
static void sigsegv(int sig);
34
signal(SIGSEGV, SIG_DFL);
47
puts("Segfault caught, backtrace:");
49
size = backtrace(array, 10);
50
strings = backtrace_symbols(array, size);
52
for(i = 0; i < size; i++)
53
printf("\t%s\n", strings[i]);
60
main(int argc, char **argv)
65
fprintf(stderr, "Usage: %s files...\n", argv[0]);
68
rlim.rlim_cur = rlim.rlim_max = RLIM_INFINITY;
69
if(setrlimit(RLIMIT_CORE, &rlim) < 0)
72
if(mkdir("/tmp/mboxtest", 0750) < 0) {
73
perror("/tmp/mboxtest");
76
signal(SIGSEGV, sigsegv);
78
int fd = open(*argv, 0);
84
printf("cl_mbox(%s) returns %d\n",
85
*argv, cl_mbox("/tmp/mboxtest", fd));
88
puts("Finished - don't forget to rm -rf /tmp/mboxtest");