From 2577a64e4404c95ca3cc80b7f32a84b90e624207 Mon Sep 17 00:00:00 2001 From: Victor Julien Date: Fri, 13 Oct 2017 09:05:02 +0200 Subject: [PATCH] stream: improve error handling of ssn/segment pools With large number of threads the default memcaps lead to pool setup failures. Make sure these are reported properly so that the user knows what is going on. Bug: #2226 --- src/stream-tcp-reassemble.c | 7 +++++-- src/stream-tcp.c | 4 +++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/stream-tcp-reassemble.c b/src/stream-tcp-reassemble.c index e61e3db701..4665a9b1a3 100644 --- a/src/stream-tcp-reassemble.c +++ b/src/stream-tcp-reassemble.c @@ -444,8 +444,11 @@ TcpReassemblyThreadCtx *StreamTcpReassembleInitThreadCtx(ThreadVars *tv) ra_ctx->segment_thread_pool_id); } SCMutexUnlock(&segment_thread_pool_mutex); - if (ra_ctx->segment_thread_pool_id < 0 || segment_thread_pool == NULL) - abort(); + if (ra_ctx->segment_thread_pool_id < 0 || segment_thread_pool == NULL) { + SCLogError(SC_ERR_MEM_ALLOC, "failed to setup/expand stream segment pool. Expand stream.reassembly.memcap?"); + StreamTcpReassembleFreeThreadCtx(ra_ctx); + SCReturnPtr(NULL, "TcpReassemblyThreadCtx"); + } SCReturnPtr(ra_ctx, "TcpReassemblyThreadCtx"); } diff --git a/src/stream-tcp.c b/src/stream-tcp.c index dfc956c13a..d99d0c255d 100644 --- a/src/stream-tcp.c +++ b/src/stream-tcp.c @@ -4984,8 +4984,10 @@ TmEcode StreamTcpThreadInit(ThreadVars *tv, void *initdata, void **data) SCLogDebug("pool size %d, thread ssn_pool_id %d", PoolThreadSize(ssn_pool), stt->ssn_pool_id); } SCMutexUnlock(&ssn_pool_mutex); - if (stt->ssn_pool_id < 0 || ssn_pool == NULL) + if (stt->ssn_pool_id < 0 || ssn_pool == NULL) { + SCLogError(SC_ERR_MEM_ALLOC, "failed to setup/expand stream session pool. Expand stream.memcap?"); SCReturnInt(TM_ECODE_FAILED); + } SCReturnInt(TM_ECODE_OK); }