+ -
当前位置:首页 → 问答吧 → (已解决)请教关于 firefox 的 Segmentation fault 问题

(已解决)请教关于 firefox 的 Segmentation fault 问题

时间:2010-01-29

来源:互联网

我用的是 SVN 的 LFS+BLFS。
xulrunner + firefox 的 .mozconfig 都相同。
firefox 版本, 系统的版本与问题无关。
如果整个系统用 -march=native -O3 -pipe -fomit-frame-pointer 的参数,则,从很早以前到现在,运行时,都只有一个 Segmentation fault 的结果,没有任何输出,用 strace 的结果也看不明白。就算 xulrunner + firefox 不加参数编译,也是这个结果。
如果整个系统和firefox都用 -march=native -O2 -pipe -fomit-frame-pointer ,则可以正常运行。
是不是某个依赖的包不能用 -O3 的编译参数?
又会是哪个包?

作者: cofairy   发布时间: 2010-01-29

It does happen when certain packages are compiled with -O3 but OK with -O2.

I have the same issue with SeaMonkey, which is also GTK+2 based, with gcc-4.4+. However, it is also compiler dependent. The same piece of software may be OK with -O3 if it is compiler with older version of gcc.

As for me, SeaMonkey is OK for gcc-4.3.x with -O3.

作者: d00m3d   发布时间: 2010-01-29

现在好了,目前问题是定位在 Zlib 上。
我用 -O2 重新编译了Zlib,可以正常用了。呵呵
我只是知其然而不知其所以然。
好像我出问题时所用的 GCC 都是4.4的。

作者: cofairy   发布时间: 2010-01-29

找到了相关的 bug 报告了。
http://bugs.gentoo.org/show_bug.cgi?id=270120
http://bugs.gentoo.org/show_bug.cgi?id=301389

作者: cofairy   发布时间: 2010-01-29

问题不单单与 zlib 有关。应该是 gcc 4.4 与软件优化参数之间的问题。
我将所有与 xulrunner,firefox 直接依赖的软件都用 -O2 重新编译,然后,xulrunner,firefox 加上--enable-optimize=-O2 因为“less then -O2 causes a segfault on x86”(直接引用 gentoo 中 eclass 文件中的说明。)现在正常能用了,如果有空,我再用二分法什么的排除一下,找找具体是哪个软件的问题。只是这样手动编译排查太麻烦了,看来得学学用脚本来完成。

在等待编译的过程中,玩玩 slashem 是个不错的选择。

作者: cofairy   发布时间: 2010-01-30

用 -O3 还是有莫名的崩溃,所以用 -O2 重新做了个系统。
追新+优化=不稳定。所以折中一下,用 -O2 来追新。

作者: cofairy   发布时间: 2010-02-02