Приветствую.
Сопровождаю продукт, разработанный на базе ucLinux-2.4.20, на ARM платформе. Появилась проблема - периодически девайс молча перегружается, без какой-либо диагностики на консоль.
Подозреваю спинлоки, хотелось бы проверить. Выставил DEBUG_SPINLOCKS=2 в include/linux/spinlock.h. Ядро не успевает загрузиться, перегружается. Расследования показали, что проблема где-то в недрах 'rest_init()' в init/main.c. Вот код этой ф-цтии:
static void rest_init(void)
{
kernel_thread(init, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGNAL);
unlock_kernel();
current->need_resched = 1;
cpu_idle();
}
Первые три строчки выполняются, а на 'cpu_idle' спотыкается и ребут. Что я делаю не так ?
PS. Кстати, если выставить DEBUG_SPINLOCKS=1, то все в порядке, но в этом режиме не доступна полная отладочная информация ядра.