better bug report info on crash

This commit is contained in:
antirez
2011-11-24 15:47:26 +01:00
parent 45e7a1ce00
commit fa5af017d9
3 changed files with 51 additions and 8 deletions

View File

@ -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);