public inbox for glibc-bugs@sourceware.org
help / color / mirror / Atom feed
From: "glibc at v dot ewheeler.net" <sourceware-bugzilla@sourceware.org>
To: glibc-bugs@sourceware.org
Subject: [Bug dynamic-link/18684] dlmopen a DSO that dlopen's into RTLD_GLOBAL segfaults.
Date: Fri, 10 Sep 2021 23:28:37 +0000 [thread overview]
Message-ID: <bug-18684-131-3ZoQCOjCSr@http.sourceware.org/bugzilla/> (raw)
In-Reply-To: <bug-18684-131@http.sourceware.org/bugzilla/>
https://sourceware.org/bugzilla/show_bug.cgi?id=18684
--- Comment #3 from Eric Wheeler <glibc at v dot ewheeler.net> ---
Created attachment 13661
--> https://sourceware.org/bugzilla/attachment.cgi?id=13661&action=edit
1-line patch plus comments originally written by Carlos O'Donell
Here is a summary of related comments from Michael Kerrisk from here:
https://sourceware.org/legacy-ml/libc-alpha/2015-07/msg00628.html
---------------------------------------------------------------------
[...]
This is precisely the use case the Solaris dlmopen() does support:
isolation of load namespaces, while allowing DSOs inside a namespace
to share symbols via RTLD_GLOBAL.
>
> This trick fails for the same reason that calling dlmopen
> with RTLD_GLOBAL would fail if you removed the check in dlfcn/dmlopen.c
> (dlmopen_doit). When you go to add the DSO to the global
> search list you find there is no search list setup. In the case of
> the application we have rtld setup the global search list.
>
> Which begs the question? What should the global search list
> be for a new namespace? I propose that the global search
> list for a new namespace should be a copy of the symbol search
> list (scope) of the first DSO loaded into the namespace with
> RTLD_GLOBAL, and subsequent RTLD_GLOBAL loads into the namespace
> add to that list.
The above is what Solaris appears to provide.
[...]
One other deviation that I note from Solaris. The dlopen() man page
currently says:
If filename is NULL, then the returned handle is for
the main program.
And this is what glibc currently does *regardless* of the namespace
from which the dlopen(NULL, flags) call is made. But, in the context
of dlmopen(LM_ID_NEWLM) namespaces, I'd expect this call to return
something like "the root of the this namespace". And that is what
Solaris appears to do.
[...]
The dlmopen() seems to have been added to Solaris to support
precisely the use cases that Carlos describes, and the glibc
implementation doesn't support those cases at all.
--
You are receiving this mail because:
You are on the CC list for the bug.
next prev parent reply other threads:[~2021-09-10 23:28 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-16 3:15 [Bug dynamic-link/18684] New: " carlos at redhat dot com
2015-10-16 21:36 ` [Bug dynamic-link/18684] " orion at cora dot nwra.com
2021-09-10 23:15 ` glibc at v dot ewheeler.net
2021-09-10 23:18 ` glibc at v dot ewheeler.net
2021-09-10 23:28 ` glibc at v dot ewheeler.net [this message]
2022-10-08 8:47 ` mtk.manpages at gmail dot com
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=bug-18684-131-3ZoQCOjCSr@http.sourceware.org/bugzilla/ \
--to=sourceware-bugzilla@sourceware.org \
--cc=glibc-bugs@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).