[backtrace] Avoid segfault

Ian Lance Taylor iant@golang.org
Mon Jan 28 01:39:00 GMT 2019


On Sun, Jan 27, 2019 at 1:16 PM Tom de Vries <tdevries@suse.de> wrote:
>
> On 25-01-19 18:15, Nathan Sidwell wrote:
> > On 1/25/19 5:28 AM, Tom de Vries wrote:
> >>
> >> This patch fixes it by passing "" instead of NULL, in the call to
> >> elf_add at line 3083 (for .gnu_debugaltlink), not the call to elf_add at
> >> line 3044 (for .gnu_debuglink) mentioned above.
> >>
> >> Nathan, does this fix the problem for you? If not, can you provide a
> >> reproducer, or give a hint on how one could be constructed?
> >
> > I still hit the problem, and am installing this as sufficiently obvious.
> >  I'm on a fedora system debugging pr88995.  The debuglink_name is
> > "../../.dwz/isl-0.16.1-7.fc29.x86_64"
> >
>
> I've managed to reproduce this segfault instance by adding a test-case
> that uses both build-id and dwz.
>
> OK for trunk?

> +elf_for_test.c: elf.c
> + PWD=$$(pwd -P); \
> + BUILD_ID_DIR="usr/lib/debug/.build-id/"; \
> + SEARCH='#define SYSTEM_BUILD_ID_DIR'; \
> + REPLACE="#define SYSTEM_BUILD_ID_DIR \"$$PWD/$$BUILD_ID_DIR\""; \
> + $(SED) "s%^$$SEARCH.*\$$%$$REPLACE%" \
> + $< \
> + > $@

You need to use a temporary file, such as $@.tmp, for the final sed
command, followed by a mv to $@.  Otherwise a failure in the sed will
leave what appears to be an up to date file.

Honestly I'm not sure this patch is worth doing.  It adds a lot of
complex mechanism in order to test a patch that is fairly obvious.
While it's good practice to add a test for every change, it's not good
practice for the testsuite to become so complex that it becomes in
itself difficult to maintain.

Ian



More information about the Gcc-patches mailing list