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