Доброго времени суток и с новым годом, коллеги!Есть у нас в офисе небольшой сервер на CentOS 5.4 и крутится (вернее крутилась) на нем некая корпоративная софтина-обработчик, исходников которой у нас нет и не было. Периодически эта софтина перезапускалась по определенным событиям, загружала и обновляла небольшую базу mysql.
И вот, перезапустившись первый раз в новом году, она при запуске выдала ошибку сегментирования. Восстановление бинарников, конфигов и базы на момент последнего работоспособного запуска ни к чему не привели. Полез в gdb, в нем софтина запускается и функционирует как надо. Может быть, я чего-то не понимаю в механике работы отладчика и системы? Почему так происходит и не удается отловить ошибку отладчиком? Что можно еще сделать?
p.s. сервер доступен только для внутренней сети, вероятность взлома системы ничтожно мала.
p.p.s. система, любые компоненты и библиотеки не обновлялись уже достаточно долго, главным образом для исключения подобных ситуаций.
Переведите время назад. Попробуйте. Возможно что-то с лицензиями.
> Переведите время назад. Попробуйте. Возможно что-то с лицензиями.Спасибо за ответ. Переставил системную дату на 01 декабря 11 года. Увы, никакой разницы...
> загружала и обновляла небольшую базу mysql.может дело в данных в базе? софтина не обрабатывает какое нить значение и валится. без исходников можно попробовать по трейсить какие запросы шлются и ответы
>> загружала и обновляла небольшую базу mysql.
> может дело в данных в базе? софтина не обрабатывает какое нить значение
> и валится. без исходников можно попробовать по трейсить какие запросы шлются
> и ответыВ том-то и дело, что со старым бекапом базы тоже не работает. Но через gdb все работает, без дополнительных ухищрений. Ума не приложу, почему?
> работоспособного запуска ни к чему не привели. Полез в gdb, в
> нем софтина запускается и функционирует как надо. Может быть, я чего-то
> не понимаю в механике работы отладчика и системы? Почему так происходит
> и не удается отловить ошибку отладчиком? Что можно еще сделать?Ничего не сделаешь - софтина где-то хватает память и читает, ещё не записав. Отладчик обнуляет память перед выделением, так что ублюдочное поделие натыкается на ноль и его переклинивает в правильную сторону.
Можешь попробовать пускать через strace - можешь увидеть, на каком вызове дохнет. Потом нужно будет ответить на главный вопрос программиста - "что ты будешь делать с результатом?"
> p.p.s. система, любые компоненты и библиотеки не обновлялись уже достаточно долго,
> главным образом для исключения подобных ситуаций.При загрузке память как-то по-другому легла. Начались глюки.
В своё время натыкался на такую же проблему, в конце концов поправил скрипт в init.d, чтобы пускать эту срань под отладчиком - типа штатный режим. Заказчику сказал, чтобы принёс той травы, которую курили пейсатели, тогда можно попробовать пофиксить, как положено. Заказчик грустно посмотрел в спичечный коробок и принял управленческое решение - "хусым".
> Ничего не сделаешь - софтина где-то хватает память и читает, ещё не
> записав. Отладчик обнуляет память перед выделением, так что ублюдочное поделие натыкается
> на ноль и его переклинивает в правильную сторону.
> Можешь попробовать пускать через strace - можешь увидеть, на каком вызове дохнет.
> Потом нужно будет ответить на главный вопрос программиста - "что ты
> будешь делать с результатом?"Спасибо, сегодня попробуем.