RHEL Engineering is moving the tracking of its product development work on RHEL 6 through RHEL 9 to Red Hat Jira (issues.redhat.com). If you're a Red Hat customer, please continue to file support cases via the Red Hat customer portal. If you're not, please head to the "RHEL project" in Red Hat Jira and file new tickets here. Individual Bugzilla bugs in the statuses "NEW", "ASSIGNED", and "POST" are being migrated throughout September 2023. Bugs of Red Hat partners with an assigned Engineering Partner Manager (EPM) are migrated in late September as per pre-agreed dates. Bugs against components "kernel", "kernel-rt", and "kpatch" are only migrated if still in "NEW" or "ASSIGNED". If you cannot log in to RH Jira, please consult article #7032570. That failing, please send an e-mail to the RH Jira admins at rh-issues@redhat.com to troubleshoot your issue as a user management inquiry. The email creates a ServiceNow ticket with Red Hat. Individual Bugzilla bugs that are migrated will be moved to status "CLOSED", resolution "MIGRATED", and set with "MigratedToJIRA" in "Keywords". The link to the successor Jira issue will be found under "Links", have a little "two-footprint" icon next to it, and direct you to the "RHEL project" in Red Hat Jira (issue links are of type "https://issues.redhat.com/browse/RHEL-XXXX", where "X" is a digit). This same link will be available in a blue banner at the top of the page informing you that that bug has been migrated.
Bug 2128615 - glibc: New DSO dependency sorter does not put new map first if in a cycle
Summary: glibc: New DSO dependency sorter does not put new map first if in a cycle
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Enterprise Linux 9
Classification: Red Hat
Component: glibc
Version: 9.2
Hardware: All
OS: Linux
unspecified
high
Target Milestone: rc
: 9.2
Assignee: Florian Weimer
QA Contact: Sergey Kolosov
Jacob Taylor Valdez
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2022-09-21 09:17 UTC by Florian Weimer
Modified: 2023-05-09 10:19 UTC (History)
10 users (show)

Fixed In Version: glibc-2.34-47.el9
Doc Type: Bug Fix
Doc Text:
.Shared objects in cycles not recorded as last when loaded with `dlopen` Previously, a shared object that was in a cycle and loaded using `dlopen` was not recorded as the last object to be initialized. Consequently, when a `dlclose` call was made, the shared object may have been incorrectly unloaded as it was not marked as still in use. A fix was implemented where the directly loaded shared object is always initialized last. As a result, the `dlclose` function no longer incorrectly unloads the shared object, and the dynamic linker now always initializes the directly loaded shared object after all objects are loaded during a particular `dlopen` call, even if there is a cycle.
Clone Of:
Environment:
Last Closed: 2023-05-09 08:16:01 UTC
Type: Bug
Target Upstream Version:
Embargoed:
pm-rhel: mirror+


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Issue Tracker RHELPLAN-134500 0 None None None 2022-10-11 09:16:42 UTC
Red Hat Product Errata RHBA-2023:2481 0 None None None 2023-05-09 08:16:39 UTC
Sourceware 28937 0 P2 RESOLVED New DSO dependency sorter does not put new map first if in a cycle 2022-09-21 09:17:21 UTC

Description Florian Weimer 2022-09-21 09:17:21 UTC
We backported the new dependency sorter into glibc at Red Hat Enterprise Linux 9 GA, so we need to pick up this fix that was recently committed upstream:

commit 1df71d32fe5f5905ffd5d100e5e9ca8ad6210891
Author: Florian Weimer <fweimer>
Date:   Tue Sep 20 11:00:42 2022 +0200

    elf: Implement force_first handling in _dl_sort_maps_dfs (bug 28937)
    
    The implementation in _dl_close_worker requires that the first
    element of l_initfini is always this very map (“We are always the
    zeroth entry, and since we don't include ourselves in the
    dependency analysis start at 1.”).  Rather than fixing that
    assumption, this commit adds an implementation of the force_first
    argument to the new dependency sorting algorithm.  This also means
    that the directly dlopen'ed shared object is always initialized last,
    which is the least surprising behavior in the presence of cycles.
    
    Reviewed-by: Adhemerval Zanella  <adhemerval.zanella>

commit dbb75513f5cf9285c77c9e55777c5c35b653f890
Author: Florian Weimer <fweimer>
Date:   Tue Sep 6 07:38:10 2022 +0200

    elf: Rename _dl_sort_maps parameter from skip to force_first
    
    The new implementation will not be able to skip an arbitrary number
    of objects.
    
    Reviewed-by: Adhemerval Zanella  <adhemerval.zanella>

commit 183d99737298bb3200f0610fdcd1c7549c8ed560
Author: Florian Weimer <fweimer>
Date:   Tue Sep 6 07:38:10 2022 +0200

    scripts/dso-ordering-test.py: Generate program run-time dependencies
    
    The main program needs to depend on all shared objects, even objects
    that have link-time dependencies among shared objects.  Filtering
    out shared objects that already have an link-time dependencies is not
    necessary here; make will do this automatically.
    
    Reviewed-by: Adhemerval Zanella  <adhemerval.zanella>

Comment 9 errata-xmlrpc 2023-05-09 08:16:01 UTC
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 (glibc 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/RHBA-2023:2481


Note You need to log in before you can comment on or make changes to this bug.