У меня есть ошибка __kernel_vsyscall в функции, которая выдает правильный вывод, но программа никогда не может пройти мимо нее и выдает ошибку __kernel_vsyscall. C функции:
void f1(int* input, int* output, int nbElements);
Функция ассемблера (ГАЗ). Я не могу опубликовать все это, потому что это для назначения, и я не хочу, чтобы кто-то копировал это.
f1:
push %ebp
mov %esp, %ebp
movl $0, %ecx
movl $0, %ebx
jmp for_loop1
for_loop1:
cmpl %ecx, 16(%ebp)
jb end
movl $0, %ebx
jmp for_loop2
for_loop2:
/*move input elements to output elements*/
cmpl %ecx, %ebx
jmp incr_2
incr_2:
addl $1, %ebx
cmpl %ebx, 16(%ebp)
jb incr_1
jmp for_loop2
incr_1:
addl $1, %ecx
jmp for_loop1
end:
addl $8, %esp
leave
ret
Ошибка при завершении программы:
malloc(): invalid size (unsorted)
Aborted (core dumped)
Ошибка при отладка с помощью gdb с файлом coredump:
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from ./program_name...
[New LWP 2634]
warning: Loadable section ".note.gnu.property" outside of ELF segments
Core was generated by `./program_name'.
Program terminated with signal SIGABRT, Aborted.
#0 0xf7f35ac9 in __kernel_vsyscall ()
Я попытался посмотреть, что находится по адресу 0xf7f35ac9, и он вернул -402652697 или другое случайное значение.
Локальные переменные имеют адреса около 0xff83b1f c, значения, хранящиеся в указателях, имеют адреса около 0x80cab30, ранее объявленные функции находятся по адресам около 0x8049fc4, а стек имеет значения около 0xffadded c, поэтому я понятия не имею, где это.
Спасибо