diff -u -r ../speechd-0.10.2/src/api/c/libspeechd.c ./src/api/c/libspeechd.c
--- ../speechd-0.10.2/src/api/c/libspeechd.c	2020-11-24 23:38:03.000000000 +0000
+++ ./src/api/c/libspeechd.c	2021-04-05 18:06:21.834517140 +0000
@@ -608,7 +608,7 @@
 	pthread_mutex_lock(&connection->ssip_mutex);
 
 	if (connection->mode == SPD_MODE_THREADED) {
-		pthread_cancel(connection->td->events_thread);
+		pthread_kill(connection->td->events_thread, 0);
 		pthread_mutex_destroy(&connection->td->mutex_reply_ready);
 		pthread_mutex_destroy(&connection->td->mutex_reply_ack);
 		pthread_cond_destroy(&connection->td->cond_reply_ready);
diff -u -r ../speechd-0.10.2/src/audio/nas.c ./src/audio/nas.c
--- ../speechd-0.10.2/src/audio/nas.c	2020-11-24 23:38:03.000000000 +0000
+++ ./src/audio/nas.c	2021-04-05 18:06:21.834517140 +0000
@@ -51,7 +51,6 @@
 static void *_nas_handle_events(void *par)
 {
 	spd_nas_id_t *nas_id = (spd_nas_id_t *) par;
-	pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL);
 
 	while (1)
 		AuHandleEvents(nas_id->aud);
@@ -209,7 +208,7 @@
 	if (nas_id == NULL)
 		return -2;
 
-	pthread_cancel(nas_id->nas_event_handler);
+	pthread_kill(nas_id->nas_event_handler, 0);
 	pthread_join(nas_id->nas_event_handler, NULL);
 
 	pthread_mutex_destroy(&nas_id->pt_mutex);
diff -u -r ../speechd-0.10.2/src/modules/baratinoo.c ./src/modules/baratinoo.c
--- ../speechd-0.10.2/src/modules/baratinoo.c	2020-11-24 23:38:03.000000000 +0000
+++ ./src/modules/baratinoo.c	2021-04-05 18:06:21.834517140 +0000
@@ -561,7 +561,7 @@
 	g_usleep(25000);
 
 	/* Make sure the thread has really exited */
-	pthread_cancel(engine->thread);
+	pthread_kill(engine->thread, 0);
 	DBG(DBG_MODNAME "Joining threads.");
 	if (pthread_join(engine->thread, NULL) != 0)
 		DBG(DBG_MODNAME "Failed to join threads.");
diff -u -r ../speechd-0.10.2/src/modules/module_utils.c ./src/modules/module_utils.c
--- ../speechd-0.10.2/src/modules/module_utils.c	2020-11-24 23:38:03.000000000 +0000
+++ ./src/modules/module_utils.c	2021-04-05 18:06:21.834517140 +0000
@@ -891,15 +891,17 @@
 		DBG("Can't fill signal set, expect problems when terminating!\n");
 	}
 
+#ifndef __ANDROID__
 	pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL);
 	pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL);
+#endif
 }
 
 int module_terminate_thread(pthread_t thread)
 {
 	int ret;
 
-	ret = pthread_cancel(thread);
+	ret = pthread_kill(thread, 0);
 	if (ret != 0) {
 		DBG("Cancellation of speak thread failed");
 		return 1;
diff -u -r ../speechd-0.10.2/src/server/speaking.c ./src/server/speaking.c
--- ../speechd-0.10.2/src/server/speaking.c	2020-11-24 23:38:03.000000000 +0000
+++ ./src/server/speaking.c	2021-04-05 18:06:21.834517140 +0000
@@ -950,9 +950,10 @@
 		MSG(1,
 		    "Can't fill signal set, expect problems when terminating!");
 	}
-
+#ifndef __ANDROID__
 	pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL);
 	pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL);
+#endif __ANDROID__
 }
 
 void stop_priority_except_first(SPDPriority priority)
diff -u -r ../speechd-0.10.2/src/server/speechd.c ./src/server/speechd.c
--- ../speechd-0.10.2/src/server/speechd.c	2020-11-24 23:38:03.000000000 +0000
+++ ./src/server/speechd.c	2021-04-05 18:06:21.834517140 +0000
@@ -1285,7 +1285,7 @@
 	g_hash_table_destroy(fd_settings);
 
 	MSG(4, "Closing speak() thread...");
-	ret = pthread_cancel(speak_thread);
+	ret = pthread_kill(speak_thread, 0);
 	if (ret != 0)
 		FATAL("Speak thread failed to cancel!\n");
 
--- ../speechd-0.10.2/src/modules/Makefile.am	2020-11-24 23:38:03.000000000 +0000
+++ ./src/modules/Makefile.am	2021-04-05 18:13:05.761394281 +0000
@@ -134,7 +134,7 @@
 modulebin_PROGRAMS += sd_baratinoo
 sd_baratinoo_SOURCES = baratinoo.c baratinoo_compat.h $(audio_SOURCES) $(common_SOURCES) module_utils_speak_queue.c
 sd_baratinoo_LDADD = $(top_builddir)/src/common/libcommon.la \
-	$(audio_dlopen_modules) -lbaratinoo -lpthread -ldl \
+	$(audio_dlopen_modules) -lbaratinoo -ldl \
 	$(common_LDADD)
 
 if baratinoo_shim
