为什么core文件总是不完整的?

时间:2022-11-10 20:02:03
我运行程序前都加了

ulimit -c unlimited
ulimit -s unlimited 
ulimit -m unlimited


但是,每次产生的core文件总是不完整的,gdb显示如下

BFD: Warning: /zjf/ui/IPU3/bin/core is truncated: expected core file size >= 614891520, found: 118554624.

Core was generated by `./visionapp'.
Program terminated with signal 6, Aborted.
#0  0x08ad3f0a in malloc_consolidate ()
(gdb) bt
#0  0x08ad3f0a in malloc_consolidate ()
Cannot access memory at address 0x6463be30


这到底是core文件不完整,还是内存被破坏了啊?

11 个解决方案

#1


what's the current soft limit and hard limit?

#2


什么是soft limit和hard limit?

ulimit -c unlimited是soft limit吗?

hard limit怎么设置?

#3


哦,我知道了,我的soft limit是1024,hard limit是4096,这和core文件有什么关系?


root@localhost:/zjf/ui/IPU3/bin# ulimit -Hn
4096
root@localhost:/zjf/ui/IPU3/bin# ulimit -Sn
1024

#4


另外

root@localhost:/zjf/ui/IPU3/bin# ulimit -H -c
unlimited
root@localhost:/zjf/ui/IPU3/bin# ulimit -S -c
unlimited
root@localhost:/zjf/ui/IPU3/bin# ulimit -c 
unlimited


现在程序崩溃产生core文件不完整,有时甚至不产生,定位问题很棘手啊

#5


这是内存被破坏了,还是查程序问题吧

#6


引用 5 楼 buyong 的回复:
这是内存被破坏了,还是查程序问题吧


我想也是内存被破坏了,可是我用valgrind来定位问题时,程序又不崩溃了,难道内存破坏还和程序运行快慢有关系?

#7


引用 2 楼 nbda1121440 的回复:
什么是soft limit和hard limit?

ulimit -c unlimited是soft limit吗?

hard limit怎么设置?


/etc/security/limits.conf

# man limits.conf:

           <type>

               hard
                   for enforcing hard resource limits. These limits are set by the superuser and enforced by the Kernel. The user cannot raise his requirement of system resources above such values.

               soft
                   for enforcing soft resource limits. These limits are ones that the user can move up or down within the permitted range by any pre-existing hard limits. The values specified with this token can be
                   thought of as default values, for normal system usage.

               -
                   for enforcing both soft and hard resource limits together.

#8


引用 5 楼 buyong 的回复:
这是内存被破坏了,还是查程序问题吧

同意!

#9


那我问下大家,程序崩溃的时候,不产生core文件是怎么回事?就算内存出错,也应该产生core文件的吧?

#10


引用 9 楼 nbda1121440 的回复:
那我问下大家,程序崩溃的时候,不产生core文件是怎么回事?就算内存出错,也应该产生core文件的吧?


不一定,有课能产生不出

#11


大兄弟,问题解决了吗?我看到时间太久了,回复也没有啥效果了

#1


what's the current soft limit and hard limit?

#2


什么是soft limit和hard limit?

ulimit -c unlimited是soft limit吗?

hard limit怎么设置?

#3


哦,我知道了,我的soft limit是1024,hard limit是4096,这和core文件有什么关系?


root@localhost:/zjf/ui/IPU3/bin# ulimit -Hn
4096
root@localhost:/zjf/ui/IPU3/bin# ulimit -Sn
1024

#4


另外

root@localhost:/zjf/ui/IPU3/bin# ulimit -H -c
unlimited
root@localhost:/zjf/ui/IPU3/bin# ulimit -S -c
unlimited
root@localhost:/zjf/ui/IPU3/bin# ulimit -c 
unlimited


现在程序崩溃产生core文件不完整,有时甚至不产生,定位问题很棘手啊

#5


这是内存被破坏了,还是查程序问题吧

#6


引用 5 楼 buyong 的回复:
这是内存被破坏了,还是查程序问题吧


我想也是内存被破坏了,可是我用valgrind来定位问题时,程序又不崩溃了,难道内存破坏还和程序运行快慢有关系?

#7


引用 2 楼 nbda1121440 的回复:
什么是soft limit和hard limit?

ulimit -c unlimited是soft limit吗?

hard limit怎么设置?


/etc/security/limits.conf

# man limits.conf:

           <type>

               hard
                   for enforcing hard resource limits. These limits are set by the superuser and enforced by the Kernel. The user cannot raise his requirement of system resources above such values.

               soft
                   for enforcing soft resource limits. These limits are ones that the user can move up or down within the permitted range by any pre-existing hard limits. The values specified with this token can be
                   thought of as default values, for normal system usage.

               -
                   for enforcing both soft and hard resource limits together.

#8


引用 5 楼 buyong 的回复:
这是内存被破坏了,还是查程序问题吧

同意!

#9


那我问下大家,程序崩溃的时候,不产生core文件是怎么回事?就算内存出错,也应该产生core文件的吧?

#10


引用 9 楼 nbda1121440 的回复:
那我问下大家,程序崩溃的时候,不产生core文件是怎么回事?就算内存出错,也应该产生core文件的吧?


不一定,有课能产生不出

#11


大兄弟,问题解决了吗?我看到时间太久了,回复也没有啥效果了