I am trying to test linux kernel stack size in 64 bit.
Я обнаружил это странное поведение. Я написал следующий код для сбоя ядра, но странно то, что он вылетает, только если printk раскомментирован, в противном случае работает нормально без ошибок / предупреждений !!.
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
static int __init crash_stack_init(void)
{
long arr[1024];
long *a;
a = &arr[0];
//printk("%p\n", &arr[0]);
return 0;
}
enter code here
static void __exit crash_stack_exit(void)
{
}
module_init(crash_stack_init);
module_exit(crash_stack_exit);
Here is the "make" output without the printk,
make -C /lib/modules/4.4.0-53-generic/build M = / home / naveenvc / work / ker / crash_stack modules make [1]: Вход в каталог '/usr/src/linux-headers-4.4.0 -53-generic 'CC [M] /home/naveenvc/work/ker/crash_stack/crash_stack.o Создание модулей, этап 2. Модули MODPOST 1 CC /home/naveenvc/work/ker/crash_stack/crash_stack.mod.o LD [M] /home/naveenvc/work/ker/crash_stack/crash_stack.ko make [1]: Выход из каталога '/usr/src/linux-headers-4.4.0-53-generic'
And make output with printk,
make -C /lib/modules/4.4.0-53-generic/build M = / home / naveenvc / work / ker / crash_stack modules make [1]: Вход в каталог '/usr/src/linux-headers-4.4.0 -53-generic 'CC [M] /home/naveenvc/work/ker/crash_stack/crash_stack.o > /home/naveenvc/work/ker/crash_stack/crash_stack.c: В функции' crash_stack_init ': / home /naveenvc/work/ker/crash_stack/crash_stack.c:14:1: предупреждение: размер кадра 8200 байт больше 1024 байтов [-Wframe-large-than =]} ^
Сборка модулей , этап 2. Модули MODPOST 1 CC
/home/naveenvc/work/ker/crash_stack/crash_stack.mod.o LD [M] /home/naveenvc/work/ker/crash_stack/crash_stack.ko make [1]: Выход из каталога '/usr/src/linux-headers-4.4.0-53-generic'
Что может быть причиной этого?