Re: BUG #17416: Server crashes due to python3 stack overflow on executing multiple plpy.rollback() calls
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: exclusion@gmail.com
Cc: Peter Eisentraut <peter.eisentraut@enterprisedb.com>,
pgsql-bugs@lists.postgresql.org
Date: 2022-02-23T16:27:30Z
Lists: pgsql-bugs
PG Bug reporting form <noreply@postgresql.org> writes: > When executing the following script: > psql -c " > CREATE EXTENSION plpython3u; > CREATE FUNCTION plpy_xact_test() RETURNS int > LANGUAGE plpython3u > AS ' > plpy.rollback() > return 1 > '" > for i in `seq 500`; do echo "SELECT plpy_xact_test();"; done | psql > I get the server crash with the following stack trace: Interesting. For me, 500 repetitions won't crash it, but 1000 will. Apparently, each escape out of plpy.rollback leaves an open frame on Python's internal control stack, and eventually it barfs. So this is a different way to reach the problems already under investigation at [1]. You don't really need a bleeding-edge Python at all. regards, tom lane [1] https://www.postgresql.org/message-id/flat/3375ffd8-d71c-2565-e348-a597d6e739e3@enterprisedb.com
Commits
-
Fix SPI's handling of errors during transaction commit.
- cfc86f987349 13.8 landed
- 2f6b8c287b88 11.17 landed
- 293f5c5f496c 12.12 landed
- 604651880c71 14.5 landed
- 2e517818f4af 15.0 landed