Chinaunix
标题:
dlopen函数是否检查so文件的合法性
[打印本页]
作者:
cclljj1987
时间:
2014-01-20 10:43
标题:
dlopen函数是否检查so文件的合法性
我在AIX环境下调用so动态库文件,在执行dlopen的时候内存溢出,导致程序down掉了。
检查主程序代码没看到异常操作,所以怀疑是动态库写的不对
dlopen在打开so文件的时候,会对so文件内的函数进行合法性校验么?
或者这么说,内存溢出有可能是so文件导致的么?
注:
dlopen调用:myhandle=dlopen("/home/efsc/lib/libsips.so",RTLD_GLOBAL|RTLD_LAZY);
作者:
pandaiam
时间:
2014-01-20 10:49
前两天刚搞过这个。。
确认具体是哪一步么,dlopen本身段错误?
strace看看,或者gdb调下。
作者:
cclljj1987
时间:
2014-01-20 11:06
我用dbx看了一下core文件,内容如下:
dbx batchpro core
>...
...
>dlopen(??,??) at 0x.....
>callDYFUNC(pdata=""),line 75 in "calldyfunc.c "
>main (argc=1,argv=0x0fff.....), line .....
回复
2#
pandaiam
作者:
cclljj1987
时间:
2014-01-20 11:08
根据dbx显示,我觉得是dlopen函数段错误了
作者:
pandaiam
时间:
2014-01-20 11:54
程序调用者有esfc用户的权限吗?
我这里只有Linux,没有aix。。
作者:
cclljj1987
时间:
2014-01-20 12:24
是的
回复
5#
pandaiam
作者:
MMMIX
时间:
2014-01-20 13:42
cclljj1987 发表于 2014-01-20 10:43
dlopen在打开so文件的时候,会对so文件内的函数进行合法性校验么?
dlopen() (实际是 ld.so)只加载 so 文件,并对其中的符号做动态链接,其他就不管了。
或者这么说,内存溢出有可能是so文件导致的么?
完全有可能。
作者:
file3
时间:
2014-02-04 21:53
有很多系统不是都支持dlopen。但是都有办法动态加载程序库。可以参照freeradius
作者:
一只嗡嗡的苍蝇
时间:
2014-02-04 23:36
so被加载了会执行一些代码的吧。有些变量初始化可能就在这时候。
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2