mirror of
https://codeberg.org/redict/redict.git
synced 2025-01-22 16:18:28 -05:00
some minor changes to the backtrace code
This commit is contained in:
parent
e65fdc7838
commit
d76412d1d1
9
config.h
9
config.h
@ -1,10 +1,10 @@
|
||||
#ifndef __CONFIG_H
|
||||
#define __CONFIG_H
|
||||
|
||||
/* malloc_size() */
|
||||
/* test for malloc_size() */
|
||||
#ifdef __APPLE__
|
||||
#include <malloc/malloc.h>
|
||||
#define HAVE_MALLOC_SIZE
|
||||
#define HAVE_MALLOC_SIZE 1
|
||||
#define redis_malloc_size(p) malloc_size(p)
|
||||
#endif
|
||||
|
||||
@ -17,4 +17,9 @@
|
||||
#define redis_stat stat
|
||||
#endif
|
||||
|
||||
/* test for backtrace() */
|
||||
#if defined(__APPLE__) || defined(__linux__)
|
||||
#define HAVE_BACKTRACE 1
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
15
redis.c
15
redis.c
@ -330,7 +330,6 @@ static int setExpire(redisDb *db, robj *key, time_t when);
|
||||
static void updateSalvesWaitingBgsave(int bgsaveerr);
|
||||
static void freeMemoryIfNeeded(void);
|
||||
static int processCommand(redisClient *c);
|
||||
static void segvHandler(int sig, siginfo_t *info, void *secret);
|
||||
static void setupSigSegvAction(void);
|
||||
|
||||
static void authCommand(redisClient *c);
|
||||
@ -4108,7 +4107,7 @@ static void debugCommand(redisClient *c) {
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(__APPLE__) || defined(__linux__)
|
||||
#ifdef HAVE_BACKTRACE
|
||||
static struct redisFunctionSym symsTable[] = {
|
||||
{"freeStringObject", (unsigned long)freeStringObject},
|
||||
{"freeListObject", (unsigned long)freeListObject},
|
||||
@ -4192,7 +4191,6 @@ static struct redisFunctionSym symsTable[] = {
|
||||
{"debugCommand", (unsigned long)debugCommand},
|
||||
{"processCommand", (unsigned long)processCommand},
|
||||
{"setupSigSegvAction", (unsigned long)setupSigSegvAction},
|
||||
{"segvHandler", (unsigned long)segvHandler},
|
||||
{"readQueryFromClient", (unsigned long)readQueryFromClient},
|
||||
{NULL,0}
|
||||
};
|
||||
@ -4274,7 +4272,7 @@ static void segvHandler(int sig, siginfo_t *info, void *secret) {
|
||||
trace[1] = getMcontextEip(uc);
|
||||
messages = backtrace_symbols(trace, trace_size);
|
||||
|
||||
for (i=0; i<trace_size; ++i) {
|
||||
for (i=1; i<trace_size; ++i) {
|
||||
char *fn = findFuncName(trace[i], &offset), *p;
|
||||
|
||||
p = strchr(messages[i],'+');
|
||||
@ -4289,7 +4287,6 @@ static void segvHandler(int sig, siginfo_t *info, void *secret) {
|
||||
}
|
||||
|
||||
static void setupSigSegvAction(void) {
|
||||
#if defined(__APPLE__) || defined(__linux__)
|
||||
struct sigaction act;
|
||||
|
||||
sigemptyset (&act.sa_mask);
|
||||
@ -4299,12 +4296,12 @@ static void setupSigSegvAction(void) {
|
||||
act.sa_sigaction = segvHandler;
|
||||
sigaction (SIGSEGV, &act, NULL);
|
||||
sigaction (SIGBUS, &act, NULL);
|
||||
#else
|
||||
return;
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif /* if __APPLE__ or __linux__ */
|
||||
#else /* HAVE_BACKTRACE */
|
||||
static void setupSigSegvAction(void) {
|
||||
}
|
||||
#endif /* HAVE_BACKTRACE */
|
||||
|
||||
/* =================================== Main! ================================ */
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user