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