плохой доступ при вызове pthread_getspecific в потоке повышения

Я разрабатываю подключаемый модуль, который работает в нескольких хост-приложениях и поддерживает собственные потоки с использованием библиотеки boost::thread версии 1.53.0.

При запуске моего подключаемого модуля в определенном приложении на Mac я получаю нулевую ошибку доступа при вызове boost::condition_variable::timed_wait(). В верхней части стека вызовов находится вызов pthread_getspecific(), который вызывается из библиотеки потоков Boost.

Если я заменю timed_wait() вызовом boost::this_thread_sleep(), то же самое поведение: исключение выдается, когда pthread_getspecific() вызывается внутри.

Это единственное приложение, которое демонстрирует такое поведение; если я запускаю свой плагин на других хостах, он работает, как и ожидалось.

У меня нет большого опыта работы с pthreads, но я думаю, что исключение должно быть вызвано некоторыми свойствами, установленными хост-приложением. У кого-нибудь есть лучшее представление о том, что здесь может происходить?

Спасибо!


person elSnape    schedule 19.08.2013    source источник


Ответы (1)


Оказывается, API-интерфейс pthread вызывает в моем приложении небезопасные потоки, вызывая сбои нулевого указателя всякий раз, когда я вызываю их в отдельном потоке.

person elSnape    schedule 29.08.2013