diff options
author | Heikki Linnakangas <heikki.linnakangas@iki.fi> | 2012-04-08 18:28:12 +0300 |
---|---|---|
committer | Heikki Linnakangas <heikki.linnakangas@iki.fi> | 2012-04-08 19:08:13 +0300 |
commit | ef29bb1f7254222835267cc03389ed12602c677c (patch) | |
tree | 985f3562c0a8de92789faf074bb3ff0eaa964111 /src/backend/access/gist/gist.c | |
parent | 63d8636c50f2ca053aa6a214340bb322bc5687d5 (diff) | |
download | postgresql-ef29bb1f7254222835267cc03389ed12602c677c.tar.gz postgresql-ef29bb1f7254222835267cc03389ed12602c677c.zip |
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.
Diffstat (limited to 'src/backend/access/gist/gist.c')
0 files changed, 0 insertions, 0 deletions