я сегодня запостил 2 багрепорта в багзиллу dbusа и даже почти изготовил патчи. но когда стал раскапывать дальше, чтоб убедиться что патчи потокобезопасны, оказалось что нужно еще один багрепорт писать.
однако, моего уровня знания английского не хватает чтоб описать суть проблемы. я не знаю, как по-английски будет «гребаные бородатые ламеры, я хочу чтоб вы сдохли и больше не писали своих глюкодромов». и вообще как правильно написать им, что у них руки из жопы растут?
у них один глобальный мутекс(т.е. они уже говнокодеры) и он снимается когда надо освободить некие данные пользователя. вместо того чтоб складировать их с список и освободить оптом на выходе, эти товарищи сбрасывают блокировку везде где только могут. в итоге весь код состоит из вермишели функций, которые не трогают мутекс, отпускают его, или берут.
в итоге даже каллбек нельзя поставить потокобезопасно. в принципе, потому что вызок каллбэка не подперт мутексом.
да млъ у них вся багзилла состоит из слов sigsegv и crash. это решето в багзилле кстати сплошь sigsegv и crash
а чего стоит код вида:
CONNECTION_LOCK(pending->conn);
...
if(!foo())return FALSE;
...
CONNECTION_UNLOCK(pending->conn);
внутренний голос подсказывает мне, что это надо переписать. однако моих сил не хватит на переписывание dbusозависимых приложений с нуля. кого бы попросить помочь с тестированием в ближайшие 1-2 месяца?
от этого проекта, между прочим, зависит фаервол типа «agnitum outpost» с блокировкой по процессам. потому что решето фаерволом быть не может.