This is the mail archive of the elfutils-devel@sourceware.org mailing list for the elfutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: elf_end(): rwlock_fini() with a locked object


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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]