diff --git a/src/backend/utils/error/assert.c b/src/backend/utils/error/assert.c index 2da512a2f1..889be8a2e5 100644 --- a/src/backend/utils/error/assert.c +++ b/src/backend/utils/error/assert.c @@ -54,6 +54,9 @@ ExceptionalCondition(const char *conditionName, nframes = backtrace(buf, lengthof(buf)); backtrace_symbols_fd(buf, nframes, fileno(stderr)); + if (nframes >= lengthof(buf)) + write_stderr("(backtrace limited to %zu frames)\n", + lengthof(buf)); } #endif diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c index 7402696986..9933386959 100644 --- a/src/backend/utils/error/elog.c +++ b/src/backend/utils/error/elog.c @@ -966,6 +966,9 @@ set_backtrace(ErrorData *edata, int num_skip) for (int i = num_skip; i < nframes; i++) appendStringInfo(&errtrace, "\n%s", strfrms[i]); + if (nframes >= lengthof(buf)) + appendStringInfo(&errtrace, "\n(backtrace limited to %zu frames)", + lengthof(buf)); free(strfrms); } #else