madf: (Default)
Є у мене одна софтинка, написана для GTS, якою я пишаюсь. CMake, Boost, ключі і конфігураційний файл, плагіни, дуже ідіоматично написана, близько до мого ідеалу. . І у ній знайшлась дуже тупа бага. В залежності від типу зборки вона або взагалі не падала, або падала з таким повідомленням:
nfa: /usr/include/boost/thread/pthread/mutex.hpp:50: void boost::mutex::lock(): Assertion `!pthread_mutex_lock(&m)' failed.

або з таким:
nfa: pthread_mutex_lock.c:312: __pthread_mutex_lock_full: Assertion `(-(e)) != 3 || !robust' failed.

При чому падала тільки у production, локально усе було нормально. А проблема виявилась у неправильному порядку слідування членів класу плагіну. thread ініціалізувався і запускався раніше ніж ініціалізувався mutex. І у production він встигав спробувати цей mutex захопити.
Дивно інше: як так вийшло що я не проганяв перед релізом софтинку через valgrind?

PS: ні, я у GTS не повернувся. Просто виконую деякі їх побажання за домовленістю.
madf: (Default)
Півтора дні боротьби з CMake, MinGW і libiconv - і ось результат:

CMake

Dec. 1st, 2009 05:07 pm
madf: (Default)
Якщо, раптом, хтось стикнеться з проблемою створення RPM з використанням CPack приблизно такого характеру:
CPack: Create package using RPM
CPack: Install projects
CPack: - Run preinstall target for: qia
CPack: - Install project: qia
CPack: Compress package
CPack: Finalize package
CPack Error: Problem copying the package: /home/faust/Projects/IAQt/build/_CPack_Packages/i386/RPM/qia-1.3.1-i386.rpm to /home/faust/Projects/IAQt/build/qia-1.3.1-i386.rpm
CPack Error: Error when generating package: qia

- знайте, вона викликана самим CMake. А точніше тем що він не дуже коректно працює з rpmbuild-4.6+
Але є обхідний шлях. Скачати патчену версію CPackRPM.cmake і покласти її у /usr/share/cmake/Modules.

Взагалі, хоча CMake і не silver bullet, але вміє так багато що просто дух захоплює. Все зроблено дуже зручно і дуже в тему. Навіть те що він не може зробити (наприклад, генерацію qm-файлів і підкладання їх rcc для створення embedded-ресурсів Qt) - можна реалізувати "руками".
Дуже-дуже-дуже зручна штука. Рекомендую всім!

Profile

madf: (Default)
madf

April 2018

S M T W T F S
1234567
891011121314
15161718192021
22232425262728
2930     

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 7th, 2026 12:51 am
Powered by Dreamwidth Studios