여러 호스트 응용 프로그램에서 실행되는 플러그인을 개발 중이며 boost :: thread 라이브러리 버전 1.53.0을 사용하여 자체 스레드를 유지 관리합니다.부스트 스레드에서 pthread_getspecific을 호출 할 때 액세스가 잘못되었습니다.
Mac에서 특정 응용 프로그램에서 플러그인을 실행하면 boost::condition_variable::timed_wait()
을 호출 할 때 null 액세스 오류가 발생합니다. 호출 스택 맨 위에 부스트 스레드 라이브러리 내부에서 호출되는 pthread_getspecific()
에 대한 호출이 있습니다.
timed_wait()
을 boost::this_thread_sleep()
으로 바꾸면 동일한 동작 : pthread_getspecific()
을 내부적으로 호출하면 예외가 throw됩니다.
이 응용 프로그램은 이러한 종류의 동작을 나타내는 유일한 응용 프로그램입니다. 다른 호스트에서 플러그인을 실행하면 예상대로 작동합니다.
필자는 pthreads에 대한 많은 경험이 없지만 호스트 응용 프로그램에서 설정 한 일부 속성 때문에 예외가 발생해야한다고 생각합니다. 여기에 무슨 일이 일어나고 있는지 더 잘 알고있는 사람이 있습니까?
감사합니다.
나는이 대답을 다음과 같은 의미로 사용했습니다 : https://svn.boost.org/trac/boost/ticket/5752 – fionbio