fix: remove data races by making save_load_running atomic and removing main thread engine_process_commands calls

Co-authored-by: aider (deepseek/deepseek-coder) <aider@aider.chat>
This commit is contained in:
Loic Coenen
2026-05-02 11:00:43 +00:00
parent da88493866
commit 6fb81aa322
2 changed files with 3 additions and 22 deletions

View File

@@ -300,7 +300,7 @@ void* save_load_thread_func(void *arg) {
// Create samples directory if it doesn't exist
mkdir("samples", 0755);
while (engine->save_load_running) {
while (atomic_load(&engine->save_load_running)) {
SaveLoadRequest req;
int ret = save_load_queue_pop(&engine->save_load_queue, &req);
@@ -382,7 +382,7 @@ void* save_load_thread_func(void *arg) {
int engine_start_save_load_thread(Engine *engine) {
if (!engine) return -1;
engine->save_load_running = true;
atomic_store(&engine->save_load_running, true);
save_load_queue_init(&engine->save_load_queue);
if (pthread_create(&engine->save_load_thread, NULL, save_load_thread_func, engine) != 0) {
@@ -397,7 +397,7 @@ int engine_start_save_load_thread(Engine *engine) {
void engine_stop_save_load_thread(Engine *engine) {
if (!engine) return;
engine->save_load_running = false;
atomic_store(&engine->save_load_running, false);
pthread_join(engine->save_load_thread, NULL);
}