Is there a clear description of exactly the problem solved by the patch?
This looks like a serious problem that we need to fix, but I have not
seen a clear "What problem are your solving?" kind of description of the
problem and how the fix relates.

It appears that the patch does:

* In _dl_close_worker we don't swap back the old l_orig_initfini maps
(is this what was causing the access to dangling memory?) we made at
startup, and we don't free the current l_initfini maps we were using
(they will get freed elsewhere).

* In _dl_map_object_deps we immediately free the old l_initfini maps
instead of saving them to l_orig_initfini. We also use a new flag
l_free_initfini to mark that the maps were dynamically allocated and
need to be free'd.

* Given that we free the old l_initfini immediately, we only have the
current l_initfini to free when l_free_initfini is 1, and that is done
in libc_freeres_fn.

This seems logical and the change looks correct.

However, what was *actually* wrong with the original implementation?

Was it the swapping back of the l_orig_initfini?

What is wrong with the old l_orig_initfini?

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/893605

Title:
  crashes with glibc-2.14/2.15 on dlopen (seen with kvm and gnucash)

To manage notifications about this bug go to:
https://bugs.launchpad.net/glibc/+bug/893605/+subscriptions

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to