一起由于Swap空间不足引起的编译错误。

环境:
VMware5.5,Solaris10 X86,SUN Studio11,GNU Make

问题发生:
    在编译一个库的时候,每次进行到一个Table文件时就会耗费大量时间,硬盘,CPU均占用很高,在5分钟左右的编译后,报出如下错误
Failure in /opt/SUNWspro/prod/bin/fbe, status = 0x7f00
Fatal Error exec'int /opt/SUNWspro/prod/bin/fbe
gmake: *** [XScenarTb.o] Error 1

问题解决过程:
    1,首先放狗,关于这个错误的资料出奇的少,就在SUN的论坛里面看到一个类似的,提示是一个编译参数compat的问题,但是我编译的时候并没有用到这个参数,不管它,死马当活马医,加入这个参数,重新编译,还是不行。

    2,在SUN的开发者论坛上发帖,反应很快,Boris_Ivanovsky给了我一个回复,说可能是编译器的bug,要我去提交一个bug,老天,我可不希望是这个结果,如果是这个结果的话,我的开发就彻底的停滞了,要等到SUN出最新的PATCH方可解决这个问题。继续等待,又一个好心的网友留言说,这个可能是一个bug,但是现在已经有一些PATCH出来了,提示我安装PATCH后再试试。JDS桌面下有Update Manager,看起来很方便,而且已经有更新提示,于是点击其提示图标,貌似JAVA做的,启动很缓慢,于是等待,老天,足足半个小时没有反应,有了反应过后选择更新项目,移动鼠标点击checkbox,犹如冰上行走,很是艰难,SUN的东西确实得小型机才能够运行,服了。选中SunStudio相关的7项,点击更新按钮进行更新,未料,又是一场噩梦,足足又花费了1个小时,其间多次停滞不动,末了,更新失败。从失败提示也没有看得出来是什么原因。使用它的更新工具不行,于是决定尝试手动更新,到相应的Patch页面下载Patch包,放到自己的home下面,解压,按照提示的命令进行patchadd,未料,失败。查看失败信息,提示某个文件无法读取,又放狗,狗到的结果提到放置Patch的父目录的权限问题,于是设置成任何人可读写,还是不行,放到/tmp目录下,竟然可以了。又一次晕倒。在更新第二个Patch的时候,又失败,这次的失败提示看懂了,提示磁盘空间不够。查看了一下空间根目录只有400兆,交换空间也只有300M,而这个Patch就需要400M左右的空间,我是使用得VMware,没办法只能重新做。这次仅划分两个区,根目录,以及swap,总共10G,不过swap还是使用默认的500M,这次顺利的将Patch全部装上。安装完成后,继续进行编译,还是不成功。突然想到安装Patch的时候因为磁盘空间不够,而失败,现在编译是不是也可能是磁盘不够?因为在编译到那个失败的文件的时候,长时间的进行硬盘读写。于是再一次编译,然后监控硬盘空间的变化,发现在一段时间过后swap占用达到80%以上,然后就编译失败了。猜想可能是swap空间不够导致的。于是重新追加1G的swap,重新编译,编译过程异常紧张,在大约10分钟过后,终于通过了这个顽固的文件。接下去就非常顺利。

问题的原因:swap空间不够,不要吝啬,多给点,下次装机器,一定给2G,记得以前的规则是内存的两倍。

0 Responses to "一起由于Swap空间不足引起的编译错误。"