https://bugzilla.balabit.com/show_bug.cgi?id=142 --- Comment #1 from Balazs Scheidler <bazsi@balabit.hu> 2011-10-30 05:48:23 --- hmm... this patch against the bundled ivykis should do the trick: $ git diff diff --git a/modules/iv_work.c b/modules/iv_work.c index e941745..e034fb1 100644 --- a/modules/iv_work.c +++ b/modules/iv_work.c @@ -334,7 +334,7 @@ iv_work_pool_submit_work(struct iv_work_pool *this, struct iv_work_item *work) struct work_pool_thread, list); thr->kicked = 1; iv_event_post(&thr->kick); - } else if (pool->started_threads < this->max_threads) { + } else if (!this->max_threads || pool->started_threads < this->max_threads) { iv_work_start_thread(pool); } Can you check if it is indeed ok? What it does is if max_threads is set to 0, it'll allow the creation of threads undefinitely. This one is needed against the syslog-ng core: diff --git a/lib/mainloop.c b/lib/mainloop.c index f092536..681148b 100644 --- a/lib/mainloop.c +++ b/lib/mainloop.c @@ -292,6 +292,7 @@ main_loop_io_worker_thread_start(void *cookie) * since the ID map is stored in a single 64 bit integer. If we ever need * more threads than that, we can generalize this algorithm further. */ + main_loop_io_worker_id = 0; for (id = 0; id < main_loop_io_workers.max_threads; id++) { if ((main_loop_io_workers_idmap & (1 << id)) == 0) @@ -311,8 +312,11 @@ main_loop_io_worker_thread_stop(void *cookie) { g_static_mutex_lock(&main_loop_io_workers_idmap_lock); dns_cache_destroy(); - main_loop_io_workers_idmap &= ~(1 << (main_loop_io_worker_id - 1)); - main_loop_io_worker_id = 0; + if (main_loop_worker_id) + { + main_loop_io_workers_idmap &= ~(1 << (main_loop_io_worker_id - 1)); + main_loop_io_worker_id = 0; + } g_static_mutex_unlock(&main_loop_io_workers_idmap_lock); } Threads above 64 will not scale very well in the log_queue_fifo_push_tail() function call, as they don't get a unique ID for per-thread structures. I'd appreciate some testing if this works out for you. Thanks. -- Configure bugmail: https://bugzilla.balabit.com/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are watching all bug changes.