2个程序(一个用glue,一个直接连接xpcom)用了NS_GetServiceManager全部死掉,SIGSEGV的原因
来源:互联网 发布:linux 移动文件夹指令 编辑:程序博客网 时间:2024/05/15 23:45
个程序(一个用glue,一个直接连接xpcom)用了NS_GetServiceManager全部死掉,SIGSEGV
--原因:
因为exe文件和so文件里面多有一个getter_AddRefs,因为他们是WEAK(elf),所有就可以同时存在,然后so文件调用的时候调用了exe中的函数,
可能是在x86_64中引起的,因为gcc的bug(http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20297),使得编译mozilla的时候加了去掉了这个option
---解决:
1.用同一个编译选项,程序可以执行,但是方法不好
2. 在exe中不输出symbol,要在gcc中找这个option,(还没有找到)
在编译mozilla的时候加ac_have_visibility_buildin_bug=yes,不要加ac_have_visibility_pragram=no
并且在编译自己的程序的时候加-fvisibility=hidden
gluetest 错误的原因是因为gluetest和libxpcomglue.a编译选项不一致,使得gluetest和libxpcomglue.a中的 getter_AddRefs<nsIServiceManager>(nsCOMPtr<nsIServiceManager>&)
代码不一致(调用方式也不一致),然后执行的时候libxpcomglue.a用的函数用的是gluetest生成的函数---用objdump找到原因的
---解决方法,用和libxpcomglue.a一样的编译选项编译就可以了,原因是如果没有有-DDEBUG -D_DEBUG,
生成的调用方式不一样(我的机器是amd64,gcc 3.4.6-3),不知道是真正的原因,是否有人知道,望告知
xpcomtest死掉的原因是类似,在so文件中的函数调用了xpcomtest中的getter_AddRefs同名的函数(???)
另外如果不要NS_GetServiceManager,好像是好的,因为这个是没有生成getter_AddRefs,这个是一个模板参数
--原因:
因为exe文件和so文件里面多有一个getter_AddRefs,因为他们是WEAK(elf),所有就可以同时存在,然后so文件调用的时候调用了exe中的函数,
可能是在x86_64中引起的,因为gcc的bug(http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20297),使得编译mozilla的时候加了去掉了这个option
---解决:
1.用同一个编译选项,程序可以执行,但是方法不好
2. 在exe中不输出symbol,要在gcc中找这个option,(还没有找到)
在编译mozilla的时候加ac_have_visibility_buildin_bug=yes,不要加ac_have_visibility_pragram=no
并且在编译自己的程序的时候加-fvisibility=hidden
- 2个程序(一个用glue,一个直接连接xpcom)用了NS_GetServiceManager全部死掉,SIGSEGV的原因
- 用glue库写了一个main还是,调用一个com成功
- 用ruby写了一个生成xpcom组件模板的小工具
- 一个Java进程直接死掉的问题分析
- 为了防止程序死掉,写的一个守护程序
- 一个关于程序死掉发送邮件的脚本
- 一个比较好用的zip压缩库,pclzip可以直接压缩本站全部文件
- 一个mozilla, xpcom相关的blog
- 监控一个web服务的讨论(如果weblogic服务死掉了,让其自动启动)
- 监控一个web服务的讨论(如果weblogic服务死掉了,让其自动启动)
- #一个无聊的程序#用python调用lame把一个目录下的wav全部转成高音质mp3
- 直接启动一个程序
- 连接sql server2005不成功的一个原因
- mysql连接慢的一个原因
- 关于Adb connection Error:EOF远程主机强迫关闭了一个现有的连接。 原因
- CDH 5.3.0 一个小任务运行了12个小时的原因。
- 花了几个钟头才写好一个利用直接定址表的中断处理程序
- 一个直接用java类实现连接池的代码例子
- 网站测试技术(转)
- PHP5 session
- Red Hat Linux中自动运行程序
- 【vc】MFC应用程序中指针的获取
- 一些不错的SQL语句
- 2个程序(一个用glue,一个直接连接xpcom)用了NS_GetServiceManager全部死掉,SIGSEGV的原因
- LAMP 技术简介(1)
- LAMP 技术简介(2)
- 使用PDU串发送手机短信息
- 项目管理 : 用项目总结来减少问题的重复发生
- Hibernate中乱码的解决例子之(多谢群中52313951提供)
- 今天弟弟高考,祝他们都考好
- LAMP 技术简介(3)
- java面试笔试题大汇总