On Sun, Feb 26, 2012 at 12:11:43AM +0100, Kurt Roeckx wrote:
In libelf/elf_end.c:244 you have:
rwlock_fini (elf->lock);
But this lock is always still held when you get there.
I see this:
> Results are undefined if pthread_rwlock_destroy()
> is called when any thread holds rwlock.
[...]
And I get this on Debian's kfreebsd port, resulting in an
assertion failure. I wonder why I'm not getting it on other
ports.
The result is undefined and reporting EBUSY isn't required,
so an implementation is certainly allowed to just ignore any
locks still being held.
Adding a "rwlock_unlock (elf->lock);" just in front of
that
line fixes the problem.
Yes, that looks correct.
Thanks,
Mark