From: Joe Orton Date: Tue, 16 Dec 2025 16:05:10 +0000 (+0000) Subject: mod_file_cache: Fix crashes for mmap'ed files under threaded MPM. X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=59c3f0e23106c70de8085d0404cd266486de8fd9;p=thirdparty%2Fapache%2Fhttpd.git mod_file_cache: Fix crashes for mmap'ed files under threaded MPM. * modules/cache/mod_file_cache.c (mmap_handler): fix file getting unmapped erroneously when server is under load in multi-thread multi-core configuration PR: 69901 Submitted by: barr.israel Github: closes #582 git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1930632 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/changes-entries/pr69901.txt b/changes-entries/pr69901.txt new file mode 100644 index 0000000000..4b80e5c972 --- /dev/null +++ b/changes-entries/pr69901.txt @@ -0,0 +1,3 @@ + *) mod_file_cache: Fix crashes for mmap'ed files under threaded + MPMs. PR 69901. barr.israel + diff --git a/modules/cache/mod_file_cache.c b/modules/cache/mod_file_cache.c index ce1db2d2c9..51a53a7509 100644 --- a/modules/cache/mod_file_cache.c +++ b/modules/cache/mod_file_cache.c @@ -275,9 +275,8 @@ static int mmap_handler(request_rec *r, a_file *file) apr_mmap_t *mm; apr_bucket_brigade *bb = apr_brigade_create(r->pool, c->bucket_alloc); - apr_mmap_dup(&mm, file->mm, r->pool); - b = apr_bucket_mmap_create(mm, 0, (apr_size_t)file->finfo.size, - c->bucket_alloc); + b = apr_bucket_immortal_create((const char *)file->mm->mm, + (apr_size_t)file->finfo.size, c->bucket_alloc); APR_BRIGADE_INSERT_TAIL(bb, b); b = apr_bucket_eos_create(c->bucket_alloc); APR_BRIGADE_INSERT_TAIL(bb, b);