aboutsummaryrefslogtreecommitdiff
path: root/src/backend/tcop/postgres.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2016-07-08 16:38:22 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2016-07-08 16:38:22 -0400
commitea9c4a16d5ad88a1d28d43ef458e3209b53eb106 (patch)
treeb4fb2d00741e2aef2a1e668b1a9527b20ab7c2c0 /src/backend/tcop/postgres.c
parent769159fd393f006f29879a71a5f2b3049251b4d9 (diff)
downloadpostgresql-ea9c4a16d5ad88a1d28d43ef458e3209b53eb106.tar.gz
postgresql-ea9c4a16d5ad88a1d28d43ef458e3209b53eb106.zip
Add more temporary code to record stack usage at server process exit.
After a look at preliminary results from commit 88cf37d2a86d5b66, I realized it'd be a good idea to spew out the maximum depth measurement seen by check_stack_depth. So add some quick-n-dirty code to do that. Like the previous commit, this will be reverted once we've gathered a set of buildfarm runs with it.
Diffstat (limited to 'src/backend/tcop/postgres.c')
-rw-r--r--src/backend/tcop/postgres.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c
index b185c1b5eb6..38cabf650a1 100644
--- a/src/backend/tcop/postgres.c
+++ b/src/backend/tcop/postgres.c
@@ -96,6 +96,9 @@ int max_stack_depth = 100;
/* wait N seconds to allow attach from a debugger */
int PostAuthDelay = 0;
+/* Exported for use by proc_exit */
+long max_measured_stack_depth = 0;
+long max_measured_register_stack_depth = 0;
/* ----------------
@@ -3137,6 +3140,11 @@ stack_is_too_deep(void)
if (stack_depth < 0)
stack_depth = -stack_depth;
+ /* Track max measured depth for reporting by proc_exit */
+ if (stack_depth > max_measured_stack_depth &&
+ stack_base_ptr != NULL)
+ max_measured_stack_depth = stack_depth;
+
/*
* Trouble?
*
@@ -3160,6 +3168,10 @@ stack_is_too_deep(void)
#if defined(__ia64__) || defined(__ia64)
stack_depth = (long) (ia64_get_bsp() - register_stack_base_ptr);
+ if (stack_depth > max_measured_register_stack_depth &&
+ register_stack_base_ptr != NULL)
+ max_measured_register_stack_depth = stack_depth;
+
if (stack_depth > max_stack_depth_bytes &&
register_stack_base_ptr != NULL)
return true;