Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 03 Apr 2026 14:30:22 +0000
From:      bugzilla-noreply@freebsd.org
To:        bugs@FreeBSD.org
Subject:   [Bug 294039] databases/postgresql14-server: jemalloc crashes triggered by autovacuum
Message-ID:  <bug-294039-227-xjhuCYPnq4@https.bugs.freebsd.org/bugzilla/>
In-Reply-To: <bug-294039-227@https.bugs.freebsd.org/bugzilla/>

index | next in thread | previous in thread | raw e-mail

https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=294039

Mark Johnston <markj@FreeBSD.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|New                         |Open

--- Comment #9 from Mark Johnston <markj@FreeBSD.org> ---
I see a case where we can restart the fault handler without resetting
m_needs_zeroing: if vm_fault_object() encounters a busy page in a backing
object, it will call vm_fault_busy_sleep(), which resets fault state using a
custom routine.  If a page allocation had previously set m_needs_zeroing =
false, and the newly allocated page was reclaimed while restarting the fault
handler, then we'll allocate a new page using the stale m_needs_zeroing value.

A minimal patch to fix this is:

diff --git a/sys/vm/vm_fault.c b/sys/vm/vm_fault.c
index 64580c34c0a0..cf20304706ad 100644
--- a/sys/vm/vm_fault.c
+++ b/sys/vm/vm_fault.c
@@ -1436,6 +1436,7 @@ vm_fault_busy_sleep(struct faultstate *fs)
                VM_OBJECT_UNLOCK(fs->object);
        VM_CNT_INC(v_intrans);
        vm_object_deallocate(fs->first_object);
+       fs->m_needs_zeroing = true;
 }

Peter, I wonder if you could test this with the original patch re-applied?

-- 
You are receiving this mail because:
You are the assignee for the bug.

home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-294039-227-xjhuCYPnq4>