We have a glibc build unter test (glibc-2.28-221.el8) that switches the
DSO dependency sorter to the current upstream version. It's already
part of CentOS 9 Stream (and was introduced into Fedora 35 in January
this year).
The dependency sorter determines the order in which ELF shared objects
are initialized, and in case of multiple shared objects providing the
same symbol, which symbol definition is chosen for the process. The old
dependency sorter exhibits very bad performance with certain dependency
graphs. For example, some users have reported significant delays during
process exit after many shared objects have been opened using dlopen.
The old and new algorithm do not necessarily produce the same results in
all cases if cycles are involved (which means that there is no one true
solution to the initialization order problem). This means that there is
a possiblity of an observable behavioral difference, although we have
not received any reports that this causes problems.
Thanks,
Florian