I've got a few cores where report_r_debug() in link_map.c fails to find all of
the modules - for example I had libc.so missing. This obviously meant that
elfutils could not backtrace my core.
It seems to be related to this code:
/* There can't be more elements in the link_map list than there are
segments. DWFL->lookup_elts is probably twice that number, so it
is certainly above the upper bound. If we iterate too many times,
there must be a loop in the pointers due to link_map clobberation. */
size_t iterations = 0;
while (next != 0 && ++iterations < dwfl->lookup_elts)
I've changed this to just keep going until it reaches dwfl->lookup_elts*5,
which seems to "fix" it, but I feel there must be a better fix!
The most recent core I saw with this had lookup_elts=36, and hit 109 iterations
of the loop and then backtraced just fine.
Thanks!
Luke