在两个帐户中,我的进程在同一台机器上工作得很好,但是当我将进程复制到其他帐户并运行进程时,我得到了核心转储。当我使用strace运行这个过程时,我得到:
- SIGBUS (总线错误)@0 (0) --被SIGBUS (核倾倒) +++杀死的+++
当我打开核心转储时,我得到:
#0 0x000000360046fed3 in malloc_consolidate () from /lib64/libc.so.6
#1 0x00000036004723fd in _int_malloc () from /lib64/libc.so.6
#2 0x000000360047402a in malloc () from /lib64/libc.so.6
#3 0x00000036004616ba in __fopen_internal () from /lib64/libc.so.6
#4 0x0000000000fe9652 in LogMngr::OpenFile (this=0x2aaaaad17010, iLogIndex=0) at LogMngr.c:801我可以看到打开文件来记录的东西,但是为什么它只在一个帐户中,而在另一个帐户中是好的呢?
发布于 2011-04-12 07:28:19
您可以从未对齐内存访问中获得SIGBUS。您使用的是mmap、共享内存区域还是类似的东西?
发布于 2011-04-13 02:06:31
malloc中的任何核心转储都表示堆损坏,而堆损坏通常是这样的:它可能永远不会出现在机器A上,有时会出现在机器B上,并且总是出现在机器C上。
瓦兰可能会直接指出问题所在。
https://stackoverflow.com/questions/5631685
复制相似问题