The following reply was made to PR misc/151861; it has been noted by GNATS.
From: Jaakko Heinonen <j...@freebsd.org> To: Kostik Belousov <kostik...@gmail.com> Cc: Arjan van Leeuwen <freebsd-maintai...@opera.com>, bug-follo...@freebsd.org, k...@freebsd.org Subject: Re: misc/151861: dlclose() of library causes separately opened libraries to unload as well Date: Wed, 3 Nov 2010 12:06:49 +0200 On 2010-11-02, Kostik Belousov wrote: > Why do you think that your patch is not correct ? Well, I didn't say that I think it's incorrect. :) > I feel that more explicit handling of the state of the DAG is cleaner. I don't disagree but there is a problem with your patch. If an object has the DF_1_NODELETE flag set, dag is initialized in load_needed_objects(). In this case the reference count isn't correctly bumped in dlopen() because dag_inited is already set. (BTW. I think that there shouldn't be the ref_dag(obj1) call in load_needed_objects(). Now the reference count is increased twice in the nodelete case.) > --- a/libexec/rtld-elf/rtld.c > +++ b/libexec/rtld-elf/rtld.c > @@ -1275,8 +1275,11 @@ init_dag(Obj_Entry *root) > { > DoneList donelist; > > + if (root->dag_inited) > + return; Why init_dag() should be allowed to be called multiple times for an object? Thanks. -- Jaakko _______________________________________________ freebsd-bugs@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-bugs To unsubscribe, send any mail to "freebsd-bugs-unsubscr...@freebsd.org"