2013-08-19 9 views
1

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

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

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

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

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

Спасибо!

ответ

0

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

+0

Я принял этот ответ: https://svn.boost.org/trac/boost/ticket/5752 – fionbio