当前位置:  技术问答>linux和unix

solaris, dlopen 加载动态库崩溃,请帮助分析谢谢

    来源: 互联网  发布时间:2016-06-11

    本文导语:  solaris, dlopen 加载动态库崩溃, 崩溃时候的堆栈如下   [1] _memcpy(0xfdae00, 0x1004000, 0x4a543b6d, 0x0, 0x4, 0xfffffffffffffff8), at 0x7fba0720    [2] std::basic_string::__clone(0x7723750c, 0x0, 0x4a616e75, 0xf07b38, 0x7cf2125c, 0xf30cf0), at 0x7ccdaf60 ...


solaris, dlopen 加载动态库崩溃,

崩溃时候的堆栈如下

  [1] _memcpy(0xfdae00, 0x1004000, 0x4a543b6d, 0x0, 0x4, 0xfffffffffffffff8), at 0x7fba0720 
  [2] std::basic_string::__clone(0x7723750c, 0x0, 0x4a616e75, 0xf07b38, 0x7cf2125c, 0xf30cf0), at 0x7ccdaf60 
  [3] std::basic_string::reserve(0x7723750c, 0xe, 0xf30cf7, 0xf30cf8, 0xf30cf8, 0x0), at 0x7ccd51ac 
  [4] std::__copy(0xffbfefb8, 0x77236bd3, 0x77236bd4, 0xffbfefb4, 0xffbfefb3, 0x1), at 0x771f3360 
  [5] std::_Init_timeinfo(0x772373c8, 0x77236a94, 0x77237470, 0x77236bcc, 0xe, 0x77232cc8), at 0x771f14a4 
  [6] std::_Locale_impl::make_classic_locale(0x772372d0, 0x772373b8, 0x77237470, 0x772375c0, 0x772375b4, 0x772375a8), at 0x771d8880 
  [7] std::locale::_S_initialize(0x1, 0x0, 0x77232cc8, 0x1a4, 0x599a0, 0x0), at 0x771d9344 
  [8] __SLIP.INIT_A(0x0, 0x29a350, 0x7a9a0000, 0x77212a68, 0xfffe7bd0, 0x772128a4), at 0x771beb68 
  [9] __STATIC_CONSTRUCTOR(0x0, 0x7aaeaf74, 0xfffdd7c0, 0x8, 0x13984, 0x7cf2125c), at 0x771bede4 
  [10] 0x77212994(0x0, 0x7faf1f30, 0x30, 0x7fb01fe8, 0x20000000, 0x40000000), at 0x77212994 
  [11] call_init(0x400000, 0x80000, 0x7fbee7c4, 0x7faf1558, 0xffffffff, 0x0), at 0x7fbc0254 
  [12] dlmopen_intn(0x7fbee0c4, 0xfff610, 0xd02, 0x7fb50d80, 0x0, 0x0), at 0x7fbc56d4 
  [13] dlmopen_check(0x7fbee0c4, 0xfff610, 0x102, 0x7fb50d80, 0xffbff33c, 0x0), at 0x7fbc5818 
  [14] _dlopen(0xfff610, 0x102, 0x29c6a9, 0x0, 0x0, 0x0), at 0x7fbc58d4 
=>[15] load_dynamic_library(), line 69 in "xxx.c"



其中 =>[15] load_dynamic_library(), line 69 in "xxx.c" 
的  load_dynamic_library 是我写的函数, 其中运行到如下的语句就崩溃了

libc = dlopen("**.so",RTLD_NOW|RTLD_GLOBAL);

我检查过 "**.so" 的路径是没有问题的,文件存在 ,

兄弟们帮助分析一下吧,谢谢










|
记得用 dlopen dlclose 之类的 应用程序 gcc 编译时 要加 一个编译选项  -rdynamic

|
       #include 
       #include 
       #include 

       int
       main(int argc, char **argv)
       {
           void *handle;
           double (*cosine)(double);
           char *error;

           handle = dlopen("libm.so", RTLD_LAZY);
           if (!handle) {
               fprintf(stderr, "%sn", dlerror());
               exit(EXIT_FAILURE);
           }

           dlerror();    /* Clear any existing error */

           /* Writing: cosine = (double (*)(double)) dlsym(handle, "cos");
              would seem more natural, but the C99 standard leaves
              casting from "void *" to a function pointer undefined.
              The assignment used below is the POSIX.1-2003 (Technical
              Corrigendum 1) workaround; see the Rationale for the
              POSIX specification of dlsym(). */

           *(void **) (&cosine) = dlsym(handle, "cos");

           if ((error = dlerror()) != NULL)  {
               fprintf(stderr, "%sn", error);
               exit(EXIT_FAILURE);
           }

           printf("%fn", (*cosine)(2.0));
           dlclose(handle);
           exit(EXIT_SUCCESS);
       }


       If this program were in a file named "foo.c", you would build the program with the following command:

       gcc -rdynamic -o foo foo.c -ldl

       Libraries exporting _init() and _fini() will want to be compiled as follows, using bar.c as the example name:

       gcc -shared -nostartfiles -o bar bar.c

|
你怎么编译的?

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请问Solaris的优势?Solaris下开发相关及系统管理相关资料是否有提供?谢谢
  • 求solaris下的类似linux的top命令,谢谢!
  • 求 solaris 日常操作管理的电子书,谢谢.
  • 在solaris下如何卸载wu-ftpd???????????????????????谢谢大虾!!!!!!!!!!
  • 谁能提供一下Solaris的界面的样子,谢谢了
  • 请问怎么在windows和solaris之间互连和互传文件 谢谢!!
  • 请问怎样在一台电脑上安装solaris8 和win98?如方便,请给出详细的安装步骤.谢谢
  • solaris下有没有类似linux的Xwindow??(在线等,谢谢!!)
  • 在sun solaris 8系统下有没有具编辑、编译、调试一体的集成C(C++)开发工具?谢谢!
  • 谁能提供SUN SOLARIS 8的第4张盘的下载地址,谢谢200分
  • 安装solaris 10出现问题,向高人求救,谢谢
  • Solaris8 X86能硬盘安装嘛?哪位大哥给推荐一个学习的网站?谢谢了
  • 谁知道solaris对socket的recv和send函数是否是原子操作,谢谢!!
  • vm中装了solaris 10,但安不上vm tools ,哪位大侠能指点一下啊?谢谢
  • 想在windows2000下安装Solaris 9,可以采用什么方法实现及相关的配置要求,最好是给点说明性的资料,谢谢了
  • Solaris下,如何在程序中实现关机操作?怎样取出线程和进程数?谢谢!
  • 请问在SUN SOLARIS中如何设置IP地址,网关和DNS?谢谢!
  • 我下载了一个Solaris 可是用虚拟光驱打开后,怎么没有看到setup.exe的安装文件?是镜像文件的问题吗?在线等……谢谢了!!!
  • 各位大哥,请问怎样在solaris下安装SSLeay。具体步骤 ,谢谢
  • Solaris中的Qmail已经装上去了,又有新的问题,fierygnu(va_list)进入帮忙,谢谢
  • solaris 8上能用gcc for solaris7 或 solaris9的版本吗?
  • Solaris菜鸟!!!请问Solaris SPARC和Solaris x86这两个版本之间有什么具体的差异吗?
  • 请问Solaris现在最高的版本是多少?Solaris8.0价格如何?Solaris8.0和Red Hat Enterprise Linux AS 3.0有何区别?
  • 请教solaris高手一个solaris安装问题
  • solaris 10下的多线程和solaris 5.8下多线程编译有什么区别??
  • 听说在solaris上运行java飞快,solaris有多大,如果不大,我想下载,哪有下载?
  • 请问:SOLARIS(for intel)如何装d-link网卡。哪儿下Solaris电子文档。
  • Solaris for X86 和Solaris for Sparc主要区别在哪?
  • telnet 进去的时候我看写着SUN OS5.8,这个是不是Solaris?我找不到Solaris5.8的软件?
  • 没有光碟,怎样从solaris8升级到solaris9?
  • solaris 10能不能远程桌面连接Solaris 10(或 Linux) ,不要安装其他软件


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3