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.

Thus, this is the least intrusive fix. While restructuring dlopen()
and dlclose() could fix this better, I did not have the time or
interest to rewrite most of the libdl code.

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

Reply via email to