Re: Printing backtrace of postgres processes - Mailing list pgsql-hackers

From Dilip Kumar
Subject Re: Printing backtrace of postgres processes
Date
Msg-id CAFiTN-ueXOUOfZwuCd27komxXioaaN5sLatceOePkO1nZYUzAg@mail.gmail.com
Whole thread Raw
In response to Re: Printing backtrace of postgres processes  (vignesh C <vignesh21@gmail.com>)
Responses Re: Printing backtrace of postgres processes
Re: Printing backtrace of postgres processes
List pgsql-hackers
On Mon, Nov 15, 2021 at 10:34 AM vignesh C <vignesh21@gmail.com> wrote:

>
> Thanks for the comments, the attached v12 patch has the changes for the same.

I have reviewed this patch and have some comments on v12-0001,

1.
+        This feature is not supported for the postmaster, logger, checkpointer,
+        walwriter, background writer or statistics collector process. This


Comment says it is not supported for postmaster, logger, checkpointer
etc, but I just tried and it is working for checkpointer and walwriter
processes, can you explain in comments why do we not want to support
for these processes?  or the comment is old and now we are supporting
for some of these processes.


2.
postgres[64154]=# select pg_print_backtrace(64136);
WARNING:  01000: PID 64136 is not a PostgreSQL server process
LOCATION:  pg_print_backtrace, signalfuncs.c:335
 pg_print_backtrace
--------------------
 f


For postmaster I am getting this WARNING "PID 64136 is not a
PostgreSQL server process", even if we don't want to support this
process I don't think this message is good.



3.
I was looking into the patch, I tried to print the backtrace using GDB
as well as using this function, I have complied in debug mode, I can
see the backtrace printed
by GDB is more detailed than printed by this API, I understand we can
find out the function name from address, but can't we print the
detailed call stack with all function names at least when debug
symbols are available?

Using GDB

#0  0x00007fa26c527e93 in __epoll_wait_nocancel () from
#1  0x0000000000947a61 in WaitEventSetWaitBlock (set=0x2
#2  0x00000000009478f9 in WaitEventSetWait (set=0x2f0111
#3  0x00000000007a6cef in secure_read (port=0x2f26800, p
#4  0x00000000007b0bd6 in pq_recvbuf () at pqcomm.c:957
#5  0x00000000007b0c86 in pq_getbyte () at pqcomm.c:1000
#6  0x0000000000978c13 in SocketBackend (inBuf=0x7ffea99
#7  0x0000000000978e37 in ReadCommand (inBuf=0x7ffea9937
#8  0x000000000097dca5 in PostgresMain (dbname=0x2f2ef40
....

Using pg_print_backtrace
        postgres: dilipkumar postgres [local]
SELECT(set_backtrace+0x38) [0xb118ff]
        postgres: dilipkumar postgres [local]
SELECT(ProcessPrintBacktraceInterrupt+0x5b) [0x94fe42]
        postgres: dilipkumar postgres [local]
SELECT(ProcessInterrupts+0x7d9) [0x97cb2a]
        postgres: dilipkumar postgres [local] SELECT() [0x78143c]
        postgres: dilipkumar postgres [local] SELECT() [0x736731]
        postgres: dilipkumar postgres [local] SELECT() [0x738f5f]
        postgres: dilipkumar postgres [local]
SELECT(standard_ExecutorRun+0x1d6) [0x736d94]
        postgres: dilipkumar postgres [local] SELECT(ExecutorRun+0x55)
[0x736bbc]
        postgres: dilipkumar postgres [local] SELECT() [0x97ff0c]
        postgres: dilipkumar postgres [local] SELECT(PortalRun+0x268) [0x97fbbf]
        postgres: dilipkumar postgres [local] SELECT() [0x9798dc]
        postgres: dilipkumar postgres [local]
SELECT(PostgresMain+0x6ca) [0x97dda7]

4.
+WARNING:  backtrace generation is not supported by this installation
+ pg_print_backtrace
+--------------------
+ f

Should we give some hints on how to enable that?


-- 
Regards,
Dilip Kumar
EnterpriseDB: http://www.enterprisedb.com



pgsql-hackers by date:

Previous
From: "tanghy.fnst@fujitsu.com"
Date:
Subject: RE: row filtering for logical replication
Next
From: "tanghy.fnst@fujitsu.com"
Date:
Subject: RE: row filtering for logical replication