dlopen调用引发段错误

longcrazy 2014-02-12 10:32:02
最近在开发raid卡的项目时遇到加载库文件时产生段错误
gdllInstanceMR = dlopen("libstorelib.so", RTLD_LAZY);

调用此语句产生段错误
打印的调用栈的信息是
#0 0x0000000000000000 in ?? ()
#1 0x0000003ba0c05b1d in __pthread_initialize_minimal_internal () from /lib64/libpthread.so.0
#2 0x0000003ba0c052d9 in _init () from /lib64/libpthread.so.0
#3 0x0000003b00000000 in ?? ()
#4 0x00000000010426ce in _dl_init ()
#5 0x0000000001024a34 in dl_open_worker ()
#6 0x0000000001022b36 in _dl_catch_error ()
#7 0x00000000010242ad in _dl_open ()
#8 0x0000000000fcea3c in dlopen_doit ()
#9 0x0000000001022b36 in _dl_catch_error ()
#10 0x0000000000fcec60 in _dlerror_run ()
#11 0x0000000000fce9be in __dlopen ()
#12 0x00000000008f82e6 in CDiskManager::CDiskManager() ()
#13 0x00000000008f877b in CDiskManager::instance() ()
#14 0x00000000004b3026 in CPageRaidManage::UpdateSeldiskCombox (this=0x1a715530) at ../../GUI/Pages/PageRaidManage.cpp:386
#15 0x00000000004b467a in CPageRaidManage::CPageRaidManage (this=0x1a715530, pRect=<value optimized out>,
psz=<value optimized out>, icon=<value optimized out>, pParent=<value optimized out>) at ../../GUI/Pages/PageRaidManage.cpp:196
#16 0x00000000004b2933 in CPageRecord::CPageRecord (this=0x1a540800, pRect=<value optimized out>, psz=<value optimized out>,
icon=<value optimized out>, pParent=<value optimized out>) at ../../GUI/Pages/PageRecord.cpp:50
#17 0x00000000004ad127 in CPageGtMain::CPageGtMain (this=0x1a53fc40, pRect=<value optimized out>, psz=<value optimized out>,
icon=<value optimized out>, pParent=<value optimized out>) at ../../GUI/Pages/PageGtMain.cpp:90
#18 0x00000000004a7c6e in CPageDesktop::CPageDesktop (this=0xa24e650, pRect=<value optimized out>, psz=<value optimized out>,
icon=<value optimized out>, pParent=<value optimized out>) at ../../GUI/Pages/PageDesktop.cpp:329
#19 0x000000000049d027 in CGUI::CreatePages (this=0xa0cc050) at ../../GUI/GUI.cpp:479
#20 0x0000000000446bed in CChallenger::Initialize (this=0x2658900, argc=<value optimized out>, argv=<value optimized out>)
at ../../Main/Main.cpp:461
#21 0x000000000044750c in main (argc=1, argv=0x7fffffffe4d8) at ../../Main/Main.cpp:1359


郁闷的是开发库文件时,写测试用例的时候也调用此语句没有问题,做项目的时候调用此语句就产生问题了。我有点怀疑是不是makefile写的有问题。

是不是libstorelib.so依赖的某些库要加上特定的选项?还是因为其他原因
libstorelib.so 依赖的库如下:
ldd /usr/lib/libstorelib.so
linux-vdso.so.1 => (0x00007fff0ad36000)
libz.so.1 => /lib64/libz.so.1 (0x00007f87186a5000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f8718488000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f8718283000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f8717f7d000)
libm.so.6 => /lib64/libm.so.6 (0x00007f8717cf9000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f8717ae2000)
libc.so.6 => /lib64/libc.so.6 (0x00007f871774e000)
/lib64/ld-linux-x86-64.so.2 (0x0000003ba0000000)




...全文
434 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧