--- ../ec_threads.c.orig 2019-08-27 20:09:25.304142288 +0200 +++ ./src/ec_threads.c 2019-08-27 20:14:11.753262944 +0200 @@ -233,13 +233,6 @@ DEBUG_MSG("ec_thread_init -- %lu", PTHREAD_ID(id)); INIT_LOCK; - - /* - * allow a thread to be cancelled as soon as the - * cancellation request is received - */ - pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL); - pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL); /* sync with the creator */ if ((e = pthread_cond_signal(&init_cond))) @@ -263,7 +256,7 @@ /* send the cancel signal to the thread */ - pthread_cancel((pthread_t)id); + pthread_kill((pthread_t)id, 0); DEBUG_MSG("ec_thread_destroy -- [%s] terminated", ec_thread_getname(id)); @@ -319,7 +312,7 @@ DEBUG_MSG("ec_thread_kill_all -- terminating %lu [%s]", PTHREAD_ID(current->t.id), current->t.name); /* send the cancel signal to the thread */ - pthread_cancel((pthread_t)current->t.id); + pthread_kill((pthread_t)current->t.id, 0); #ifndef BROKEN_PTHREAD_JOIN if (!current->t.detached) {