c - 核心文件中的_kernel_vsyscall()

标签 c linux core coredump

我的程序突然崩溃并在核心文件中引发此错误。

准确地说:

Program terminated with signal 6, Aborted.
#0  0x00c60410 in __kernel_vsyscall ()
#0  0x00c60410 in __kernel_vsyscall ()
#1  0x00444df0 in raise () from /lib/libc.so.6
#2  0x00446701 in abort () from /lib/libc.so.6
#3  0x0047d3ab in __libc_message () from /lib/libc.so.6
#4  0x004856c5 in _int_free () from /lib/libc.so.6
#5  0x00485b09 in free () from /lib/libc.so.6

这与linux有关还是我的代码出错了?

如何解决这个问题?

谢谢。

最佳答案

错误出现在 free() 中,它很可能是您在程序中调用的函数,也是一个常见的出错位置。您可能释放了一个无效的指针(可能通过双重释放?)。堆栈跟踪显示了所有其他函数,因为这些函数是在 free() 下面调用的。当错误地调用库函数时,这种情况很常见,因此您通常只需留意您识别的内容即可。根据经验,您需要开始查看您识别的堆栈跟踪中最远的东西(即在您的程序中),但如果堆栈上方或程序中存在其他内存损坏,请查看那里不会有太大帮助。

为清楚起见进行编辑:“Down the stack”的意思是“朝向列表的顶部”,因为正如 Sixlettervariables 指出的那样,您想要找到您最近所在的位置 em> 你认识的。我意识到我最初的措辞可能会令人困惑。

关于c - 核心文件中的_kernel_vsyscall(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8577797/

相关文章:

c - C 中的平方根算法

c - 从 CMake 检索宏

Linux Ubuntu Bash - 使用 AWK 正则表达式查找包含 2 个以上元音的单词

linux - nasm 系统调用 Linux

c - 在 linux 上用 C 语言打开系统调用

linux - 安装在 ubuntu 计算机上的 Amazon EC2 实例的 var/www 文件夹在一段时间后卡住

graphics - "renderInContext:"和 CATransform3D

ocaml - 找不到 .ocamlinit 文件

c++ - 如何设置参与计算的 CPU 内核数(C++ 和 OpenMP)

c - c中的节点和结构