From 448f8dde8057cb2a906167ee0ec5045b4bf843ca Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Thu, 24 Oct 2013 21:15:36 +1100 Subject: [PATCH] Don't attempt to disable curses or print a summary during an app restart to prevent deadlocks. --- cgminer.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/cgminer.c b/cgminer.c index 31fa6e10..d2982415 100644 --- a/cgminer.c +++ b/cgminer.c @@ -3264,14 +3264,14 @@ const #endif char **initial_args; -static void clean_up(void); +static void clean_up(bool restarting); void app_restart(void) { applog(LOG_WARNING, "Attempting to restart %s", packagename); __kill_work(); - clean_up(); + clean_up(true); #if defined(unix) || defined(__APPLE__) if (forkpid > 0) { @@ -7219,7 +7219,7 @@ void print_summary(void) fflush(stdout); } -static void clean_up(void) +static void clean_up(bool restarting) { #ifdef HAVE_OPENCL clear_adl(nDevs); @@ -7234,18 +7234,22 @@ static void clean_up(void) #ifdef WIN32 timeEndPeriod(1); #endif + if (!restarting) { + /* Attempting to disable curses or print a summary during a + * restart can lead to a deadlock. */ #ifdef HAVE_CURSES - disable_curses(); + disable_curses(); #endif - if (!opt_realquiet && successful_connect) - print_summary(); + if (!opt_realquiet && successful_connect) + print_summary(); + } curl_global_cleanup(); } void _quit(int status) { - clean_up(); + clean_up(false); #if defined(unix) || defined(__APPLE__) if (forkpid > 0) {