pgsql: Do stack-depth checking in all postmaster children.

From: Heikki Linnakangas <heikki(dot)linnakangas(at)iki(dot)fi>
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: Do stack-depth checking in all postmaster children.
Date: 2012-04-08 16:33:18
Message-ID: E1SGv3G-00037N-Mz@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Do stack-depth checking in all postmaster children.

We used to only initialize the stack base pointer when starting up a regular
backend, not in other processes. In particular, autovacuum workers can run
arbitrary user code, and without stack-depth checking, infinite recursion
in e.g an index expression will bring down the whole cluster.

The comment about PL/Java using set_stack_base() is not yet true. As the
code stands, PL/java still modifies the stack_base_ptr variable directly.
However, it's been discussed in the PL/Java mailing list that it should be
changed to use the function, because PL/Java is currently oblivious to the
register stack used on Itanium. There's another issues with PL/Java, namely
that the stack base pointer it sets is not really the base of the stack, it
could be something close to the bottom of the stack. That's a separate issue
that might need some further changes to this code, but that's a different
story.

Backpatch to all supported releases.

Branch
------
REL9_1_STABLE

Details
-------
http://git.postgresql.org/pg/commitdiff/ef29bb1f7254222835267cc03389ed12602c677c

Modified Files
--------------
src/backend/postmaster/postmaster.c | 10 ++++++
src/backend/tcop/postgres.c | 61 ++++++++++++++++++++++++++++++----
src/include/miscadmin.h | 13 +++++++
3 files changed, 76 insertions(+), 8 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Heikki Linnakangas 2012-04-08 16:44:38 pgsql: set_stack_base() no longer needs to be called in PostgresMain.
Previous Message Tom Lane 2012-04-07 22:17:16 pgsql: Fix incorrect make maintainer-clean rule.