X-Git-Url: https://git.saurik.com/redis.git/blobdiff_plain/4be855e757b800a9f848823fcee8b7faf3e1eba0..4c8bd905a0751c19279c98d2dbd681a08297e38e:/src/debug.c diff --git a/src/debug.c b/src/debug.c index 376e0712..d610d2a9 100644 --- a/src/debug.c +++ b/src/debug.c @@ -297,10 +297,14 @@ void debugCommand(redisClient *c) { } void _redisAssert(char *estr, char *file, int line) { + bugReportStart(); redisLog(REDIS_WARNING,"=== ASSERTION FAILED ==="); redisLog(REDIS_WARNING,"==> %s:%d '%s' is not true",file,line,estr); #ifdef HAVE_BACKTRACE - redisLog(REDIS_WARNING,"(forcing SIGSEGV in order to print the stack trace)"); + server.assert_failed = estr; + server.assert_file = file; + server.assert_line = line; + redisLog(REDIS_WARNING,"(forcing SIGSEGV to print the bug report.)"); *((char*)-1) = 'x'; #endif } @@ -308,6 +312,7 @@ void _redisAssert(char *estr, char *file, int line) { void _redisAssertPrintClientInfo(redisClient *c) { int j; + bugReportStart(); redisLog(REDIS_WARNING,"=== ASSERTION FAILED CLIENT CONTEXT ==="); redisLog(REDIS_WARNING,"client->flags = %d", c->flags); redisLog(REDIS_WARNING,"client->fd = %d", c->fd); @@ -331,6 +336,7 @@ void _redisAssertPrintClientInfo(redisClient *c) { } void _redisAssertPrintObject(robj *o) { + bugReportStart(); redisLog(REDIS_WARNING,"=== ASSERTION FAILED OBJECT CONTEXT ==="); redisLog(REDIS_WARNING,"Object type: %d", o->type); redisLog(REDIS_WARNING,"Object encoding: %d", o->encoding); @@ -349,6 +355,7 @@ void _redisAssertWithInfo(redisClient *c, robj *o, char *estr, char *file, int l } void _redisPanic(char *msg, char *file, int line) { + bugReportStart(); redisLog(REDIS_WARNING,"------------------------------------------------"); redisLog(REDIS_WARNING,"!!! Software Failure. Press left mouse button to continue"); redisLog(REDIS_WARNING,"Guru Meditation: %s #%s:%d",msg,file,line);