Author: ivan
Date: Tue Oct 6 15:00:48 2026
New Revision: 1938822
Log:
Fix a race condition in svnserve logging when running in threaded mode.
Memory allocations from the shared logger->pool were being performed
before the logger->mutex was acquired, leading to potential pool
corruption and SEGV crashes during high-frequency concurrent logging
events (e.g. client connection reset bursts).
* subversion/svnserve/logger.c
(log_message): Move apr_palloc() calls inside the mutex-protected critical
section.
Patch by: eric.boehm {at} broadcom.com
Modified:
subversion/trunk/subversion/svnserve/logger.c
Modified: subversion/trunk/subversion/svnserve/logger.c
==============================================================================
--- subversion/trunk/subversion/svnserve/logger.c Tue Oct 6 14:16:26
2026 (r1938821)
+++ subversion/trunk/subversion/svnserve/logger.c Tue Oct 6 15:00:48
2026 (r1938822)
@@ -104,10 +104,11 @@ log_message(logger_t *logger,
/* 8192 from MAX_STRING_LEN in from httpd-2.2.4/include/httpd.h */
const apr_size_t errstr_size = 8192;
- char *errstr = apr_palloc(logger->pool, errstr_size);
+ char *errstr;
svn_error_clear(svn_mutex__lock(logger->mutex));
+ errstr = apr_palloc(logger->pool, errstr_size);
timestr = svn_time_to_cstring(apr_time_now(), logger->pool);
remote_host = client_info && client_info->remote_host
? client_info->remote_host