Re: Optionally using a better backtrace library?

From: Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>
To: Andres Freund <andres(at)anarazel(dot)de>
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: Optionally using a better backtrace library?
Date: 2023-07-02 18:34:59
Message-ID: CAFj8pRAkzMn06o0o7_6cMKrhePyB9kunhBJUf92YmYLU535YmQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

ne 2. 7. 2023 v 20:32 odesílatel Andres Freund <andres(at)anarazel(dot)de> napsal:

> Hi,
>
> I like that we now have a builtin backtrace ability. Unfortunately I think
> the
> backtraces are often not very useful, because only externally visible
> functions are symbolized.
>
> E.g.:
>
> 2023-07-02 10:54:01.756 PDT [1398494][client backend][:0][[unknown]] LOG:
> will crash
> 2023-07-02 10:54:01.756 PDT [1398494][client backend][:0][[unknown]]
> BACKTRACE:
> postgres: dev assert: andres postgres [local]
> initializing(errbacktrace+0xbb) [0x562a44c97ca9]
> postgres: dev assert: andres postgres [local]
> initializing(PostgresMain+0xb6) [0x562a44ac56d4]
> postgres: dev assert: andres postgres [local]
> initializing(+0x806add) [0x562a449f0add]
> postgres: dev assert: andres postgres [local]
> initializing(+0x806369) [0x562a449f0369]
> postgres: dev assert: andres postgres [local]
> initializing(+0x802406) [0x562a449ec406]
> postgres: dev assert: andres postgres [local]
> initializing(PostmasterMain+0x1676) [0x562a449ebd17]
> postgres: dev assert: andres postgres [local]
> initializing(+0x6ec2e2) [0x562a448d62e2]
> /lib/x86_64-linux-gnu/libc.so.6(+0x276ca) [0x7f1e820456ca]
> /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0x85)
> [0x7f1e82045785]
> postgres: dev assert: andres postgres [local]
> initializing(_start+0x21) [0x562a445ede21]
>
> which is far from as useful as it could be.
>
>
> A lot of platforms have "libbacktrace" available, e.g. as part of gcc. I
> think
> we should consider using it, when available, to produce more useful
> backtraces.
>
> I hacked it up for ereport() to debug something, and the backtraces are
> considerably better:
>
> 2023-07-02 10:52:54.863 PDT [1398207][client backend][:0][[unknown]] LOG:
> will crash
> 2023-07-02 10:52:54.863 PDT [1398207][client backend][:0][[unknown]]
> BACKTRACE:
> [0x55fcd03e6143] PostgresMain:
> ../../../../home/andres/src/postgresql/src/backend/tcop/postgres.c:4126
> [0x55fcd031154c] BackendRun:
> ../../../../home/andres/src/postgresql/src/backend/postmaster/postmaster.c:4461
> [0x55fcd0310dd8] BackendStartup:
> ../../../../home/andres/src/postgresql/src/backend/postmaster/postmaster.c:4189
> [0x55fcd030ce75] ServerLoop:
> ../../../../home/andres/src/postgresql/src/backend/postmaster/postmaster.c:1779
> [0x55fcd030c786] PostmasterMain:
> ../../../../home/andres/src/postgresql/src/backend/postmaster/postmaster.c:1463
> [0x55fcd01f6d51] main:
> ../../../../home/andres/src/postgresql/src/backend/main/main.c:198
> [0x7fdd914456c9] __libc_start_call_main:
> ../sysdeps/nptl/libc_start_call_main.h:58
> [0x7fdd91445784] __libc_start_main_impl: ../csu/libc-start.c:360
> [0x55fccff0e890] [unknown]: [unknown]:0
>
> The way each frame looks is my fault, not libbacktrace's...
>
> Nice things about libbacktrace are that the generation of stack traces is
> documented to be async signal safe on most platforms (with a #define to
> figure
> that out, and a more minimal safe version always available) and that it
> supports a wide range of platforms:
>
> https://github.com/ianlancetaylor/libbacktrace
> As of October 2020, libbacktrace supports ELF, PE/COFF, Mach-O, and XCOFF
> executables with DWARF debugging information. In other words, it supports
> GNU/Linux, *BSD, macOS, Windows, and AIX. The library is written to make
> it
> straightforward to add support for other object file and debugging
> formats.
>
>
> The state I currently have is very hacky, but if there's interest in
> upstreaming something like this, I could clean it up.
>

Looks nice

+1

Pavel

> Greetings,
>
> Andres Freund
>
>
>

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Laurenz Albe 2023-07-02 19:52:40 Re: Memory leak in incremental sort re-scan
Previous Message Andres Freund 2023-07-02 18:31:56 Optionally using a better backtrace library?