Роботы приходят к нам на помощь

Мы недавно обнаружили, что Bercut-ET при странных обстоятельствах зависает.

Прошерстив добрую половину кода, стало понятно, что багу нам так просто не найти. Мы убили кучу времени только на то, чтобы воспроизвести ошибку.

В итоге Евгений Горлов написал робота под кодовым названием «Crazy User». Этот робот имитирует нажатие кнопок в псевдослучайном порядке. Причём делает он это очень быстро, успевая «нажимать» около 100 кнопок в секунду.  Через некоторое время прибор не выдерживает такой хаотической нагрузки и зависает.

Что же в этом полезного? А то, что последовательность нажатия кнопок псевдослучайна! Это значит, что зависание можно воспроизвести точно, поскольку последовательность всегда инициализируется одним числом и кнопки нажимаются всегда в строго определенной последовательности.

Сейчас гоняем «Crazy User’a», а о результатах — позже ;)

3 комментария

  1. Александр Кузовлев:

    Чтобы иметь возможность проанализировать результат необходимо где-то сохранять последнее значение генератора ПСП при котором операция прошла успешно без зависаний. Но этого мало, т к нужно еще и повторить ту последовательность действий, а она может быть очень длинна, к примеру, несколько часов псевдослучайного перебора. Можно, впрочем, сохранять и все настройки на каждом шаге, но…
    Я полагаю, что какой-либо анализ от Crazy User получить проблематично. Разве что тест — зависнет/ не зависнет.

  2. Евгений Горлов:

    Crazy User нашел багу, которую обычный пользователь никогда бы не нашел. Ну кому придет в голову настроить все интерфейсы в разные подсети, а затем пытаться tcp-клиентом 50-100 раз подряд открыть соединение с неким хостом… А именно эта ситуация приводила к утечке памяти, где-то по 150 байт на каждую попытку соединения.

    • Антон Фельдман:

      на самом деле, обычному юзеру в голову запросто придёт настроить все интерфейсы на разные сети. другое дело, что сто раз коннектится в никуда ему, конечно же, надоест.