被一个问题困扰了很久: 是关于solaris上面C++的一个coredump。 把core文件的调用栈打印出来如下, 最后一个调用是“_malloc_unlocked”, 这个是标准库里面的东西,对应的代码也就是初始化了一个ifstream对象。
网上google了半天, 说这个是内存哪里出错了; 但是根据这个调用栈,似乎无法定位问题所在。 也就是说最后出问题的地方是初始化ifstream的地方,但是这里的代码并没有错误,是其他不知道什么地方的内存操作有问题,只是刚好到ifstream这里core了。
不知大神们有何看法? 我主要是想确认这个调用栈是否可以定位到哪里内存操作错误?或者还有其他什么办法来定位? 谢谢!!!!
调用栈: Loading modules: [ libc.so.1 libuutil.so.1 ld.so.1 ] > ::stack libc.so.1`_malloc_unlocked+0x164(2008, 0,4b08900, ff, ffffffff, ff) libc.so.1`malloc+0x4c(2001, 1, ea714, 0, fedb23e8, fedbc5d libCrun.so.1`__1c2n6FI_pv_+0x28(2001, 0, 0, 15d74, fee8cd10, 0) libCstd.so.1`__1cDstdNbasic_filebuf4Ccn0ALchar_traits4Cc___Eopen6Mpkcil_p1_+0xc0(ffbfcec8,ab800, 2000, 1b6, ffbfcec8, 0) libCstd.so.1`__1cDstdObasic_ifstream4Ccn0ALchar_traits4Cc___Eopen6Mpkcil_v_+0x88(ffbfceb8,ab800, 4, 1b6, 78, 89004) libCstd.so.1`__1cDstdObasic_ifstream4Ccn0ALchar_traits4Cc___2t6Mpkcil_v_+0x9c(ffbfceb8,ab800, 4, 1b6, 320, ffbfcec
libcmLogclnt.so`__1cUDConfiguratorImplCVdoConvertAndConfigure6MrknDstdMbasic_string4Ccn0BLchar_traits4Cc__n0BJallocator4Cc_ ...
对应的代码: std::ifstream initFile(initFileName.c_str()); if (!initFile) {
throw log4cpp::ConfigureFailure(std::string("File " + initFileName + " does not exist" ; return; }
|