]> git.ipfire.org Git - thirdparty/postgresql.git/commit
Switch memory contexts in ReinitializeParallelDSM.
authorRobert Haas <rhaas@postgresql.org>
Tue, 16 Dec 2025 15:40:53 +0000 (10:40 -0500)
committerRobert Haas <rhaas@postgresql.org>
Tue, 16 Dec 2025 15:59:02 +0000 (10:59 -0500)
commit12c2f843cddae802302cb1a197a5b80dd5b3a04c
treef28f5cb38e0bde1d734affa27f9cdba4f70afa17
parent1aa57e9ed548c8cb6371a6a43f3ed90b2c16fc79
Switch memory contexts in ReinitializeParallelDSM.

We already do this in CreateParallelContext, InitializeParallelDSM, and
LaunchParallelWorkers. I suspect the reason why the matching logic was
omitted from ReinitializeParallelDSM is that I failed to realize that
any memory allocation was happening here -- but shm_mq_attach does
allocate, which could result in a shm_mq_handle being allocated in a
shorter-lived context than the ParallelContext which points to it.

That could result in a crash if the shorter-lived context is freed
before the parallel context is destroyed. As far as I am currently
aware, there is no way to reach a crash using only code that is
present in core PostgreSQL, but extensions could potentially trip
over this. Fixing this in the back-branches appears low-risk, so
back-patch to all supported versions.

Author: Jakub Wartak <jakub.wartak@enterprisedb.com>
Co-authored-by: Jeevan Chalke <jeevan.chalke@enterprisedb.com>
Backpatch-through: 14
Discussion: http://postgr.es/m/CAKZiRmwfVripa3FGo06=5D1EddpsLu9JY2iJOTgbsxUQ339ogQ@mail.gmail.com
src/backend/access/transam/parallel.c