gpt4 book ai didi

c++ - dlopen 可能出现段错误的潜在原因?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:41:31 28 4
gpt4 key购买 nike

除了共享对象不存在之外,dlopen 可能出现段错误的一些原因是什么?

在我的例子中,我知道共享对象存在,但是当我的程序使用 dlopen 加载它时,它会出现段错误。我检查了我的 lib 文件夹,共享对象在那里,路径都是正确的。

    handle = dlopen(libraryName.c_str(), RTLD_LAZY | RTLD_GLOBAL);

gdb BT:

#0  0x00000000001b94f5 in ?? ()
#1 0x00007fffefd96db6 in __do_global_ctors_aux () from /usr/local/lib/MY_LIB2.so
#2 0x00007fffefcf82c3 in _init () from /usr/local/lib/MY_LIB2.so
#3 0x00007fffed69c6c8 in ?? () from /usr/local/lib/MY_LIB1.so
#4 0x00007ffff7de9dc4 in call_init () from /lib64/ld-linux-x86-64.so.2
#5 0x00007ffff7de9ef6 in _dl_init_internal () from /lib64/ld-linux-x86-64.so.2
#6 0x00007ffff7dedf43 in dl_open_worker () from /lib64/ld-linux-x86-64.so.2
#7 0x00007ffff7de9c36 in _dl_catch_error () from /lib64/ld-linux-x86-64.so.2
#8 0x00007ffff7ded7ca in _dl_open () from /lib64/ld-linux-x86-64.so.2
#9 0x00007ffff5c5af26 in dlopen_doit () from /lib64/libdl.so.2
#10 0x00007ffff7de9c36 in _dl_catch_error () from /lib64/ld-linux-x86-64.so.2
#11 0x00007ffff5c5b4cf in _dlerror_run () from /lib64/libdl.so.2
#12 0x00007ffff5c5afc1 in dlopen@@GLIBC_2.2.5 () from /lib64/libdl.so.2
#13 0x00007ffff6ecef7e in mynamespace::Factory::attachModule (this=0x61d440, libraryName=...) at Factory.cpp:324
#14 0x00007ffff6ecefe6 in mynamespace::Factory::attachFunction (this=0x61d440, functionName=..., moduleName=...) at Factory.cpp:343
#15 0x00007ffff6ecdd16 in mynamespace::Factory::ReadFile (this=0x61d440, x=...) at Factory.cpp:111
#16 0x00007ffff6ecda62 in mynamespace::Factory::ReadDirectory (this=0x61d440, x=...) at Factory.cpp:79
#17 0x00007ffff6ecdc66 in mynamespace::Factory::ReadDirectory (this=0x61d440, x=0x417901 "/usr/local/lib/") at Factory.cpp:105

#18 0x0000000000410637 in main (argc=2, argv=0x7ffffffffdd58) at main.cpp:78

最佳答案

除了将库加载到内存中并修复引用之外,运行时链接器还运行初始化程序,例如标记为 __attribute__((constructor)) 的函数,一个初始化函数(如果使用 - Wl,-init,...),以及全局对象的构造函数。您的回溯表明其中之一失败了。

具体来说,__do_global_ctors_aux 运行全局对象的构造函数。检查那些。

关于c++ - dlopen 可能出现段错误的潜在原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11934847/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com