_kernel_vsyscall () в основных файлах - PullRequest
2 голосов
/ 20 декабря 2011

Моя программа неожиданно падает и вызывает эту ошибку в файлах ядра.

А точнее:

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 или я делаю ошибку в моих кодах?

Как решить эту проблему?

Спасибо.

1 Ответ

5 голосов
/ 20 декабря 2011

Ошибка в free(), что, вероятно, является функцией, которую вы вызываете в своей программе, и является распространенным местом для ошибок.Вы, вероятно, освободили недопустимый указатель (возможно, через double-free?).Трассировка стека показывает все эти другие функции, потому что они были вызваны ниже free().Это часто происходит при неправильном вызове библиотечных функций, поэтому вы, как правило, просто следите за тем, что вы узнаете.Как правило, вы захотите начать поиск самой последней вещи по трассировке стека, которую вы узнаете (то есть в вашей программе), хотя, если есть другие повреждения памяти дальше по стеку или в вашей программе, посмотрите тамне поможет слишком много.

Правка для ясности: «Вниз по стеку» означает «к вершине списка», поскольку, как указывают Sixlettervariables, вы хотите найти наиболеенедавнее место, где вы были , которые вы узнаете.Я понимаю, что моя первоначальная формулировка может сбить с толку.

...