On 06/13/2013 03:23 PM, Petr Pisar wrote:

> AFAIK, ld-linux.so prevents from this by reusing the first libperl.so
addreses. However I have no idea if this is true for dlopen(). Do we get
two interpreters with two sets of global variables?

I'm not sure if it's good—it tends to cause random crashes if code from one copy is run on data generated by the other copy. It's not even necessary to have inconsistent global state, even totally innocuous things like

  if (ptr != &global_constant)
    free(ptr);

break horribly.

That being said, I used to dlopen(RTLD_GLOBAL) the libperl DSO in a JNI library for Java, and it appeared to work. But that was on Debian, and there, XS modules didn't link against libperl.so for performance reasons.

--
Florian Weimer / Red Hat Product Security Team
--
devel mailing list
devel@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/devel

Reply via email to