Threads initiating SAs can get stuck on the semaphore in
wait_for_listener() during shutdown if the corresponding job is never
executed. A particular case when this can happen is if more initiations
are triggered than worker threads are available. This causes a (known)
deadlock as no workers are free anymore to process jobs (for inbound
messages or timeouts etc.), including the one to initiate an SA.
This change at least allows a proper shutdown.
.id = entry->id,
);
lib->processor->queue_job(lib->processor,
- (job_t*)callback_job_create(process_queue,
- sel, free, NULL));
+ (job_t*)callback_job_create(process_queue, sel,
+ free, callback_job_cancel_thread));
entry->has_processor = TRUE;
}
}