[질문] pthread_exit()시의 에러.
글쓴이: bizzare / 작성시간: 금, 2005/11/04 - 7:24오후
그동안 스레드에 대해 많이 여쭤봤는데요.
이제 마지막 장벽인 것 같습니다.
IBM에서 pthread 를 이용하여 외부 라이브러리의 함수를 하나 호출하고 있습니다.
그런데, 함수 호출이 다 끝나고, pthread_exit(~~);를 호출할 때 프로그램이 종료됩니다.
하지만 pthread를 사용하지 않고 직접 외부 라이브러리의 함수를 호출할 때는 아무 문제없이 잘 돌아가고요.
보통 이런 경우는 어떤 문제일까요?
어떤 부분을 살펴봐야 할 지 너무 막연하네요.
대충, 뭔가 라이브러리 내에서 메모리 할당한 것에 대한 해제가 적절치 못한 것은 아닌지 의심하고 있긴 한데..
조언 부탁드립니다.
Forums:
글쎄요,.. 위의 글을 읽어 보면 실수하실 분은 아니실 것으로 판단이 되
글쎄요,.. 위의 글을 읽어 보면 실수하실 분은 아니실 것으로 판단이 되는뎅...( 점집 차릴까나?)
pthread_exit()의 인수 부분(예를 들어서 (void*)NULL등등..)을 사용하시고 pthread_join()의 두번째 인수에서 받고자 노력할 때(예를 들면 (void**)status등등..) 말씀하신 비슷한 현상이 있긴 하졈..
-----[꼬릿말 절취선 시작]-----
삽질전에 먼저 구글신께 기도하자.
-----[꼬릿말 절취선 끝]-----
Re: [질문] pthread_exit()시의 에러.
그런 경우는 일반적으로 그 호출한 함수가 다중 스레드 환경에서
제대로 작동하지 못하는 경우일 가능성이 많습니다.
아니면 개발자가 잘 못 코딩한 것일 수도 있구요...
Orion Project : http://orionids.org
해결했습니다. 아주 어이없는 에러였습니다.
스레드를 만들기 전에 라이브러리를 로드해 놓고서
그 라이브러리를 스레드 내에서 Free하는 코드가 있더군요.
이 부분을 수정하니 잘 해결됩니다. :-)
^^;;;
그러나 다른 플랫폼들에서는 문제없이 돌아갔으니. 크크크. ^^
어렵습니다. 정말.
정말 깨끗하고 멋진 프로그램을 짜고 싶습니다.
Re: 해결했습니다. 아주 어이없는 에러였습니다.
어이 없는 오류가 아니라, 매우 중요한 실수입니다.
저도 그 오류를 겪은 적이 있습니다. 모듈이 동적 로드되고 어떤
이벤트가 발생하면 (예를 들어 윈도우를 닫는) 스스로 제거되게
하는 경우, 제거 되는 중 실행해야 할 코드 세그먼트를 잃어버리기
때문에 발생하는 오류였지요.
저는 리스트에 garbage 를 쌓아 놓고 메인 쓰레드에서
쌓여있는 garbage 를 제거하도록 해결했었습니다.
Orion Project : http://orionids.org
댓글 달기