From ba325966038bc2eb617300e59bebe02000068cec Mon Sep 17 00:00:00 2001 From: Markus Makela Date: Fri, 7 Aug 2015 14:00:55 +0300 Subject: [PATCH] Fixed MM monitor segfault on crash. --- server/core/gateway.c | 4 ++-- server/modules/monitor/mmmon.c | 8 +++++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/server/core/gateway.c b/server/core/gateway.c index 0ab08c818..4b10c9798 100644 --- a/server/core/gateway.c +++ b/server/core/gateway.c @@ -1649,7 +1649,7 @@ int main(int argc, char **argv) if(errno != EEXIST){ fprintf(stderr, - "Error: Cannot create data directory: %s\n",datadir); + "Error: Cannot create data directory '%s': %d %s\n",datadir,errno,strerror(errno)); goto return_main; } } @@ -1660,7 +1660,7 @@ int main(int argc, char **argv) if(errno != EEXIST){ fprintf(stderr, - "Error: Cannot create data directory: %s\n",datadir); + "Error: Cannot create data directory '%s': %d %s\n",datadir,errno,strerror(errno)); goto return_main; } } diff --git a/server/modules/monitor/mmmon.c b/server/modules/monitor/mmmon.c index 40c2c11fb..248fb92fd 100644 --- a/server/modules/monitor/mmmon.c +++ b/server/modules/monitor/mmmon.c @@ -127,6 +127,7 @@ startMonitor(void *arg,void* opt) handle->id = MONITOR_DEFAULT_ID; handle->master = NULL; handle->script = NULL; + handle->detectStaleMaster = false; memset(handle->events,false,sizeof(handle->events)); spinlock_init(&handle->lock); } @@ -198,7 +199,8 @@ startMonitor(void *arg,void* opt) static void stopMonitor(void *arg) { -MM_MONITOR *handle = (MM_MONITOR *)arg; + MONITOR* mon = arg; + MM_MONITOR *handle = (MM_MONITOR *)mon->handle; handle->shutdown = 1; thread_wait((void *)handle->tid); @@ -564,8 +566,8 @@ monitorMain(void *arg) MONITOR* mon = (MONITOR*)arg; MM_MONITOR *handle; MONITOR_SERVERS *ptr; -int detect_stale_master; -MONITOR_SERVERS *root_master; +int detect_stale_master = false; +MONITOR_SERVERS *root_master = NULL; size_t nrounds = 0; spinlock_acquire(&mon->lock);