Для получения триального ключа
заполните форму ниже
Team License (базовая версия)
Enterprise License (расширенная версия)
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

** На сайте установлена reCAPTCHA и применяются
Политика конфиденциальности и Условия использования Google.
Запросите информацию о ценах
Новая лицензия
Продление лицензии
--Выберите валюту--
USD
EUR
GBP
RUB
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

** На сайте установлена reCAPTCHA и применяются
Политика конфиденциальности и Условия использования Google.
Для получения лицензии для вашего открытого
проекта заполните, пожалуйста, эту форму
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

** На сайте установлена reCAPTCHA и применяются
Политика конфиденциальности и Условия использования Google.
Для получения лицензии для вашего открытого
проекта заполните, пожалуйста, эту форму
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

** На сайте установлена reCAPTCHA и применяются
Политика конфиденциальности и Условия использования Google.
Мне интересно попробовать плагин на:
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

** На сайте установлена reCAPTCHA и применяются
Политика конфиденциальности и Условия использования Google.
Ваше сообщение отправлено.

Мы ответим вам на


Если вы так и не получили ответ, пожалуйста, проверьте папку
Spam/Junk и нажмите на письме кнопку "Не спам".
Так Вы не пропустите ответы от нашей команды.

>
>
После подключения бесперебойника програ…

После подключения бесперебойника программа больше не работает

29 Авг 2013

После публикации статьи "Заземлённые указатели", к ней было сделано немало комментариев. В том числе было отмечено, что различные устройства часто поставляются с поразительно некачественным вспомогательным программным обеспечением. Иногда это весьма раздражает. Впрочем, я не собираюсь брюзжать. Я хочу рассказать забавную историю на эту тему.

Я был ещё студентом и работал программистом в одной организации. Основное направление деятельности - численное моделирование. Программы - это пакеты для расчета всякого разного, а также визуализаторы полученных данных.

Теперь сама история. Я сижу и спокойно программирую. Ко мне подходит коллега-физик из соседней комнаты. При этом у него странное выражение лица и подозрительная нездоровая улыбка. Он делает серьезное лицо и заявляет: "Мне наша замечательная программа "ABCD" предлагает обратиться к разработчику, и вот, я здесь".

В общем, мне всё сразу понятно. Если программа падает, то она выдаёт сообщение в духе "Просим связаться с разработчиком". Поскольку одним из разработчиков "ABCD" являлся я, то он и пришёл по мою душу. Но откуда эта странная улыбка, и почему не просто баг в багтрекере... Впрочем, я особенно не задумываюсь на эту тему и иду с ним.

Картина классическая. Программа с окошком о падении. Эка невидаль. Только не подумайте, что программа падает каждые 5 минут. Но сильно удивляться такой ситуации тоже смысл нет. Спрашиваю - "Что делал?".

Он расплывается в улыбке и между нами происходит следующий диалог:

- Я новый ИБП (блок бесперебойного питания подключил). Теперь больше программа не запускается. Сразу после запуска падает.

- Гм. А что ещё делал?

- Ничего.

- Ха-ха. Ну да, конечно... До подключения ИБП значит работала, а после нет.

Коллега расплывается в ещё больше улыбке: "Именно! Гляди, сейчас буду показывать фокус".

Он выключает компьютер. Лезет за стол. Ковыряется там. Меняет кабель идущий от ИБП на провод идущий просто от розетки. Включает компьютер. Запускает нашу программу. Она успешно работает.

Выключает компьютер. Вновь лезет под стол. Подключает провод от ИБП. Включает компьютер. Улыбаясь дальше некуда, запускает программу. Программа падает сразу после старта!

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

Конечно, потом всё прояснилось. Про это будет ниже. И причина такого поведения покажется банальной.

Однако именно в тот момент, я засомневался, что понимаю принципы работы компьютера и базовых физических законов. Шутка, про искривления бит в проводе, в тот момент казалась мне не такой уж и шуткой.

Пожалуй, это было одно из самых сильных впечатлений, которые я получил от компьютера. Даже не знаю с чем сравнить. Близкие чувства я испытал, когда экспериментируя с Апогей БК01 открыл, что им можно управлять, просто поднося руку. Достаточно читать и обрабатывать шум из неподключенных ни к чему портов ввода вывода (как правильно их называть не помню).

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

А оказалось всё просто. Это не было волшебным пониженным питанием от бракованного ИБП. Это были не искривлённые биты.

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

К компьютеру не только был подключен ИБП. Вместе с ним шел диск с программным обеспечением и USB-проводок для подключения этого бесперебойника к компьютеру. Программа на диске позволяла делать всякое разное. Например, можно было щелкнуть на её иконку в Systray и посмотреть заряд аккумулятора. Важно, что эту программу он тоже установил. Просто так.

А последствия оказались фатальными. Эта чудо-программка, болтающаяся в Systray отправляла в нокаут не только нашу программу, но как выяснилось чуть позднее и многие другие приложения. Как она умудрялось это делать? Ха, говнокодеры способны и не на такое!

Изыскания причины поломки выявили, что перестала работать подсистема OpenGL. Но неужели наша программа так особенно использует OpenGL? Нет. Сломались и другие OpenGL программы. Например, перестал работать Quake. Или другая какая-то "стрелялка". Не помню уже. Да, да, иногда после работы мы убивали друг друга в виртуальном мире. Студенты.

Эта Г-программка для ИБП, для того чтобы нарисовать красивую круглую диаграмму о проценте заряда, зачем-то использовала OpenGL. Причем делала эта бесцеремонно. После запуска, она сразу сжирала все OpenGL ресурсы. В результате, OpenGL использовала только эта программа мониторинга, оставив другим кукиш. И не важно, смотрел ты на её красивую картинку или нет. Все ресурсы были уже исчерпаны. Что именно она делала, забылось за давностью лет. А общий смысл таков. Она бесконечно создавала какие-то OpenGL объекты и не освобождала их. Моментально, такие объекты кончались, но программе было всё равно. Сама она работала нормально. Но другие программы уже не могли создать ни одного такого объекта. Вместо дескрипторов они получали статус ошибки.

Если ИБП выключить, но оставляли USB проводок и программу, то ошибка исчезала. Наверное, программа видела, что бесперебойника нет и работала как-то иначе. Именно это и демонстрировал мне мой коллега, колебля моё ощущение реальности мира.

Результатом стала более точная диагностика таких ошибок в нашей программе и отказ от "чуда-юда" для визуализации состояния ИБП.

Вот такое программное обеспечение, порой поставляется в придачу к устройству.

Популярные статьи по теме
Бесплатный PVS-Studio для тех, кто развивает открытые проекты

Дата: 22 Дек 2018

Автор: Андрей Карпов

В канун празднования нового 2019 года команда PVS-Studio решила сделать приятный подарок всем контрибьюторам open-source проектов, хостящихся на GitHub, GitLab или Bitbucket. Им предоставляется возмо…
Статический анализ как часть процесса разработки Unreal Engine

Дата: 27 Июн 2017

Автор: Андрей Карпов

Проект Unreal Engine развивается - добавляется новый код и изменятся уже написанный. Неизбежное следствие развития проекта - появление в коде новых ошибок, которые желательно выявлять как можно раньш…
Как и почему статические анализаторы борются с ложными срабатываниями

Дата: 20 Мар 2017

Автор: Андрей Карпов

В своей предыдущей статье я писал, что мне не нравится подход, при котором статические анализаторы кода оцениваются с помощью синтетических тестов. В статье приводился пример, воспринимаемый анализат…
PVS-Studio ROI

Дата: 30 Янв 2019

Автор: Андрей Карпов

Время от времени нам задают вопрос, какую пользу в денежном эквиваленте получит компания от использования анализатора PVS-Studio. Мы решили оформить ответ в виде статьи и привести таблицы, которые по…
Зло живёт в функциях сравнения

Дата: 19 Май 2017

Автор: Андрей Карпов

Возможно, читатели помнят мою статью под названием "Эффект последней строки". В ней идёт речь о замеченной мной закономерности: ошибка чаще всего допускается в последней строке однотипных блоков текс…
Главный вопрос программирования, рефакторинга и всего такого

Дата: 14 Апр 2016

Автор: Андрей Карпов

Вы угадали, ответ - "42". Здесь приводится 42 рекомендации по программированию, которые помогут избежать множества ошибок, сэкономить время и нервы. Автором рекомендаций выступает Андрей Карпов - тех…
PVS-Studio для Java

Дата: 17 Янв 2019

Автор: Андрей Карпов

В седьмой версии статического анализатора PVS-Studio мы добавили поддержку языка Java. Пришло время немного рассказать, как мы начинали делать поддержку языка Java, что у нас получилось и какие дальн…
Любите статический анализ кода!

Дата: 16 Окт 2017

Автор: Андрей Карпов

Я в шоке от возможностей статического анализа кода, хотя сам участвую в разработке инструмента PVS-Studio. На днях я был искренне удивлён тому, что анализатор оказался умнее и внимательнее меня.
Характеристики анализатора PVS-Studio на примере EFL Core Libraries, 10-15% ложных срабатываний

Дата: 31 Июл 2017

Автор: Андрей Карпов

После большой статьи про проверку операционной системы Tizen мне было задано много вопросов о проценте ложных срабатываний и о плотности ошибок (сколько ошибок PVS-Studio выявляет на 1000 строк кода)…
Технологии, используемые в анализаторе кода PVS-Studio для поиска ошибок и потенциальных уязвимостей

Дата: 21 Ноя 2018

Автор: Андрей Карпов

Краткое описание технологий, используемых в инструменте PVS-Studio, которые позволяют эффективно обнаруживать большое количество паттернов ошибок и потенциальных уязвимостей. Статья описывает реализа…

Комментарии (0)

Следующие комментарии

На сайте установлена reCAPTCHA и применяются
Политика конфиденциальности и Условия использования Google.
Этот сайт использует куки и другие технологии, чтобы предоставить вам более персонализированный опыт. Продолжая просмотр страниц нашего веб-сайта, вы принимаете условия использования этих файлов. Если вы не хотите, чтобы ваши данные обрабатывались, пожалуйста, покиньте данный сайт. Подробнее →
Принять