From: | vignesh C <vignesh21(at)gmail(dot)com> |
---|---|
To: | Bharath Rupireddy <bharath(dot)rupireddyforpostgres(at)gmail(dot)com> |
Cc: | Daniel Gustafsson <daniel(at)yesql(dot)se>, Robert Haas <robertmhaas(at)gmail(dot)com>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Andres Freund <andres(at)anarazel(dot)de>, Craig Ringer <craig(dot)ringer(at)enterprisedb(dot)com>, Peter Eisentraut <peter(dot)eisentraut(at)enterprisedb(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
Subject: | Re: Printing backtrace of postgres processes |
Date: | 2021-11-11 06:43:49 |
Message-ID: | CALDaNm3HTxjppsN1fe7kJGb-15uO4GN4PvdPu8zaEHtYqQLFhQ@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Wed, Nov 10, 2021 at 12:17 PM Bharath Rupireddy
<bharath(dot)rupireddyforpostgres(at)gmail(dot)com> wrote:
>
> On Tue, Nov 9, 2021 at 4:45 PM vignesh C <vignesh21(at)gmail(dot)com> wrote:
> > Thanks for reporting this, the attached v9 patch has the changes for the same.
>
> Thanks for the v9 patch. I have some comments:
>
> 1) I think we are moving away from if (!superuser()) checks, see the
> commit [1]. The goal is to let the GRANT-REVOKE system deal with who
> is supposed to run these system functions. Since pg_print_backtrace
> also writes the info to server logs,
Modified
> 2) I think we need to have LOG_SERVER_ONLY instead of LOG to avoid
> bakctrace being sent to the connected client. This will be good from
> security perspective as well since we don't send backtrace over the
> wire to the client.
> + PrintBacktracePending = false;
> + ereport(LOG,
> + (errmsg("logging backtrace of PID %d", MyProcPid)));
>
> for pg_log_backend_memory_contexts:
> + /*
> + * Use LOG_SERVER_ONLY to prevent the memory contexts
> from being sent
> + * to the connected client.
> + *
> + * We don't buffer the information about all memory
> contexts in a
> + * backend into StringInfo and log it as one message.
> Otherwise which
> + * may require the buffer to be enlarged very much and
> lead to OOM
> + * error since there can be a large number of memory
> contexts in a
> + * backend. Instead, we log one message per memory context.
> + */
> + ereport(LOG_SERVER_ONLY,
Modified
> 3) I think we need to extend this function to the auxiliary processes
> too, because users might be interested to see what these processes are
> doing and where they are currently stuck via their backtraces, see the
> proposal for pg_log_backend_memory_contexts at [2]. I think you need
> to add below code in couple of other places such as
> HandleCheckpointerInterrupts, HandleMainLoopInterrupts,
> HandlePgArchInterrupts, HandleStartupProcInterrupts,
> HandleWalWriterInterrupts.
>
> + /* Process printing backtrace */
> + if (PrintBacktracePending)
> + ProcessPrintBacktraceInterrupt();
Created 0002 patch to handle this.
Thanks for the comments, the attached v10 patch has the fixes for the same.
Regards,
Vignesh
Attachment | Content-Type | Size |
---|---|---|
v10-0001-Print-backtrace-of-specified-postgres-process.patch | text/x-patch | 21.4 KB |
v10-0002-pg_print_backtrace-support-for-printing-backtrac.patch | text/x-patch | 8.4 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | houzj.fnst@fujitsu.com | 2021-11-11 06:52:40 | RE: Data is copied twice when specifying both child and parent table in publication |
Previous Message | Greg Nancarrow | 2021-11-11 06:37:46 | Re: On login trigger: take three |