metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2014-11-19 06:06 pm

Везет как QA

Либа nanomsg, кто-то тут в комментариях мне ее посоветовал.
http://comments.gmane.org/gmane.comp.lib.nanomsg/1277
Убил целый день, только ради того, чтобы тесты запустились и сфейлились корректно на машине, на которой рабочий порт этой либы занят чем-то, например другим инстансом проги.

Эти программисты нетрадиционной ориентации зовут на каждый мыслимый и немыслимый чих abort(), вместо того чтобы вернуть код ошибки, а этот abort() на винде вызывает диалоговое окно вида "всему копец, продолжаем, отлаживаем или игнорируем". В консольных приложениях из автотестов, да. Причем cmake ctest на винде игнорирует stderr, соответственно, чтобы найти причину ошибки - мне пришлось сначала перекопать это угребище windbg, а затем добавить OutputDebugString в виндовый билд.

Если у меня от занятости сокетов или там от того, что черви сгрызли сетевой стек, прога будет ебаться с abort() - идите вы нахер с такими либами.

[identity profile] metaclass.livejournal.com 2014-11-20 07:37 am (UTC)(link)
Убирать ассерты из релиза, чтобы потом никто никогда не смог понять, почему софт по разному работает на столе и у заказчика?

[identity profile] maxdz.livejournal.com 2014-11-20 11:06 am (UTC)(link)
Ассерты из релиза убираются, по умолчанию. Нужно поковырять код ручками, чтобы их в релизе оставить.

А код будет работать одинаково (в рамках известных ограничений дебаггера - например, умолчательной инициализации всех переменных, чего не делается в релизе) - если какой-нибудь народный умелец не запихнул в ассерты части исполняемого кода.