2013-08-19 45 views
1

我正在开发一个插件,该插件在几个主机应用程序中运行,并使用boost :: thread库(版本1.53.0)维护其自己的线程。在升级线程中调用pthread_getspecific时访问错误

当在Mac上的特定应用程序中运行插件时,调用boost::condition_variable::timed_wait()时出现空访问错误。在调用堆栈的顶部是一个调用pthread_getspecific(),它是从boost线程库中调用的。

如果我用boost::this_thread_sleep()的调用替换timed_wait(),则会在内部调用pthread_getspecific()时引发相同的行为:引发异常。

此应用程序是唯一展现此类行为的应用程序;如果我在其他主机上运行插件,则按预期工作。

我对pthreads没有多少经验,但我认为这个异常必须是由主机应用程序设置的一些属性引起的。有没有人对这里可能发生的事情有更好的了解?

谢谢!

回答

0

事实证明,pthread API会在我的应用程序中调用其中不是线程安全的应用程序,在我单独调用它们时导致空指针崩溃。

+0

我已将此答案表示为:https://svn.boost.org/trac/boost/ticket/5752 – fionbio