This bug is also being tracked in the forums at:
prelink-20021002-r1, (`prelink --version` reads 1.0) and the lastest packages in
the Portage tree as of today, January 13 reports the following when attempting
to prelink any file:
# prelink -a
prelink: dso.c:306: fdopen_dso: Assertion `j == k' failed.
This happens on my laptop which was purchased two weeks ago, my desktop which
has been fully upgraded over time from Gentoo 1.0_rc6 back in the day, and a
server which is about three weeks old.
This problem is due to a UPX-compressed executable in a directory that is being
prelinked. firstname.lastname@example.org, the prelink author, has been informed of this
Consider adding such a notice to the Gentoo prelink guide.
OOh, many thanks I would have never found this one out.
Will add it to the howto asap.
Many thanks for the info.
I'm not sure about that...
I'm getting that bug and I don't have UPX installed at all.
Here's an example which fails with that error:
prelink -vmR /usr/bin/ls
Something tells me it might be more fundamental than that. Do you think 'ls' could possibly linked to a UPX compressed executable?
It's probably just a matter that prelink doesn't recognize the executable format and handles it less than gracefully. I would suggest running `emerge strace`, running `strace -o prelink.log prelink -vmR /usr/bin/ls`, and attaching the resultant prelink.log. This should help find the exact failure condition(s).
Okay, the trace gave away the problem. It failed to understand the binary from my antivirus client, which is distributed in binary only format. When I masked it (by masking /usr/local/bin), prelink started to work!
Perhaps something should be written about using strace to identify exactly what file is causing a problem?
It's in the howto (about the UPX exe)