![]() |
|
Модераторы: xvr |
![]()
|
|
| MAKCim |
|
||||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
Вообщем проблема такая
есть код
модуль загружается нормально: make_call_gate отрабатывает без проблем при выгрузке (rmmod) получаю Segmentation fault и в логах следующее
если присмотреться к Сall trace, то видим, что destroy_call_gate отрабатывает хорошо (потому как вызывается из sys_delete_module) а ошибка возникает в __unlink_module + 0xa. Причина ошибки видна. Непонятно только, почему если оставить в destroy_call_gate только ret, проблема исчезает, т. е каким то образом код в destroy_call_gate вызывает #PF в __unlink_module() я в ступоре -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||||
|
|||||||
| GrayCardinal |
|
|||
|
Фигасе ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3039 Регистрация: 9.11.2003 Репутация: 8 Всего: 58 |
MAKCim,
Я не уверен флаги которые pushfl восстанавливаются, включают sti ? А вообще - из юзер-контекста такое делать наврядли в принципе можно |
|||
|
||||
| kirjanov |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 22.1.2006 Где: Dark wood of erro r Репутация: 3 Всего: 15 |
Это сообщение отредактировал(а) kirjanov - 16.1.2007, 20:22 |
|||
|
||||
| GrayCardinal |
|
|||
|
Фигасе ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3039 Регистрация: 9.11.2003 Репутация: 8 Всего: 58 |
kirjanov,
Во-во |
|||
|
||||
| MAKCim |
|
||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
чуваки, это модуль ядра
Добавлено @ 21:17 kirjanov, pushl - сохраняет EFLAGS popfl - соответственно восстанавливает (вместе с IF, который изначально неизвестно, установлен или нет) естественно CPL <= IOPL в моем случае, иначе было бы другое исключение, не #PF Добавлено @ 21:18
где ты тут user mode увидел? Добавлено @ 21:21
чего? ну и сказал естественно, popfl восстанавливает его (eflags) а значит и первоначальное значение IF -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||
|
|||||
| GrayCardinal |
|
|||
|
Фигасе ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3039 Регистрация: 9.11.2003 Репутация: 8 Всего: 58 |
MAKCim,
Я понял что это модуль ядра. Добавлено @ 04:26
Сорри, не выспавшася |
|||
|
||||
| kirjanov |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 22.1.2006 Где: Dark wood of erro r Репутация: 3 Всего: 15 |
MAKCim,
получается ты вызвал local_irq_disable(), тогда уже лучше вызвать явно local_irq_enable() или c флажками:
Это сообщение отредактировал(а) kirjanov - 17.1.2007, 10:53 |
|||
|
||||
| MAKCim |
|
||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
kirjanov,
ты посмотри код local_irq_disable/enable во-первых - это макрос, который выливается в конструкцию С, что в .S коде неприемлемо во-вторых, пока там доходят до заветных pushfl, popfl, вызывается много чего ненужного
бывает а вообще чего вы приципились к этим флагам - здесь все нормально -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||
|
|||||
| GrayCardinal |
|
|||
|
Фигасе ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3039 Регистрация: 9.11.2003 Репутация: 8 Всего: 58 |
MAKCim,
Не, а про юзер-контекст ты все-таки читкани. Kernel Hacker's Guide, к примеру |
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
юзер-контекст и Kernel Hacker's Guide?? Добавлено @ 13:36 вообще кажется понял, в чем тут лажа если получится, напишу -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: нет Всего: 93 |
Модератор: Название темы должно отражать ее суть! Виноват. Проглядел
Понятно, что я не модератор этого раздела и не силён в unix, так что для меня суть топика не очень ясна... но проблема в том, что такое название темы тоже ничего не говорит о её содержании. Я вообще сначала подумал, что здесь какая-то ерунда и только потом, обратив внимание на статус участника, создавшего тему, понял что эта тема "по делу". Но всё-таки название советую поменять, тем более что Участнику Клуба это теперь доступно. Это сообщение отредактировал(а) Дрон - 17.1.2007, 14:06 -------------------- Да. Именно так. |
|||
|
||||
| bilbobagginz |
|
|||
![]() Naughtius Maximus ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8813 Регистрация: 2.3.2004 Где: Israel Репутация: 4 Всего: 317 |
дорогой Дрон!
Упс ( Oops ) - это термин, или можно сказать профессиональный слэнг разрaботчиков ядра линукс. Человек в unix/linux kernel понимающий (чуточку) сразу понимает о чем тема: кто-то работает над модулем и получил oops ( присмотрись в первый вложенный текст - в дневнике ядром написано Oops: 0002 [#1]) По сему, считаю, что название темы отражает ее суть. -------------------- Я ещё не демон. Я только учусь. |
|||
|
||||
| Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: нет Всего: 93 |
bilbobagginz, блин, проглядел.
Специально перед тем как писать посмотрел верхние строчки лога (так как предполагал, что это что-то навроде kernel panic), но Oops проглядел Признаю. Тема отражает суть, но видимо только для внутреннего потребления. Однако вид этой темы на главной странице форума сбивает с толку. Больше я в разделы unix ни ногой Это сообщение отредактировал(а) Дрон - 17.1.2007, 14:08 -------------------- Да. Именно так. |
|||
|
||||
| MAKCim |
|
||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
oops тут неприятный после него как то все начинает резко неработать тема закрыта, причину нашел все банально
видно до вызова destroy_call_gate в EBX был адрес, который после отработки функции терялся вообщем детская ошибка спасибо всем, кто участвовал в обсуждении -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||
|
|||||
| GrayCardinal |
|
|||
|
Фигасе ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3039 Регистрация: 9.11.2003 Репутация: 8 Всего: 58 |
MAKCim,
Да, черт возьми. Кончай шлангом прикидываться. |
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
не, просто понятия не сочетаются как то... -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| kirjanov |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 22.1.2006 Где: Dark wood of erro r Репутация: 3 Всего: 15 |
||||
|
||||
| GrayCardinal |
|
|||
|
Фигасе ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3039 Регистрация: 9.11.2003 Репутация: 8 Всего: 58 |
MAKCim,
А в репу Добавлено @ 14:58 (ну, чтоб начали нормально сочетаться |
|||
|
||||
| MAKCim |
|
||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
угу
ну, от + я никогда не откажусь -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||
|
|||||
| GrayCardinal |
|
|||
|
Фигасе ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3039 Регистрация: 9.11.2003 Репутация: 8 Всего: 58 |
MAKCim,
Я в прямом смысле |
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
да понял я, что в прямом только где ты репу зимой найдешь Это сообщение отредактировал(а) MAKCim - 17.1.2007, 18:21 -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| powerfox |
|
|||
![]() I wanna fork() ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3990 Регистрация: 1.10.2005 Где: Санкт-Петербург Репутация: 5 Всего: 97 |
||||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
при чем тут M$? код ядра делится на платформо-независимую часть на С и зависимую (GCC inline assembler + assembler) т. е тот же модуль может быть полностью независим от архитектурной части железа и идти на всех платформах, где стоит Linux (главное, чтобы ядра были одной стабильной версии), а может быть зависимым от конкретной архитекиуры как в моем случае (IA-32) и поэтому не пойдет ни на чем другом, кроме как на > i386 -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| powerfox |
|
|||
![]() I wanna fork() ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3990 Регистрация: 1.10.2005 Где: Санкт-Петербург Репутация: 5 Всего: 97 |
MAKCim, там же смайл, я пошутил.
|
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| kirjanov |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 22.1.2006 Где: Dark wood of erro r Репутация: 3 Всего: 15 |
||||
|
||||
| Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: нет Всего: 93 |
Вот болтуны...
-------------------- Да. Именно так. |
|||
|
||||
| powerfox |
|
|||
![]() I wanna fork() ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3990 Регистрация: 1.10.2005 Где: Санкт-Петербург Репутация: 5 Всего: 97 |
||||
|
||||
![]()
|
| Правила форума "С/С++: Программирование под Unix/Linux" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |