Description of problem: Linking DSOs with g++ --Wl,--filter=someDSO.so, and DSO produced can't be dlopened or feeded to ldd $ ldd someDSO.so Inconsistency detected by ld.so: dl-deps.c: 553: _dl_map_object_deps: Assertion `map->l_searchlist.r_list[0] == map' failed! Version-Release number of selected component (if applicable): glibc-2.28 How reproducible: Always Steps to Reproduce: 1. Set DT_FILTER to a shared library as below: $ g++ --Wl,--filter=someDSO.so 2. Load the library using dlopen or just do ldd on it: $ ldd someDSO.so Inconsistency detected by ld.so: dl-deps.c: 553: _dl_map_object_deps: Assertion `map->l_searchlist.r_list[0] == map' failed! Actual results: Crashes with Assertion message as below: Inconsistency detected by ld.so: dl-deps.c: 553: _dl_map_object_deps: Assertion `map->l_searchlist.r_list[0] == map' failed! Expected results: Library should load without any error/problem with DT_FILTER set to it. Additional info: Issue is reported in upstream at https://sourceware.org/bugzilla/show_bug.cgi?id=16272. I had provided a test package to the customer including fix from the upstream bugzilla and customer has confirmed that it fixes the issue.
*** Bug 1812757 has been marked as a duplicate of this bug. ***
We are planning to fix this in the upcoming RHEL 8.3.0 release. I want to point out that the present DT_FILTER implementation may have issues with respect to function filtering that are considered out of scope for this bug. We can continue to refine the implementation upstream. The exact semantics of DT_FILTER, DT_AUXFILTER are not the subject of this bug report and can be further examined upstream.
Verified with glibc testsuite and https://sourceware.org/bugzilla/show_bug.cgi?id=16272#c0 reproducer.
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory (Moderate: glibc security, bug fix, and enhancement update), and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHSA-2020:4444