Revert "Add GUC backtrace_on_internal_error"

This reverts commit a740b213d4.

Subsequent discussion showed that there was interest in a more general
facility to configure when server log events would produce backtraces,
and this existing limited way couldn't be extended in a compatible
way.  So the consensus was to revert this for PostgreSQL 17 and
reconsider this topic for PostgreSQL 18.

Discussion: https://www.postgresql.org/message-id/flat/CAGECzQTChkvn5Xj772LB3%3Dxo2x_LcaO5O0HQvXqobm1xVp6%2B4w%40mail.gmail.com#764bcdbb73e162787e1ad984935e51e3
pull/160/head
Peter Eisentraut 1 year ago
parent 5c9f35fc48
commit 592a228372
  1. 27
      doc/src/sgml/config.sgml
  2. 8
      src/backend/utils/error/elog.c
  3. 11
      src/backend/utils/misc/guc_tables.c
  4. 1
      src/include/utils/guc.h

@ -11381,33 +11381,6 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir'
</listitem>
</varlistentry>
<varlistentry id="guc-backtrace-on-internal-error" xreflabel="backtrace_on_internal_error">
<term><varname>backtrace_on_internal_error</varname> (<type>boolean</type>)
<indexterm>
<primary><varname>backtrace_on_internal_error</varname> configuration parameter</primary>
</indexterm>
</term>
<listitem>
<para>
If this parameter is on and an error with error code XX000 (internal
error; see also <xref linkend="errcodes-appendix"/>) is raised, then a
backtrace is written to the server log together with the error
message. This can be used to debug such internal errors (which should
normally not happen in production). The default is off.
</para>
<para>
Backtrace support is not available on all platforms, and the quality
of the backtraces depends on compilation options.
</para>
<para>
Only superusers and users with the appropriate <literal>SET</literal>
privilege can change this setting.
</para>
</listitem>
</varlistentry>
<varlistentry id="guc-debug-discard-caches" xreflabel="debug_discard_caches">
<term><varname>debug_discard_caches</varname> (<type>integer</type>)
<indexterm>

@ -497,11 +497,9 @@ errfinish(const char *filename, int lineno, const char *funcname)
/* Collect backtrace, if enabled and we didn't already */
if (!edata->backtrace &&
((edata->funcname &&
backtrace_functions &&
matches_backtrace_functions(edata->funcname)) ||
(edata->sqlerrcode == ERRCODE_INTERNAL_ERROR &&
backtrace_on_internal_error)))
edata->funcname &&
backtrace_functions &&
matches_backtrace_functions(edata->funcname))
set_backtrace(edata, 2);
/*

@ -531,7 +531,6 @@ int log_temp_files = -1;
double log_statement_sample_rate = 1.0;
double log_xact_sample_rate = 0;
char *backtrace_functions;
bool backtrace_on_internal_error = false;
int temp_file_limit = -1;
@ -770,16 +769,6 @@ StaticAssertDecl(lengthof(config_type_names) == (PGC_ENUM + 1),
struct config_bool ConfigureNamesBool[] =
{
{
{"backtrace_on_internal_error", PGC_SUSET, DEVELOPER_OPTIONS,
gettext_noop("Log backtrace for any error with error code XX000 (internal error)."),
NULL,
GUC_NOT_IN_SAMPLE
},
&backtrace_on_internal_error,
false,
NULL, NULL, NULL
},
{
{"enable_seqscan", PGC_USERSET, QUERY_TUNING_METHOD,
gettext_noop("Enables the planner's use of sequential-scan plans."),

@ -267,7 +267,6 @@ extern PGDLLIMPORT int log_temp_files;
extern PGDLLIMPORT double log_statement_sample_rate;
extern PGDLLIMPORT double log_xact_sample_rate;
extern PGDLLIMPORT char *backtrace_functions;
extern PGDLLIMPORT bool backtrace_on_internal_error;
extern PGDLLIMPORT int temp_file_limit;

Loading…
Cancel
Save