Re: PATCH: backtraces for error messages

From: Korry Douglas <korry(dot)douglas(at)enterprisedb(dot)com>
To: Craig Ringer <craig(at)2ndquadrant(dot)com>
Cc: Andres Freund <andres(at)anarazel(dot)de>, Pavan Deolasee <pavan(dot)deolasee(at)gmail(dot)com>, Michael Paquier <michael(at)paquier(dot)xyz>, Robert Haas <robertmhaas(at)gmail(dot)com>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: PATCH: backtraces for error messages
Date: 2018-06-22 15:26:32
Message-ID: CAPqDkTPiodDhfHBit_+mnGZLSc5SqeJOVOwGu4sJrc9Ku1RxJw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

A few misc comments:

In general, +1.

It might be nice to move the stack trace code into a separate function (not
static to elog.c) - I have often found it useful to attach backtraces to
objects so I can debug complex allocation/deallocation problems.

The major expense in capturing a stack trace is in the symbolization of the
stack addresses, not the stack walk itself. You typically want to
symbolize the addresses at the time you generate the trace, but that's not
always the case. For example, if you want to record the stack trace of
every call to AllocSetAlloc() (and attach the trace to the AllocChunk)
performance gets unbearable if you symbolize every trace. So a flag that
specifies whether to symbolize would be nice too.

If you don't symbolize, you need a way to capture the address range of each
dynamically loaded shared object (so that you can later symbolize using
something like addr2line).

(The above suggestions relate to server debugging, not application
debugging).

End of wish list...

-- Korry

On Fri, Jun 22, 2018 at 3:07 AM, Craig Ringer <craig(at)2ndquadrant(dot)com> wrote:

> On 22 June 2018 at 08:48, Andres Freund <andres(at)anarazel(dot)de> wrote:
>
>> On 2018-06-22 08:24:45 +0800, Craig Ringer wrote:
>> > On Thu., 21 Jun. 2018, 19:26 Pavan Deolasee, <pavan(dot)deolasee(at)gmail(dot)com>
>> > wrote:
>> >
>> > >
>> > >
>> > > On Thu, Jun 21, 2018 at 11:02 AM, Michael Paquier <
>> michael(at)paquier(dot)xyz>
>> > > wrote:
>> > >
>> > >> On Thu, Jun 21, 2018 at 12:35:10PM +0800, Craig Ringer wrote:
>> > >> > I wrote it because I got sick of Assert(false) debugging, and I was
>> > >> chasing
>> > >> > down some "ERROR: 08P01: insufficient data left in message"
>> errors.
>> > >> Then I
>> > >> > got kind of caught up in it... you know how it is.
>> > >>
>> > >> Yes, I know that feeling! I have been using as well the
>> Assert(false)
>> > >> and the upgrade-to-PANIC tricks a couple of times, so being able to
>> get
>> > >> more easily backtraces would be really nice.
>> > >>
>> > >>
>> > > Sometime back I'd suggested an idea to be able to dynamically manage
>> log
>> > > levels for elog messages [1].
>> > >
>> >
>> >
>> > Huge +1 from me on being able to selectively manage logging on a
>> > module/subsystem, file, or line level.
>> >
>> > I don't think I saw the post.
>> >
>> > Such a thing would obviously make built in backtrace support much more
>> > useful.
>>
>> I strongly suggest keeping these as separate as possible. Either is
>> useful without the other, and both are nontrivial. Tackling them
>> together imo makes it much more likely to get nowhere.
>>
>>
> Totally agree, and it's why I raised this as its own thing.
>
> Thanks.
>
> --
> Craig Ringer http://www.2ndQuadrant.com/
> PostgreSQL Development, 24x7 Support, Training & Services
>

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Rui DeSousa 2018-06-22 15:55:15 Re: New function pg_stat_statements_reset_query() to reset statistics of a specific query
Previous Message Stephen Frost 2018-06-22 15:17:42 Re: [PATCH] Include application_name in "connection authorized" log message