Re: BUG #19480: PL/Python SRF crashes (SIGSEGV) when function is replaced mid-iteration: use-after-free in PLy_funct
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: "Matheus Alcantara" <matheusssilv97@gmail.com>
Cc: adoros@starfishstorage.com, pgsql-bugs@lists.postgresql.org
Date: 2026-06-21T19:40:04Z
Lists: pgsql-bugs
"Matheus Alcantara" <matheusssilv97@gmail.com> writes: > Thanks for the review! I've tried to address all your points in the > attached v2. Pushed after a round of review. I made some mostly-cosmetic changes, such as rewriting comments (consolidating some stuff I thought was duplicative). The main thing I fixed that was an actual bug was you were careless about lifespan of variables around PG_TRY blocks. The rule of thumb is that if a variable is modified inside PG_TRY and then used after that block (including in the PG_CATCH) then it has to be marked volatile. Where possible, I avoid using the volatile marking by assigning the variable's value before PG_TRY. > I've also added a regression test, not sure if there is a better way to > exercise this fix but this test crash without this patch applied. Kind of a hokey test, since it doesn't model the likely actual case where the CREATE happens in another session, but this is as close as we'll get without a much more complex test setup. I kept it, and also added another test that exercises the early-termination path, since code coverage showed me that ShutdownPLyFunction() wasn't being reached. regards, tom lane
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
plpython: Use funccache.c infrastructure for procedure caching.
- 9bcb8a694b3b 19 (unreleased) landed