核心文件中的_kernel_vsyscall()

问题描述 投票:0回答:1

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

准确来说:

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 有关还是我在代码中犯了错误?

如何解决这个问题?

c linux coredump
1个回答
5
投票

错误出现在

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

为清楚起见进行编辑:“在堆栈中”意味着“朝着列表的顶部”,因为正如 Sixlettervariables 指出的那样,您想要找到您认识的最近的位置。我意识到我最初的措辞可能会令人困惑。

© www.soinside.com 2019 - 2024. All rights reserved.