On Saturday, 10 December 2016 at 02:39:33 UTC, timotheecour wrote:
Have a look at what `trace -E d_executable args` and `trace -E c++_executable args`
print on startup and grep for dlopen calls and the like.

do you mean strace?
I have trace on OSX but I'm asking for linux.

Looking at the code for $checkModuleCollisions in druntime [src/rt/sections_elf_shared.d:859]:

* Check for module collisions. A module in a shared library collides * with an existing module if it's ModuleInfo is interposed (search * symbol interposition) by another DSO. Therefor two modules with the * same name do not collide if their DSOs are in separate symbol resolution
 * chains.

Not exactly sure what that means nor how to fix my issue:

void some_fun(){
  handle=dlopen2("path/liblib.so", RTLD_LAZY | RTLD_LOCAL);
  // error: The module 'foo' is already defined in 'libmylib.so'

How would I modify the code to avoid this?

Reply via email to