Add guard to prevent recursive memory context logging. REL_16_STABLE github/REL_16_STABLE
authorFujii Masao <[email protected]>
Fri, 19 Dec 2025 03:08:20 +0000 (12:08 +0900)
committerFujii Masao <[email protected]>
Fri, 19 Dec 2025 03:08:20 +0000 (12:08 +0900)
commit3853f61681e850e846150b38cf9f5ebb34523740
tree25d09865993ce59b5d3ad943c25aab5be3a9b8d9
parenta5277700e47862e9f83b0695fb34ffff0ea2fa34
Add guard to prevent recursive memory context logging.

Previously, if memory context logging was triggered repeatedly and
rapidly while a previous request was still being processed, it could
result in recursive calls to ProcessLogMemoryContextInterrupt().
This could lead to infinite recursion and potentially crash the process.

This commit adds a guard to prevent such recursion.
If ProcessLogMemoryContextInterrupt() is already in progress and
logging memory contexts, subsequent calls will exit immediately,
avoiding unintended recursive calls.

While this scenario is unlikely in practice, it's not impossible.
This change adds a safety check to prevent such failures.

Back-patch to v14, where memory context logging was introduced.

Reported-by: Robert Haas <[email protected]>
Author: Fujii Masao <[email protected]>
Reviewed-by: Atsushi Torikoshi <[email protected]>
Reviewed-by: Robert Haas <[email protected]>
Reviewed-by: Artem Gavrilov <[email protected]>
Discussion: https://postgr.es/m/CA+TgmoZMrv32tbNRrFTvF9iWLnTGqbhYSLVcrHGuwZvCtph0NA@mail.gmail.com
Backpatch-through: 14
src/backend/utils/mmgr/mcxt.c