dlmopen and isolation of loaded libraries

Basile Starynkevitch basile@starynkevitch.net
Mon Feb 27 16:57:33 GMT 2023


On 27/02/2023 12:48, Александр Ващилко via Libc-help wrote:
> Hi, I am developing a project that has the functionality of loading
> libraries of some third-party products which shipped with their own
> versions of libstdc++ or glibc.
> But my project needs to use its own versions of the same libraries.
> I found the dlmopen function, but as I understand, it has limited isolation
> functionality.


Yes. I assume your project runs a single process under Linux. Its 
virtual address space is not "isolating" shared libraries.

For debugging, try adding a routine reading /proc/self/maps (a textual 
file). Maybe also use pmap(1) 
<https://man7.org/linux/man-pages/man1/pmap.1.html> command.


Better isolation requires a multi-process approach. See also /proc and 
https://man7.org/linux/man-pages/man5/proc.5.html

>
> Also, as I understand from this article
> https://sourceware.org/glibc/wiki/LinkerNamespaces, every new namespace
> created by dlmopen have own copy of glibc of version from which dlmopen
> was called.
>
> I there any way to load third-party libraries with their own versions of
> libstdc++, their own versions of glibc, or all their own libraries of their
> own versions at the same time?
>
> Anyway, even if dlmopen doesn't support the required functionality, do
> glibc and libstdc++ support the simultaneous existence of different
> versions of these libraries at the same time in the same process?


This probably won't work well, or is a very brittle approach (conflict 
for similar global data mmap-ed twice?)


For details, read Levine's book: /Linkers & Loaders/, and download and 
study the source code of GNU libc and of musl-libc 
<https://musl.libc.org/> (and its documentation).


BTW, my pet open source project is the /RefPerSys/ open source 
artificial intelligence engine on http://refpersys.org/ (some source 
code on https://github.com/RefPerSys/RefPerSys ...)

Regards

-- 
Basile Starynkevitch<basile@starynkevitch.net>
(only mine opinions / les opinions sont miennes uniquement)
92340 Bourg-la-Reine, France
web page: starynkevitch.net/Basile/


More information about the Libc-help mailing list