什么是由std :: locale :: final_cleanup和std :: locale :: __ the_classic_locale完成的?

时间:2012-05-07 17:39:02

标签: c++ std mdbg

在我的应用程序中,当我运行一个作业时,它完成并且在控制台上没有给出任何core dumpsegmentation fault消息。但是当我进入核心目录时,我可以看到core dump file已创建与执行的作业相关。我尝试用mdb调试它,我得到的是以下内容。

 ::stack
 0x538548(190c, c1cf0, bffd8, 1800, be6cc, c1b7c)
 __SUNW_fini_iostreams+0xc(fe1f15e0, 0, 0, ff, 0, 0)
 libCrun.so.1`__1cH__CimplKcplus_fini6F_v_+0x74(4ee1c, 0, fe1ed4c4, 1, bfa70, fe352a00)
 libCrun.so.1`_init+0x54(1, 1cc4, fcc35980, fcc37300, fe352a00, 1c00)
 libc.so.1`_exithandle+0x40(fcc37580, fcc35980, 1c00, 19f8b4, 19f8b4, 2137cf)
 libc.so.1`exit+4(32, ffbddc24, 19f848, bec00, 19f848, 0)
 _start+0x110(0, 0, 0, 0, 0, 0)
 > ::dem __1cH__CimplKcplus_fini6F_v_+0x74
 __1cH__CimplKcplus_fini6F_v_+0x74 == void __Cimpl::cplus_fini
> ::dem __SUNW_fini_iostreams+0xc
__SUNW_fini_iostreams+0xc == __SUNW_fini_iostreams+0xc 

当我试图打印寄存器及其价值时我得到的是: -

  

$?   没有过程   SIGILL:非法指令

%g5 = 0xfe744774 libcap_pdb.so.5`__1cRCAP_PDB_file_pathFcount_ %l5 = 0x00000fdc
%o1 = 0x00000001                 %i1 = 0x000c1cf0 
cna_adjust`__1cDstdIios_baseEInitJ__initcnt_
%o2 = 0x00038748                 %i2 = 0x000bffd8
%o3 = 0x00002c00                 %i3 = 0x00001800
%o4 = 0x000c1d58 jobtype`__1cDstdGlocaleU__the_classic_locale_ %i4 = 0x000be6cc
%o5 = 0x0000368c                 %i5 = 0x000c1b7c 
jobtype`__1cDstdQ__stderr_filebuf_+0x3c
%o6 = 0xffbdd978                 %i6 = 0xffbdd9d8
%o7 = 0x00055d50 __1cDstdGlocaleNfinal_cleanup6M_v_+0x64 %i7 = 0x0004ee28  
__SUNW_fini_iostreams+0xc

%psr = 0xfe001005 impl=0xf ver=0xe icc=nzvc
               ec=0 ef=4096 pil=0 s=0 ps=0 et=0 cwp=0x5
%y = 0x00000000
%pc = 0x00538548
%npc = 0x0053854c
%sp = 0xffbdd978
%fp = 0xffbdd9d8
%wim = 0x00000000
%tbr = 0x00000000
> ::dem __1cDstdGlocaleNfinal_cleanup6M_v_+0x64 %i7
__1cDstdGlocaleNfinal_cleanup6M_v_+0x64 == void std::locale::final_cleanup
%i7 == %i7
> ::dem __1cDstdGlocaleU__the_classic_locale_ %i4
__1cDstdGlocaleU__the_classic_locale_ == std::locale::__the_classic_locale
%i4 == %i4
> ::dem __1cFile_pathFcount_ %l5
__1cfile_pathFcount_ == file_path::count
%l5 == %l5

我相信在我的应用程序上运行的作业已经成功完成并且错误是一个问题,同时清理代码中没有释放的内存作为我的应用程序退出。这是我根据我读到的内容的假设{来自有限的资源{1}}。我知道任何人都几乎不可能完全指出这里发生了什么,但我想知道我的假设是否正确。此外,我们前一段时间对编译器进行了更改,之后我们才面临这个问题。我最近看到了这个问题。另请告诉我std::locale::final_cleanupstd::locale::final_cleanup函数的行为

0 个答案:

没有答案