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. Regards, Sergei