Browse Source

Don't attempt to disable curses or print a summary during an app restart to prevent deadlocks.

nfactor-troky
Con Kolivas 11 years ago
parent
commit
448f8dde80
  1. 12
      cgminer.c

12
cgminer.c

@ -3264,14 +3264,14 @@ const
#endif #endif
char **initial_args; char **initial_args;
static void clean_up(void); static void clean_up(bool restarting);
void app_restart(void) void app_restart(void)
{ {
applog(LOG_WARNING, "Attempting to restart %s", packagename); applog(LOG_WARNING, "Attempting to restart %s", packagename);
__kill_work(); __kill_work();
clean_up(); clean_up(true);
#if defined(unix) || defined(__APPLE__) #if defined(unix) || defined(__APPLE__)
if (forkpid > 0) { if (forkpid > 0) {
@ -7219,7 +7219,7 @@ void print_summary(void)
fflush(stdout); fflush(stdout);
} }
static void clean_up(void) static void clean_up(bool restarting)
{ {
#ifdef HAVE_OPENCL #ifdef HAVE_OPENCL
clear_adl(nDevs); clear_adl(nDevs);
@ -7234,18 +7234,22 @@ static void clean_up(void)
#ifdef WIN32 #ifdef WIN32
timeEndPeriod(1); timeEndPeriod(1);
#endif #endif
if (!restarting) {
/* Attempting to disable curses or print a summary during a
* restart can lead to a deadlock. */
#ifdef HAVE_CURSES #ifdef HAVE_CURSES
disable_curses(); disable_curses();
#endif #endif
if (!opt_realquiet && successful_connect) if (!opt_realquiet && successful_connect)
print_summary(); print_summary();
}
curl_global_cleanup(); curl_global_cleanup();
} }
void _quit(int status) void _quit(int status)
{ {
clean_up(); clean_up(false);
#if defined(unix) || defined(__APPLE__) #if defined(unix) || defined(__APPLE__)
if (forkpid > 0) { if (forkpid > 0) {

Loading…
Cancel
Save