Summary: | Вызывает зависание SMP-системы | ||||||
---|---|---|---|---|---|---|---|
Product: | Sisyphus | Reporter: | Roman Savochenko <rom_as> | ||||
Component: | mbmon | Assignee: | viy <viy> | ||||
Status: | CLOSED FIXED | QA Contact: | qa-sisyphus | ||||
Severity: | critical | ||||||
Priority: | P2 | CC: | aen, mike, stalker, vsu | ||||
Version: | unstable | ||||||
Hardware: | all | ||||||
OS: | Linux | ||||||
Attachments: |
|
Description
Roman Savochenko
2007-09-09 01:53:27 MSD
Вы testcase не бросите? У меня похожая машина, хочу воспроизвести. Кр. того, из описания не понятно, вы popen() периодически дергаете и тучу этих mbmon плодите? достаточно 1 запустить. (In reply to comment #1) > Вы testcase не бросите? У меня это исполняется в рамках SCADA-системы OpenSCADA. Отделить попробую, в ближайшее время. > У меня похожая машина, хочу воспроизвести. > Кр. того, из описания не понятно, вы popen() периодически дергаете и тучу этих > mbmon плодите? > достаточно 1 запустить. Я не пложу, я периодически вызываю одиночный запрос mbmon, т.е mbmon после запроса завершается. Команда вызова у меня: mbmon -r -c 1 То, что делает mbmon (прямой доступ к портам, минуя все драйверы), вряд ли можно сделать надёжным - слишком много возможностей для конфликтов с другими программами, обращающимися к тем же устройствам. Например, функция pci_conf_read() из pci_pm.c потенциально опасна - поскольку доступ к конфигурации PCI не является атомарным (требуется 2 операции - запись в регистр адреса и чтение данных по выбранному адресу), выполнение этой функции может нарушить работу другого процесса (в том числе кода ядра), параллельно выполняющегося на другом процессоре и обращающегося к тем же регистрам. В однопроцессорной системе такие проблемы могут не проявляться, поскольку в этом случае нет возможности параллельного выполнения кода пользовательского процесса (mbmon) и кода ядра. Могу посоветовать настроить lm_sensors; правда, в этом случае тоже возможны аналогичные конфликты, но уже с кодом BIOS, который в некоторых случаях обращается к сенсорам - эта проблема пока не решается нормальным образом. гм. тогда ничем не помогу :( закрою, так как ничего не могу сделать. Created attachment 2213 [details]
mbmon_test.cpp
Исходник тестовой программки, которая вызывает mbmoon через popen с
периодичностью 100мс.
Как минимум уже один раз система повисла при фоновой работе этой программки,
после часа работы.
(In reply to comment #4) > Могу посоветовать настроить lm_sensors; правда, в этом случае тоже возможны > аналогичные конфликты, но уже с кодом BIOS, который в некоторых случаях > обращается к сенсорам - эта проблема пока не решается нормальным образом. Спасибо за информацию. С mbmon было проще в реализации и настройке, но раз так, то добавлю поддержку lm_sensors. Переоткрываю ошибку, поскольку фактически это критическая crash уязвимость ядра. можно вылечить гильотиной, т.е. удалить из Сизифа. апстрим mbmon не развивает. (В ответ на комментарий №10) > можно вылечить гильотиной, т.е. удалить из Сизифа. апстрим mbmon не развивает. Можно, только выглядеть это будет как удаление локального эксплоита из дырявой системы. #50157 AWAITING #1 sisyphus del=xmbmon (В ответ на комментарий №9) > Переоткрываю ошибку, поскольку фактически это критическая crash уязвимость > ядра. Вешайте багу на ядро. (В ответ на комментарий №13) > Вешайте багу на ядро. Не надо ничего вешать на ядро — проблема как раз в том, что mbmon лезет в порты мимо ядра. (В ответ на комментарий №14) > Не надо ничего вешать на ядро — проблема как раз в том, что mbmon лезет в порты > мимо ядра. Тогда будет самое правильное убрать его из репозитория, как минимум из P6, как потенциально опасное, не поддерживаемое и некорректно работающее с низкоуровневым API. (In reply to comment #7) > Как минимум уже один раз система повисла при фоновой работе этой программки, > после часа работы. А это у тебя железо стреляться вполне может. IPMI BMC тоже так умеет... (В ответ на комментарий №16) > (In reply to comment #7) > > Как минимум уже один раз система повисла при фоновой работе этой программки, > > после часа работы. > А это у тебя железо стреляться вполне может. IPMI BMC тоже так умеет... В смысле? Я на этом своём железе уже чётко и неоднократно заметил закономерность. Только mbmon работает часов 5 - жди зависаний с теме-же симптомами. При этом без mbmon и с lm_sensors машина работает сутками. И вот недавно, не запуская специально mbmon, я был удивлён получив характерное зависание. Как оказалось была несколько сломана инсталляция libsensors и моя программа автоматически начала использовать mbmon, а результат не стал долго себя ждать. Можно конечно попробовать и на другой машине. Возможно mbmon совсем можно не удалять, а достаточно будет установить конфликт с libsensors. В ближайшее время попробую погонять тест mbmon при полном отсутствии libsensors. |