diff --git a/res/res_config_sqlite3.c b/res/res_config_sqlite3.c
index 6148d5d8757845cc9d31dc7dbf7179b58b8677af..d321cb7c5df336ad0bc6c49c2f95fe3111e421a0 100644
--- a/res/res_config_sqlite3.c
+++ b/res/res_config_sqlite3.c
@@ -104,6 +104,7 @@ struct realtime_sqlite3_db {
 	unsigned int debug:1;
 	unsigned int exiting:1;
 	unsigned int wakeup:1;
+	unsigned int has_batch_thread:1;
 	unsigned int batch;
 };
 
@@ -368,13 +369,14 @@ void db_start_batch(struct realtime_sqlite3_db *db)
 	if (db->batch) {
 		ast_cond_init(&db->cond, NULL);
 		ao2_ref(db, +1);
-		ast_pthread_create_background(&db->syncthread, NULL, db_sync_thread, db);
+		db->has_batch_thread = !ast_pthread_create_background(&db->syncthread, NULL, db_sync_thread, db);
 	}
 }
 
 void db_stop_batch(struct realtime_sqlite3_db *db)
 {
-	if (db->batch) {
+	if (db->has_batch_thread) {
+		db->has_batch_thread = 0;
 		db->exiting = 1;
 		db_sync(db);
 		pthread_join(db->syncthread, NULL);