On Sat, 2014-02-22 at 22:08 +0100, Jan Kratochvil wrote:
probably obvious, easy to debug with [patch 3/3] applied.
> 2014-02-22 Jan Kratochvil <jan.kratochvil(a)redhat.com>
>
> Fix abort() on missing section headers.
> * dwarf_begin_elf.c (check_section): Replace abort call by a return;
> [...]
> @@ -187,9 +187,9 @@ check_section (Dwarf *result, GElf_Ehdr *ehdr, Elf_Scn *scn,
bool inscngrp)
> /* Get the section header data. */
> shdr = gelf_getshdr (scn, &shdr_mem);
> if (shdr == NULL)
> - /* This should never happen. If it does something is
> - wrong in the libelf library. */
> - abort ();
> + /* We may read /proc/PID/mem with only program headers mapped and section
> + headers out of the mapped pages. */
> + return result;
We certainly shouldn't abort on bad data!
But do we even need to continue at this point?
return result; means we will keep searching through the section table,
which apparently is busted anyway. So I think it makes sense to cleanup
and return NULL; instead.
See how we cleanup and return NULL just below this code when elf_strptr
fails.
Thanks,
Mark