check abort_flag in threads loops
This flag was added recently (scrypt) from cudaminer code, and i missed some... and prevent multiple calls to proper_exit(), one is enough...
This commit is contained in:
parent
629d987177
commit
9a13624c2e
2
api.cpp
2
api.cpp
@ -878,7 +878,7 @@ static void api()
|
|||||||
buffer = (char *) calloc(1, MYBUFSIZ + 1);
|
buffer = (char *) calloc(1, MYBUFSIZ + 1);
|
||||||
|
|
||||||
counter = 0;
|
counter = 0;
|
||||||
while (bye == 0) {
|
while (bye == 0 && !abort_flag) {
|
||||||
counter++;
|
counter++;
|
||||||
|
|
||||||
clisiz = sizeof(cli);
|
clisiz = sizeof(cli);
|
||||||
|
22
ccminer.cpp
22
ccminer.cpp
@ -538,6 +538,9 @@ void get_currentalgo(char* buf, int sz)
|
|||||||
*/
|
*/
|
||||||
void proper_exit(int reason)
|
void proper_exit(int reason)
|
||||||
{
|
{
|
||||||
|
if (abort_flag) /* already called */
|
||||||
|
return;
|
||||||
|
|
||||||
abort_flag = true;
|
abort_flag = true;
|
||||||
usleep(200 * 1000);
|
usleep(200 * 1000);
|
||||||
cuda_shutdown();
|
cuda_shutdown();
|
||||||
@ -554,8 +557,8 @@ void proper_exit(int reason)
|
|||||||
timeEndPeriod(1); // else never executed
|
timeEndPeriod(1); // else never executed
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_WRAPNVML
|
#ifdef USE_WRAPNVML
|
||||||
if (hnvml && !opt_keep_clocks) {
|
if (hnvml) {
|
||||||
for (int n=0; n < opt_n_threads; n++) {
|
for (int n=0; n < opt_n_threads && !opt_keep_clocks; n++) {
|
||||||
nvml_reset_clocks(hnvml, device_map[n]);
|
nvml_reset_clocks(hnvml, device_map[n]);
|
||||||
}
|
}
|
||||||
nvml_destroy(hnvml);
|
nvml_destroy(hnvml);
|
||||||
@ -1238,7 +1241,7 @@ static void *workio_thread(void *userdata)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
while (ok) {
|
while (ok && !abort_flag) {
|
||||||
struct workio_cmd *wc;
|
struct workio_cmd *wc;
|
||||||
|
|
||||||
/* wait for workio_cmd sent to us, on our queue */
|
/* wait for workio_cmd sent to us, on our queue */
|
||||||
@ -1584,7 +1587,7 @@ static void *miner_thread(void *userdata)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
while (1) {
|
while (!abort_flag) {
|
||||||
struct timeval tv_start, tv_end, diff;
|
struct timeval tv_start, tv_end, diff;
|
||||||
unsigned long hashes_done;
|
unsigned long hashes_done;
|
||||||
uint32_t start_nonce;
|
uint32_t start_nonce;
|
||||||
@ -2176,7 +2179,7 @@ wait_lp_url:
|
|||||||
|
|
||||||
longpoll_retry:
|
longpoll_retry:
|
||||||
|
|
||||||
while (1) {
|
while (!abort_flag) {
|
||||||
json_t *val = NULL, *soval;
|
json_t *val = NULL, *soval;
|
||||||
int err = 0;
|
int err = 0;
|
||||||
|
|
||||||
@ -2309,7 +2312,7 @@ wait_stratum_url:
|
|||||||
pool_is_switching = false;
|
pool_is_switching = false;
|
||||||
stratum_need_reset = false;
|
stratum_need_reset = false;
|
||||||
|
|
||||||
while (1) {
|
while (!abort_flag) {
|
||||||
int failures = 0;
|
int failures = 0;
|
||||||
|
|
||||||
if (stratum_need_reset) {
|
if (stratum_need_reset) {
|
||||||
@ -2320,7 +2323,7 @@ wait_stratum_url:
|
|||||||
stratum.url = strdup(pool->url); // may be useless
|
stratum.url = strdup(pool->url); // may be useless
|
||||||
}
|
}
|
||||||
|
|
||||||
while (!stratum.curl) {
|
while (!stratum.curl && !abort_flag) {
|
||||||
pthread_mutex_lock(&g_work_lock);
|
pthread_mutex_lock(&g_work_lock);
|
||||||
g_work_time = 0;
|
g_work_time = 0;
|
||||||
g_work.data[0] = 0;
|
g_work.data[0] = 0;
|
||||||
@ -3389,10 +3392,13 @@ int main(int argc, char *argv[])
|
|||||||
/* main loop - simply wait for workio thread to exit */
|
/* main loop - simply wait for workio thread to exit */
|
||||||
pthread_join(thr_info[work_thr_id].pth, NULL);
|
pthread_join(thr_info[work_thr_id].pth, NULL);
|
||||||
|
|
||||||
|
/* wait for mining threads */
|
||||||
|
for (i = 0; i < opt_n_threads; i++)
|
||||||
|
pthread_join(thr_info[i].pth, NULL);
|
||||||
|
|
||||||
if (opt_debug)
|
if (opt_debug)
|
||||||
applog(LOG_DEBUG, "workio thread dead, exiting.");
|
applog(LOG_DEBUG, "workio thread dead, exiting.");
|
||||||
|
|
||||||
proper_exit(EXIT_CODE_OK);
|
proper_exit(EXIT_CODE_OK);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user