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