From 59c3f0e23106c70de8085d0404cd266486de8fd9 Mon Sep 17 00:00:00 2001 From: Joe Orton Date: Tue, 16 Dec 2025 16:05:10 +0000 Subject: [PATCH] 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 --- changes-entries/pr69901.txt | 3 +++ modules/cache/mod_file_cache.c | 5 ++--- 2 files changed, 5 insertions(+), 3 deletions(-) create mode 100644 changes-entries/pr69901.txt diff --git a/changes-entries/pr69901.txt b/changes-entries/pr69901.txt new file mode 100644 index 00000000000..4b80e5c9727 --- /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 ce1db2d2c93..51a53a7509c 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); -- 2.47.3