← Back to team overview

maria-developers team mailing list archive

Re: Why does name resolution stop in crash stack trace?


Hi, Sergey!

On Jul 18, Sergey Petrunia wrote:
> Hi,
> Look at today's crash report in maria-discuss@. A question not related
> to the cause of that crash: why do stack traces that go inside the
> storage engine cannot be resolved? Is something wrong with our build
> process?

We resolve stack traces using addr2line utility (see
mysys/my_addr_resolve.c). It takes the name of the executable as an
argument. Dynamic plugins are not part of the executable - so they
aren't resolved.

There are other approaches to resolving a stack trace, they would
resolve traces inside plugins, but they have drawbacks too:

* libbfd (it's used by addr2line internally) - it's GPLv3
* backtrace_symbols() - doesn't show filenames and line numbers
* libelf - extra dependency and not as ubiquitous as libbfd

One can build mariadb with libbfd by specifying -DNOT_FOR_DISTRIBUTION=1
but the resulting binary cannot be legally distributed.

libelf support is not currently implemented, but it should only take a
couple of hours to add it.

backtrace_symbols() - that's what MySQL is using.