aix使用g++编译时一个stl string的问题

来源:互联网 发布:淘宝阿狸下单截图 编辑:程序博客网 时间:2024/05/16 04:36

        当好不容易解决了异常抛出不捕捉等问题之后,我在aix上又碰到了新的问题,同样的代码在linux下运行无误,但在aix下,总是出现core dump,每次core dump的位置均不一样,但是都出现在stl string相关的处理上。并且此问题大部分时候都要程序较长时间运行才会出现,大约要一个小时,处理数据10万条以上。

        花费了近一周的时间调试和在网上查找资料,猜测可能是由于string拷贝时的引用计数在多线程下出现问题,导致string在尚在使用时提前析构。于是把公司基类中封装的字符串类重载的等号由调用stl string的等号改为使用assign进行拷贝,经测试问题解决,程序core dump的情况消失了。

        令人不解的是,仔细检查了多线程的地方,并发的地方都进行了正确的加锁,很难理解会有引用计数失效的问题,但是如果不是这样的解释,为什么这样的改动能够解决问题?答案对我来说完全成谜了,希望有人有更好的答案。

原创粉丝点击