On Thu, Jun 27, 2013 at 09:36:14PM +0300, Timo Teras wrote:
> On Thu, 27 Jun 2013 14:16:26 -0400
> Rich Felker <dal...@aerifal.cx> wrote:
> 
> > On Thu, Jun 27, 2013 at 09:34:32AM +0300, Timo Teräs wrote:
> > > It can happen under certain cases that the DSO had refcount 0,
> > > but was already loaded. (NODELETE flag is set, or it is pulled
> > > in via both NEEDED dependency and explicit dlopen()).
> > 
> > Wouldn't it be more logical to prevent this from happening by not
> > using a refcount of zero? For example, NODELETE could just perform an
> > extra increment on the refcnt so that it never reaches 0. In essence,
> > the NODELETE flag is a permanent reference to the DSO.
> 
> It seems this is not the only case. As mentioned, NEEDED dependencies
> together with dlopen()/dlclose() can result in this too in some cases.
> Apparently usage_count refers to active handles from dlopen() - and can
> be zero if the lib is pulled in via NEEDED dependency only.

This is also a bug in the reference counting. DT_NEEDED and dlopen
should both be considered references for counting purposes. Otherwise
you can end up with a reference count of zero when the library is
still in use.

Rich
_______________________________________________
uClibc mailing list
uClibc@uclibc.org
http://lists.busybox.net/mailman/listinfo/uclibc

Reply via email to