我的程序突然崩溃并在核心文件中引发此错误。
准确地说:
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/