#include "storage/ipc.h"
#include "tcop/tcopprot.h"
+extern long max_measured_stack_depth;
+extern long max_measured_register_stack_depth;
+
/*
* This flag is set during proc_exit() to change ereport()'s behavior,
(int) getpid());
(void) system(sysbuf);
#endif
+
+#if defined(__ia64__) || defined(__ia64)
+ fprintf(stderr, "max measured stack depths %ldkB, %ldkB\n",
+ (max_measured_stack_depth + 1023) / 1024,
+ (max_measured_register_stack_depth + 1023) / 1024);
+#else
+ fprintf(stderr, "max measured stack depth %ldkB\n",
+ (max_measured_stack_depth + 1023) / 1024);
+#endif
}
/* 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;
/* ----------------
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?
*
#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;