Jul. 6th, 2011

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 не повернувся. Просто виконую деякі їх побажання за домовленістю.

Profile

madf: (Default)
madf

April 2018

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

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 9th, 2025 11:06 pm
Powered by Dreamwidth Studios